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

Langage Delphi Discussion :

la fonction Format


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut la fonction Format
    Bonjour tous le monde

    je veux savoir qu'es ce qu'on peut mettre comme paramètre dans la fonction Format ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    InfoType:=Format('\StringFileInfo\%0.4x%0.4x\FileVersion'#0,
                             [LoWord(LongInt(LangPtr^)), HiWord(LongInt(LangPtr^))]);
    et il sert à quoi le #0 qui vient après la chaine de caractère ?

    j'ai trouvé un tuto qui explique un peu mais je veux plus d'explication, pour que ma grammaire marche avec tous les cas

    Cordialement

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut


    Citation Envoyé par mima_mine Voir le message
    il sert à quoi le #0 qui vient après la chaine de caractère ?
    A rien !

  3. #3
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    un message qui cite l'un de mes tutos ... je me dois de répondre :

    déja voici le liens vers le nouveau tuto, corrigé depuis :
    http://deefaze.developpez.com/

    ensuite :

    #0 correspond à une chaine à zero terminal (chaine AZT).

    il ne sert effectivement à rien puisque le type String de Delphi est AZT par défaut.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  4. #4
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut
    alors pourquoi on l'ajoute après la chaine ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {tu sais ma question c'étatit pas sur la fonction format, mais quand j'ai vu  le #0 après la chaine j'ai cru que c'est spécial à cette fonction }
    donc le compilateur l'accepte ? mais ma grammaire n'a pas accepter cette syntaxe, normalement si on veut ecrire un truck apres une chaine on doit rajouter un '+' de concaténation

    j'ai trouvé même le cas de #13#10 ou d'autre valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    LibTiffDelphiVersionString = 'LibTiffDelphi 3.7.0.00'#13#10'Pre-compiled LibTiff for Delphi'#13#10'http://www.awaresystems.be/'#13#10;
    sans le '+' me signale aussi une erreur, alors que les cas que j'ai vu sur le net, on ajoute toujours un '+' pour concaténer la chaine

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Le + est utilisé pour concaténer des chaines, la syntaxe utilisé est-celle pour les caractères spéciaux, le + n'est pas nécessaire, en tout cas cela fonctionne depuis fort longtemps pour ce que je sais, je l'ai utilisé en D3 !

    Sinon quel Delphi ? Avant ou Après 2009 ? Est-ce un problème unicode ?
    La Gestion du Tiff existe en D2010
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    cette syntaxe fonctionne sur n'importe quel delphi de D2 à D2010,

    Edit :

    aprés test, impossible de reproduire l'erreur sur D2009.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  7. #7
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Sinon quel Delphi ? Avant ou Après 2009 ? Est-ce un problème unicode ?
    La Gestion du Tiff existe en D2010
    je developpe un parseur Delphi, donc faut qu'il marche avec tous les versions Delphi
    et comme cette partie n'existe pas dans ma grammaire, je voulais savoir es-ce que c'est juste pour pouvoir l'ajouter

    Merci pour votre aide

  8. #8
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    oui c'est juste, aprés, libre à toi de supporter ou non certaines syntaxes propre à Delphi.
    en fait, si tu ecris un parseur Pascal, tu dois surtout en premier lieu supporte complétement le Pascal.

    Delphi et FPC sont basé sur Pascal mais en aucun cas ne sont LE pascal.

    en gros tu as :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PASCAL BASE
     +-> PASCAL OBJET
     +-> TURBO PASCAL BY BORLAND 
        +-> PASCAL OBJECT DELPHI BY BORLAND
          +-> PASCAL OBJECT DELPHI BY CODEGEAR/EMBARCADERO
          +-> PASCAL OBJECT BY FPC
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  9. #9
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut
    oui je fais un parseur Delphi, ,j'ai déja trouvé une grammaire Pascal, et je la complète avec les testes, donc a chaque fois je trouve une nouvelle syntaxe je dois dabord comprendre son sens puis l'ajouter

    Merci pour votre aide

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Bravo !
    L'air et la manière de mal posée une Question !
    Je n'avais pas titlé sur "ma Grammaire" !

    Si tu avais commencé par :

    Je développe un Parseur Delphi, que veut dire la syntaxe suivante, en particulier le #0 sans concaténation avec +

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'Chaine := \StringFileInfo\%0.4x%0.4x\FileVersion'#0;
    Tu commences sur Format et on part à des kilomètres, avant de te lancer dans un parseur, faudrait que tu maîtrise la syntaxe de base, car là c'est vraiement de l'ultra basique, ensuite la fonction Format c'est pas la plus rigolote ! Après tu passeras surement à la fonction Write, tu verras c'est encore plus rigolo, ça doit être l'une des rares fonctions à paramètres variables ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  11. #11
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Bravo !
    L'air et la manière de mal posée une Question !
    Oops désolé c'est ma façon de poser la question t'a énervé !!
    parce que j'ai trouvé des syntaxes j'ai jamais vu (sachant que j'ai développé déja avec Delphi), donc quand j'ai vu la chaine avec le #0 et a l'intérieur de la fonction Format, j'ai cru que c'est spéciale a cette fonction

    en plus n'oublie pas que ce n'est pas facile de développer un parser qui marche avec toutes les versions, donc je dois au min tester 5000 code Delphi de différente version et à chaque fois je trouve une nouvelle syntaxe je dois savoir ou je dois l'ajouter exactement

  12. #12
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    shay à raison,

    format supporte déja des paramêtres de tout type grace à sont "array of const"
    (ça aussi tu dois le supporter)

    write, read ou encore les fonctions avec arguments non typés, sont bien plus "marrant".

    et quand tu arrivera aux surcharge d'opérateurs ce sera encore plus marrant.
    puisqu'il existe deux syntaxe :
    celle de FPC et celle de Delphi.

    exemple FPC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    operator + (A: integer; B: TObject): TObject;
    operator := (A: TPoint; B: TRect): TRect;
    règle : doit trouver un opérateur valide aprés le mots clef "operator"

    exemple Delphi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    type
      [identifiant] = [record/class()]
      public
        class operator Add(A: integer; B: TObject): TObject; 
        class operator Implicit(A: TPoint; B: TRect): TRect;
      end;
    régle : doit trouver un opérateur "nommé" supporté aprés la combinaison de mots clef "class" et "operator" dans un contexte de type Record ou Class.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  13. #13
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut
    pas grave pour la surcharge parce que j'ai déja vu ça dans C++

    merci pour votre aide,

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

Discussions similaires

  1. Fonction Format() en SQL
    Par tomo0013 dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 16/02/2007, 17h36
  2. [VBA E] fonction format Horaire
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 15/06/2006, 21h18
  3. Réponses: 5
    Dernier message: 13/02/2006, 13h59
  4. Fonction "Format" sous SQL
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 08/10/2004, 09h07
  5. fonction format
    Par billoum dans le forum ASP
    Réponses: 9
    Dernier message: 16/04/2004, 15h43

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