IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Free Pascal Discussion :

Suppression des espaces dans une chaîne


Sujet :

Free Pascal

  1. #41
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Citation Envoyé par droggo
    Hi,

    Et tu penses que ça se fait instantanément ?

    Essaye avec des chaines de 10000, ou 100000, ou plus, caractères. Ça va vite, mais ce n'est pas du tout la même chose que simplement lire la valeur d'un entier.
    Certes ca ne se fait pas instantanément, mais je pense qu'il faudrait être inconscient pour stocker des chaînes de caractères de 10000 caractères, et plus. C'est, à mon avis, conceptuellement problématique.

    Quant aux PChars, elles font partie du langage, car introduites pour accéder aux API Windows. Elles ne sont pas dans le standard de base des années 70, mais tout évolue
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  2. #42
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hoï,
    Citation Envoyé par wormful_sickfoot
    Certes ca ne se fait pas instantanément, mais je pense qu'il faudrait être inconscient pour stocker des chaînes de caractères de 10000 caractères, et plus. C'est, à mon avis, conceptuellement problématique.

    Quant aux PChars, elles font partie du langage, car introduites pour accéder aux API Windows. Elles ne sont pas dans le standard de base des années 70, mais tout évolue
    Je suis tout à fait d'accord, mais c'est une question de principe.

    Quoi qu'il en soit, il est clair que les chaines "zéro terminal" ne sont pas utilisées telles quelles en Pascal. Je ne me souviens pas avoir vu de compilateur gérant cela en allant chercher le 0 terminal pour connaître la longueur d'une chaîne, comme le C le fait systématiquement, par exemple.
    Le 0 final ne sert qu'à éviter de devoir le mettre pour utiliser la chaîne avec les API, pas à calculer la longueur.
    Mais bien que connaissant assez bien le Pascal, je ne prétends pas connaître tous les compilateurs existants ou ayant existé
    Si les cons volaient, il ferait nuit à midi.

  3. #43
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 938
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par droggo
    Quoi qu'il en soit, il est clair que les chaines "zéro terminal" ne sont pas utilisées telles quelles en Pascal. Je ne me souviens pas avoir vu de compilateur gérant cela en allant chercher le 0 terminal pour connaître la longueur d'une chaîne, comme le C le fait systématiquement, par exemple.
    Le 0 final ne sert qu'à éviter de devoir le mettre pour utiliser la chaîne avec les API, pas à calculer la longueur.
    Manifestement, vous n'avez jamais programmé sous Windows avec TPW ou BPW (pChar et tableaux de caractères).

    Citation Envoyé par droggo
    Mais bien que connaissant assez bien le Pascal, je ne prétends pas connaître tous les compilateurs existants ou ayant existé
    C'est bien de le reconnaître.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #44
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hi,
    Citation Envoyé par Alcatîz
    Manifestement, vous n'avez jamais programmé sous Windows avec TPW ou BPW (pChar et tableaux de caractères).
    Un PChar n'est pas une chaine de caractères, de même un tableau de caractères.

    Je n'ai jamais programmé en Pascal que pendant plus de 15 ans, quasiment à plein temps (le reste, c'était en assembleur, pour pallier les manques du Pascal, en possiblilités ou pour la vitesse d'exécution).
    La programmation Windows en faisait évidemment partie.

    Tout en ayant cessé l'utilisation systématique de Pascal, j'ai suivi de loin l'évolution, je sais donc bien comment tout cela fonctionne (je n'ai pas dit "je suis le seul à savoir...).

    A propos du zéro terminal, je ne connais pas de compilateur qui donne un résultat différent de celui que je montre pour le programme suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ...
    var
      s : string;
      { ou ansiString, ou autre, si disponible,
         tant qu'il s'agit de chaine,
         pas de pchar ou autre truc qui ne serait
         pas une chaine au sens Pascal }
     
      i : integer;
    begin
      s := '';
      for i:=1 to 30 do s := s + chr(0);
      writeln ('length(s) = ', length(s));
    end.
    résultat : length(s) = 30.

    Parmi les types "à zéro terminal", une chaine ne contenant que des zéros, de longueur 30, ça me fait rire, et montre bien que ce n'est pas le zéro final qui sert à calculer la longueur.

    En fait, le zéro a toujours fait partie des caractères valides dans une chaine Pascal, justement parce que la longueur effective de la chaine est stockée dans un emplacement réservé, et qu'on n'a donc pas besoin de marqueur interne, comme l'exige le C par exemple.
    Evidemment, il ne faut pas s'amuser à en mettre dans une chaine qui sera transtypée en PChar pour un appel API (ou tout autre appel demandant effectivement une vraie chaine à zéro terminal).
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. [WebI XiR2] Suppression d'un espace dans une chaîne de caractères
    Par SGA99 dans le forum Débuter
    Réponses: 6
    Dernier message: 02/12/2010, 17h12
  2. suppression des espaces d'une chaîne de caractère
    Par tubaas dans le forum MATLAB
    Réponses: 6
    Dernier message: 18/03/2010, 20h19
  3. Réponses: 1
    Dernier message: 16/06/2009, 17h32
  4. Suppression des espaces ds une chaîne
    Par petitnuage dans le forum Langage
    Réponses: 2
    Dernier message: 04/06/2006, 15h59
  5. Suppression d'espaces dans une chaîne
    Par dafalri dans le forum Langage
    Réponses: 11
    Dernier message: 20/02/2006, 13h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo