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 :

Stream vers un Array of String


Sujet :

Langage Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 069
    Points : 41 034
    Points
    41 034
    Billets dans le blog
    62
    Par défaut Stream vers un Array of String
    Bonjour
    Comment traiter ce contenu de stream (<bh:00> remplace 00)
    DATEC=20230914121613<bh:00>FORMAT=tif<bh:00>FILENAME=F2022-6045.tif<bh:00>FTDATEM=20230116091534<bh:00>FTDATEA=20230914121602<bh:00>FTDATEC=20230116083700<bh:00>
    je pensais mettre ceci dans un Array of String, mais la manipulation entre le stream et sa destination m'échappe
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour
    Comment traiter ce contenu de stream (<bh:00> remplace 00)

    je pensais mettre ceci dans un Array of String, mais la manipulation entre le stream et sa destination m'échappe
    je n'ai pas compris ton "(<bh:00> remplace 00)"...c'est une série de PChar ?

    ton stream c'est quel type de stream ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 069
    Points : 41 034
    Points
    41 034
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    c'est un TFileStream et le <bh:00> est là pour indiquer qu'il s'agit d'un octet de valeur 00
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 474
    Points : 24 931
    Points
    24 931
    Par défaut
    Tu peux le voir comme un array de chaine à zéro terminal

    Sinon, il faut lire le fichier en buffer
    Regarde ReadLineRaw c'est la même chose en CRLF mais avec un 0x00 ça fonctionne aussi ce type d'algo, c'est juste une lecture binaire bufferisé (le ReadLn standard de Delphi fait pareil)

    pour résumer
    - Position du début de la chaine
    - Position du séparateur
    - Extraction entre les deux
    - Position du début de la chaine devient la position du séparateur + longueur du séparateur

    Cela boucle jusqu'au dernier Zéro
    A chaque boucle, faut gérer en plus la possibilité que la chaine souhaitée soit à cheval sur deux buffers ou sur plus encore (là faut relire généralement la section complète)
    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

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 069
    Points : 41 034
    Points
    41 034
    Billets dans le blog
    62
    Par défaut
    J'ai fait une analyse caractère par caractère qui fonctionne

    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
    procedure getinfos(const FileName : String; const M : Tmemo);
    var FS : TFileStream;
        Pos, long : Integer;
        S : String;
        B : TArray<Byte>;
        C : Char;
    begin
      M.Lines.Clear;
      if (not FileExists(FileName)) then exit;
      pos :=GetSize(FileName); // pour obtenir la position de début des infos (6 infos de type xxxxxx=xxxxxxx)
      FS := TFileStream.create(FileName, fmOpenRead or fmShareDenyWrite);
      FS.Position:=pos;
      long:=FS.Size-pos; // infos de taille variable, situées à la fin du fichier  
      SetLength(B,long);
      FS.Read(B,Long);
      S:=EmptyStr;
      for var i := low(b) to high(b) do
       begin
         if (B[i]=0)
          then begin
           if not S.IsEmpty then m.Lines.Add(S);
           S:=EmptyStr;
          end
          else S:=S+Char(B[i]);
       end;
      FS.Free;
    end;
    mais je me demande s'il n'y a pas plus simple
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 474
    Points : 24 931
    Points
    24 931
    Par défaut
    Plus simple, surement avec un fichier minuscule
    Chargement du fichier entier dans un RawByteString puis conversion vers String et recherche via System.Classes.ExtractStrings (non le 0x00 ça ne lui plaira pas)
    Le zéro comme séparateur, il faut tout de même se méfier de fonction à base de PChar qui pourrait ne pas comprendre que c'est un séparateur

    Regarde ExplodeLazy cela fait la même chose, idem, petit fichier chargé en entier
    J'avais écrit les versions binaires de ExplodeLazy et SearchString pour lire les fichiers DUMP, si je le retrouve ... d'ailleurs à peu de chose près, la découpe de plusieurs buffer consécutif reçu par Socket, cela y ressemble beaucoup

    Plus rapide mais moins lisible, certains aussi
    Mémoriser les positions c'est plus rapide qu'un concat en boucle mais FastMM te sauve en perf à ce sujet.
    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

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 474
    Points : 24 931
    Points
    24 931
    Par défaut
    Je te propose ce genre de code réutilisable

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    procedure SetDelimitedText(const Value: string; AStrings: TStrings; const Delimiter: Char);
    var
      P, PEnd, P1: PChar;
      S: string;
    begin
      AStrings.BeginUpdate;
      try
        AStrings.Clear;
        P := PChar(Value);
        PEnd := PChar(NativeUInt(P) + Length(Value) * SizeOf(Char));
     
        while P < PEnd do
        begin
          P1 := P;
          while (P^ <> Delimiter) do
            Inc(P);
          SetString(S, P1, P - P1);
     
          AStrings.Add(S);
          Inc(P);
        end;
      finally
        AStrings.EndUpdate;
      end;
    end;
     
    const
      DATA: RawByteString =
          'HEADER'
        + 'DATEC=20230914121613'#0
        + 'FORMAT=tif'#0
        + 'FILENAME=F2022-6045.tif'#0
        + 'FTDATEM=20230116091534'#0
        + 'FTDATEA=20230914121602'#0
        + 'FTDATEC=20230116083700'#0;
     
    procedure TForm1.Button3Click(Sender: TObject);
    var
      S: TStringList;
      B: TBytes;
      Len: Integer;
    begin  
       // construction du fichier tel que je l'ai compris
      SetLength(B, Length(DATA));
      Move(DATA[1], B[0], Length(DATA));
      with TFileStream.Create('test.dat', fmCreate) do
      try
        Write(B, Length(B));
      finally
        Free();
      end;
     
     
      SetLength(B, 0);
     
     
      // Ici le vrai code
      with TFileStream.Create('test.dat', fmOpenRead or fmShareDenyWrite) do
      try
        Len := Size - Length('HEADER');
        SetLength(B, Len);
        Seek(Length('HEADER'), soBeginning);
        Read(B, Len);
      finally
        Free();
      end;
     
      SetDelimitedText(TEncoding.ANSI.GetString(B), Memo1.Lines, #0);
    end;
    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

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 474
    Points : 24 931
    Points
    24 931
    Par défaut
    Et sa version binaire ( décodage ANSI après découpe )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      SetDelimitedTextFromBytes(B, Memo1.Lines, 0);
    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
    procedure SetDelimitedTextFromBytes(const Value: TBytes; AStrings: TStrings; const Delimiter: Byte);
    var
      P, PEnd, P1: PAnsiChar;
      S: AnsiString;
    begin
      AStrings.BeginUpdate;
      try
        AStrings.Clear;
        P := PAnsiChar(Value);
        PEnd := PAnsiChar(NativeUInt(P) + Length(Value));
     
        while P < PEnd do
        begin
          P1 := P;
          while (P^ <> AnsiChar(Delimiter)) do
            Inc(P);
          SetString(S, P1, P - P1);
     
          AStrings.Add(String(S));
          Inc(P);
        end;
      finally
        AStrings.EndUpdate;
      end;
    end;
    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

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 717
    Points : 13 194
    Points
    13 194
    Par défaut
    Et pourquoi pas juste Split ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const Text = 'DATEC=20230914121613'#0'FORMAT=tif'#0'FILENAME=F2022-6045.tif'#0'FTDATEM=20230116091534'#0'FTDATEA=20230914121602'#0'FTDATEC=20230116083700'#0;
    const List = Text.Split([#0]);
     
    Memo1.Lines.AddStrings(List);

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 474
    Points : 24 931
    Points
    24 931
    Par défaut
    Split existe et fonctionne en D10 Seattle, on n'y pense pas au StringHelper
    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
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 069
    Points : 41 034
    Points
    41 034
    Billets dans le blog
    62
    Par défaut
    Oui, Split pour un string, j'y avais pensé. Le hic, c'est qu'il ne s'agit pas d'un string, mais d'une partie d'un fichier.dat.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    j'aime bien la solution de Shai, même si je l'aurais écrite un peu différemment

    sans avoir testé, ça donnerait ceci :

    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
     
    procedure SetDelimitedTextFromBytes(const Value: TBytes; AStrings: TStrings; const Delimiter: Byte);
    var
      P, PEnd, P1: PAnsiChar;
      S: AnsiString;
    begin
      AStrings.BeginUpdate;
      try
        AStrings.Clear;
        P := PAnsiChar(Value);
        PEnd := @P[Length(Value) - 1];
     
        while P < PEnd do
        begin
          S := AnsiString(P);
          AStrings.Add(String(S));
          Inc(P, Length(S) + 1); 
        end;
      finally
        AStrings.EndUpdate;
      end;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  13. #13
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 474
    Points : 24 931
    Points
    24 931
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Oui, Split pour un string, j'y avais pensé. Le hic, c'est qu'il ne s'agit pas d'un string, mais d'une partie d'un fichier.dat.
    Grossièrement en imaginant un fichier avec HEADER au début voir le code de création du fichier ici, ce code inclu SetDelimitedText avec au préalable un décodage du binaire supposé ANSI en UNICODE puis découpe comme le ferait Split

    Alors que SetDelimitedTextFromBytes utilise le binaire, découpe chaque chaine ANSI et converti en UNICODE une par une.


    AnsiString n'a pas de Helper semble-t-il

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      with TFileStream.Create('test.dat', fmOpenRead or fmShareDenyWrite) do
      try
        Len := Size - Length('HEADER');
        SetLength(B, Len);
        Seek(Length('HEADER'), soBeginning);
        Read(B, Len);
      finally
        Free();
      end;
     
      //SetDelimitedTextFromBytes(B, Memo1.Lines, 0);
     
      Memo1.Lines.AddStrings(TEncoding.ANSI.GetString(B).Split([#0]));
    end;
    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

  14. #14
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 069
    Points : 41 034
    Points
    41 034
    Billets dans le blog
    62
    Par défaut
    Merci, voilà ce que je cherchais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memo1.Lines.AddStrings(TEncoding.ANSI.GetString(B).Split([#0]));
    Encore plus simple que ce que j'avais pu coder aujourd'hui en passant par un TStringStream
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. Convertir un cell array en string
    Par Sensib dans le forum MATLAB
    Réponses: 3
    Dernier message: 09/11/2006, 13h12
  2. [D6] Conversion Array of String en String
    Par wizdom dans le forum Delphi
    Réponses: 2
    Dernier message: 23/05/2006, 17h01
  3. [FreePascal] Array of string
    Par w0lf dans le forum Free Pascal
    Réponses: 3
    Dernier message: 21/01/2006, 18h46
  4. [gtkmm] Convertir un ustring vers un array
    Par alejandro dans le forum GTK+
    Réponses: 2
    Dernier message: 17/05/2005, 13h43
  5. TStringList en array of string
    Par JediKerian dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2003, 15h37

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