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

Delphi Discussion :

[info] Question sur CR/LF


Sujet :

Delphi

  1. #1
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut [info] Question sur CR/LF
    Salut à tous
    J'ai quelques questions sur CR/LF:
    - c'est #10#13 ou #13#10? Je vois une version différente dans plein de posts...
    - Est-que mettre Chr(vk_Return) renvoie exactement la même chose?
    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    CR = #13
    LF = #10

    que tu fasses l'un ou l'autre, c'est pareil, l'ordre n'a pas d'importance.

    Chr(vk_Return) est particulier, et essentiellement adapté aux compatibilités entre plate-forme. Sous windows, il fait la même chose.

  3. #3
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Je te remercie bien

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par MD Software
    CR = #13
    LF = #10

    que tu fasses l'un ou l'autre, c'est pareil, l'ordre n'a pas d'importance.

    Chr(vk_Return) est particulier, et essentiellement adapté aux compatibilités entre plate-forme. Sous windows, il fait la même chose.
    HEIN ???? Non, ce n'est PAS la même chose !!!
    "CR/LF", c'est #13#10 et PAS LE CONTRAIRE : il existe pas mal de protocoles qui requièrent que les deux caractères soient dans cet ordre, les plus connus sont (au hasard) Telnet, FTP, HTTP, SMTP, etc...

  5. #5
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    En effet, je parlais juste pour afficher du texte à l'écran ou dans une MessageBox.

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Désolé, mais pas plus...

    Une paire LF/CR n'est pas "automatiquement" traduite en CR/LF (seule paire "valide" sur un système DOS/Windows), et suivant le cas, cela peut même provoquer des dysfonctionnements "amusants", notamment lors de la redirection de la console ou pour certains logs de journal.

    CR/LF, ce n'est pas LF/CR.

  7. #7
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Citation Envoyé par Mac LAK
    cela peut même provoquer des dysfonctionnements "amusants", notamment lors de la redirection de la console ou pour certains logs de journal.
    Sérieux ?

    Je savais pas. Alors j'ai rien dit. Je ne me suis jamais retrouvé devant ce problème.

    En tout cas, c'est bon à savoir.

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par MD Software
    Sérieux ?
    Oui : certains programment cherchent activement la combinaison "CR/LF" dans cet ordre et s'en servent comme terminateur de ligne... Comme ils ne trouvent pas, tu te retrouves avec une "ligne" de quelques... mégas. :-( Ou une violation d'accès, suivant l'OS. Dans les deux cas, c'est le crash, et l'erreur est franchement méga chi.... à trouver (c'est du vécu, je sais de quoi je parles).

    Citation Envoyé par MD Software
    Je savais pas. Alors j'ai rien dit. Je ne me suis jamais retrouvé devant ce problème.
    Ben comme les contrôles Delphi effectuent toujours la conversion "correcte" lorsque c'est nécessaire (du moins à ma connaissance), il est rare d'avoir le pépin avec ce langage.
    En C, sous DOS par exemple, c'est une autre paire de manches ! :-D
    Tu peux aussi avoir le pépin avec certains programmes en ligne de commande "alimentés" par un pipe et/ou un fichier texte, je crois que certains makefiles digèrent mal également.

    Citation Envoyé par MD Software
    En tout cas, c'est bon à savoir.
    Là, on est d'accord à 100% !!!

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Vaut encore mieux de déclarer une fois pour toutes une constante unique qui regroupe les deux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    const FinParagraphe = #13#10;

  10. #10
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Cette constante existe déjà dans l'unit System et est définie ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    const
      sLineBreak = {$IFDEF LINUX} #10 {$ENDIF} {$IFDEF MSWINDOWS} #13#10 {$ENDIF};
    [Edit] Il sort d'outre-tombre ce post ! [/edit]
    @+ Claudius

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Il sort effectivement d'outre-tombe mon post.
    Mais merci pour l'info et dommage que cette constante soit nommée "sLineBreak" alors qu'elle agit plutôt comme une fin de paragraphe dans le cas très utilisé des chaines longues.
    Le nom des ancêtres était bien plus clair CR = (Carriage-Return) = Retour chariot et LF = (Line-Feed) = Ligne-Suivante ... hérités du temps des machines à écrire d'IBM, préhistoire de la micro-informatique !

    Bon on va suivre la mode et l'appeler sLineBreak.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/11/2008, 22h07
  2. Réponses: 2
    Dernier message: 15/07/2008, 14h43
  3. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  4. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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