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 :

Delphi2009 option {$H-}


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    frTRYER
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : frTRYER

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut Delphi2009 option {$H-}
    Bonjour,
    j'ai un problème avec Delphi2009.
    Pour faire un portage en Delphi2009 d'un logiciel écrit en Delphi7 j'ai utilisé l'option {$H-} dans mon projet pour de définir les mots clefs string comme étant des shortstring.

    Cependant cette option n'a pas l'air de fonctionner !
    En delphi7 je ne pouvais pas déclarer de shortstring de plus de 255 caractères (ce qui est normal) mais en delphi2009 je n'ai pas cette limitation.

    De plus avec Delphi7: sizeof(s[1])=1
    mais avec Delphi2009: sizeof(s[1])=2
    (avec s:string)

    ce qui me fait penser que l'option {$H-} n'est pas prise en compte.
    Une idée du problème ?

    merci

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Ce n'est pas la différence Unicode/AnsiChar?
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Nouveau membre du Club
    Profil pro
    frTRYER
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : frTRYER

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    pour résumer

    avec Delphi7:
    string = AnsiString avec {$H+}
    string = ShortString avec {$H-}
    char = AnsiChar

    avec Delphi2009:
    string = UnicodeString avec {$H+}
    string = ShortString avec {$H-} -> ne fonctionne pas chez moi
    char = WideChar

  4. #4
    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
    relis l'aide delphi 2009 pour les directive $H, $V, $X.

    en delphi :

    String = UnicodeString (WideString)
    Char = UnicodeChar (WideChar)
    PChar = PUnicodeChar (PWideChar)


    pour revenir au mode Ansi il faut utiliser les types PAnsiChar, AnsiString et AnsiChar au lieu des String, Char et PChar.

    on peu egalement utiliser une compilation conditionnelle grace à {$IFDEF UNICODE}.
    [ 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!

  5. #5
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    D'après cette discussion, H ne s'applique qu'aux chaines Ansi. Or en Delphi 2009 ce sont des chaînes Unicode.

    https://forums.codegear.com/thread.j...start=0#117207
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  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
    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
    type
      lpStr = {$IFDEF UNICODE} PAnsiString {$ELSE} PString{$ENDIF};
      lStr = {$IFDEF UNICODE} AnsiString {$ELSE} String {$ENDIF};
      lpChar = {$IFDEF UNICODE} PAnsiChar {$ELSE} PChar {$ENDIF};
      lChar = {$IFDEF UNICODE} AnsiChar {$ELSE} Char {$ENDIF};
     
    function Truc(const S: lStr): lStr;
      // S = "hello world" -> result = "h e l l o  w o r l d"
    var pR : lpChar;
      N : integer;
      L : integer;
    begin
      L := Length(S);
      SetLength(result, L*2 - 2);
      pR := lpChar(result);
     
      for N := 1 to L-1 do
      begin
        pR[0] := S[N];
        pR[1] := #20;
        inc(pR, 2);
      end;
      pR[0] := S[L];
    end;
    [ 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
    Nouveau membre du Club
    Profil pro
    frTRYER
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : frTRYER

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    comme l'option {$H} ne semble pas faire ce que je souhaite j'ai résolu mon problème en remplaçant les 3000 mots clés "string" par "shortstring" dans mon projet ... maintenant je dois tester tout ça ...
    merci

Discussions similaires

  1. [JVM][OPTIONS][OPTIMISATION]pc dédié à Java
    Par narmataru dans le forum Général Java
    Réponses: 7
    Dernier message: 16/04/2003, 17h12
  2. [Kylix] kylix3 : pb sur options de projet
    Par Arsene dans le forum EDI
    Réponses: 3
    Dernier message: 09/04/2003, 10h41
  3. [propriétés]Option Checked
    Par psl dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/08/2002, 08h07
  4. Parametrage des options de projet
    Par ares7 dans le forum EDI
    Réponses: 7
    Dernier message: 22/07/2002, 15h33
  5. Vous gerez comment les options d'un programme?
    Par n0n0 dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/05/2002, 13h21

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