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

Turbo Pascal Discussion :

[TPW][Débutant] Trim, Ord et UpperCase


Sujet :

Turbo Pascal

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Par défaut [TPW][Débutant] Trim, Ord et UpperCase
    Bonjour, voici mon code. trois erreurs s'affichent à la compilation :

    1. Unknow identifier pour la ligne Trim(...)
    2. Ordinal expression expected pour la ligne Ord(...)
    3. Unknow identifier pour la ligne UpperCase(...).

    Par Trim(...), je voudrais supprimer les espaces de début et de fin de la chaîne entrée.
    Par Ord(...) , je voudrais obtenir le code Ascii de la première lettre de la chaîne entrée.
    Par UpperCase(...) , je voudrais mettre la première lettre de l'entrée en majuscule.

    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
    16
    17
     
     
    var
    entree : string;
    capitale : string;
    ascii : integer;
     
    begin
     
    ...
    readln(entree);
    entree := trim(entree);
    capitale := copy(entree,1,1);
    ascii := ord(capitale);
    if ascii > 96 then
            capitale := UpperCase(capitale);
    ...
    Je ne vois pas du tout ce qui ne convient pas. Merci de votre coup de pouce.

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Il faut avant tout savoir que les procedure upcase, ord sont predefinies. Elles prennent en argument un caractere et non une chaine de caracteres.
    si tu veux mettre le premier caractere en majiscule tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    capitale[1] := UpCase(capitale[1]);
    Pour obtenir le code ascii du premier caractere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ascii := ord(capitale[1]);
    je ne sais pas si trim est predefinie. Mais si elle ne l' est pas, il faut la definir avant de l' utiliser.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Par défaut
    Merci beaucoup, c'est parfait pour UpCase et Ord. Par contre pour Trim j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var
    entree : string[80];
     
    begin
    entree := trim(entree[80]);
    Mais J'obtiens encore l'erreur Unknown identifier.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Gio,

    Je ne crois pas que Trim existe dans TPW, ni prédéfinie, ni dans l'unité Strings (je n'ai pas TPW sous la main pour vérifier, mais tu peux le faire rapidement dans l'aide).

    Il te faut donc l'écrire, ou la trouver toute faite quelque part.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Par défaut
    Bonjour,
    Je vous remercie de votre information. Je lutte avec Trim depuis plusieurs heures... Je débute en TP et je m'étonne de la complication de ce langage. Il y a toujours une subtilité qu'uncun bouquin n'explique ou signale. Trim ne fonctionne pas, pas plus que TrimRigth, TrimLeft, UpperCase, LowerCase ... pourtant fonctions censées appartenir à TP...

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hie,
    Citation Envoyé par dimi2 Voir le message
    Bonjour,
    Je vous remercie de votre information. Je lutte avec Trim depuis plusieurs heures... Je débute en TP et je m'étonne de la complication de ce langage. Il y a toujours une subtilité qu'uncun bouquin n'explique ou signale. Trim ne fonctionne pas, pas plus que TrimRigth, TrimLeft, UpperCase, LowerCase ... pourtant fonctions censées appartenir à TP...
    Certaines fonctions que tu cites n'existent pas dans TPW, vérifie dans l'aide si ce que tu veux utiliser existe.
    (Dans TPW, il suffit d'écrire le nom de la fonction que tu veux utiliser dans le code, positionner le point d'insertion sur ce mot, et faire Ctrl F1 pour vérifier)

    Pascal n'est pas plus compliqué que tous les langages du même type, mais il ne faut pas chercher à utiliser des fonctions qui n'existent pas.
    Il n'y a pas là de subtilité, ça existe ou pas.
    - Si ça existe, il faut utiliser les bons paramètres pour l'appel, l'aide est là pour savoir ce qu'il faut.
    - Sinon, il faut se débrouiller pour écrire une fonction qui produit le résultat voulu, ou en trouver une quelque part.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Par défaut
    Je conçois bien qu'il n'est pas utile de lutter pour utiliser des fonctions qui n'existent pas. Je reste surpris par le fait que des fonctions basiques n'existent pas. Je suis surpris par le fait que TP ne possède pas le minimum de fonctions traitant les chaînes de caractères. Le vieux basic les possédait déjà dès l'aube de l'informatique. Mais, comme vous dites, il faut me faire une raison.

  8. #8
    Responsable Pascal, Lazarus et Assembleur


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

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 055
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Ces fonctions sont fort simples à programmer :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Function LTrim (s : String) : String;
    (* Suppression des espaces en début de chaîne *)
    Var Result : String;
    Begin
      Result := s;
      while (Length(Result) > 0) and (Result[1] = ' ') do
        Delete(Result,1,1);
      LTrim := Result;
    End;
     
    Function RTrim (s : String) : String;
    (* Suppression des espaces en fin de chaîne *)
    Var Result : String;
    Begin
      Result := s;
      while (Length(Result) > 0) and (Result[Length(Result)] = ' ') do
        Delete(Result,Length(Result),1);
      RTrim := Result;
    End;
     
    Function Trim (s : String) : String;
    (* Suppression des espaces en début et en fin de chaîne *)
    Var Result : String;
    Begin
      Result := s;
      Trim := RTrim(LTrim(Result));
    End;
    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]

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Par défaut
    Grand merci pour ces codes qui vous paraissent fort simples. Pour moi ils sont savants. Je les note précieusement.
    Voici ce que j'avais créé. Le code fonctionne. Qu'en pensez-vous ?:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
        longueur := length(entree);
        capitale := copy(entree,1,1);
        asciiCap := ord(capitale[1]);
     
        {--------- suppression des espaces de tête de l'entrée ----------}
     
        while asciiCap = 32 do
        begin
        longueur := longueur - 1;
        reste := copy(entree,2,longueur);
        entree := reste;
        capitale := copy(entree,1,1);
        asciiCap := ord(capitale[1]);
        end;
     
        longueur := length(entree);
        finale := copy(entree,longueur,1);
        asciiFin := ord(finale[1]);
        debut := copy(entree,1,longueur);
     
     
        {----------- suppression des espaces de queue de l'entrée ------------}
     
        while asciiFin = 32 do
        begin
        longueur := longueur - 1;
        debut := copy(entree,1,longueur);
        entree := debut;
        longueur := length(entree);
        finale := copy(entree,longueur,1);
        asciiFin := ord(finale[1]);
        end;

  10. #10
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Mau,
    Citation Envoyé par dimi2 Voir le message
    Grand merci pour ces codes qui vous paraissent fort simples. Pour moi ils sont savants. Je les note précieusement.
    Voici ce que j'avais créé. Le code fonctionne. Qu'en pensez-vous ?:
    Tu peux facilement accélérer ta fonction :

    - Commencer par supprimer les espaces à la fin de la chaîne.

    Pour cela, compter combien il y en a, puis on peut se contenter de mettre à jour la longueur de la chaîne (s'il y en a au moins 1), pas besoin de passer par Copy

    - Puis supprimer ceux au début.

    Idem, compter combien il y en a, puis appeler Copy une seule fois s'il y en a au moins 1

    (On commence par supprimer à la fin, car on évite ainsi la recopie d'une partie de la chaîne qu'on supprimera de toute manière).

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Par défaut
    Merci pour toutes ces idées.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TPW][Débutant] Mise en minuscules
    Par dimi2 dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 08/04/2008, 20h36
  2. [TPW][Débutant] else (erreur à la compilation)
    Par dimi2 dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 05/04/2008, 16h11
  3. [TPW][Débutant] Retour chariot dans variable string
    Par dimi2 dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 03/04/2008, 20h22
  4. [TPW][Débutant] Case avec instructions multiples
    Par dimi2 dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 30/03/2008, 21h18
  5. [TPW][Débutant] Ligne trop longue
    Par dimi2 dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 30/03/2008, 19h59

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