Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1058 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [Delphi] Conversion string > tstrings?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Delphi] Conversion string > tstrings?

n°738512
Ipso
Posté le 25-05-2004 à 20:41:40  profilanswer
 

Bonsoir,
 
J'essaie de faire une fonction qui convertit une string en TStrings, les éléments à insérer dans TStrings étant séparés par des ; dans string.
 
Voilà ce que j'ai fait:

Code :
  1. function strtotstr(str: string): TStrings;
  2. var
  3.    tstr: TStrings;
  4. begin
  5.    tstr := tstr.Create;
  6.  
  7.    while (gauche(';', str) <> '') do
  8.    begin
  9.       tstr.Add(gauche(';', str));
  10.       str := droite(';', str);
  11.    end;
  12.    result := tstr;
  13.    tstr.Free;
  14. end;


gauche et droite servent à extraire les sous-chaines délimitées par le ;
 
Quelqu'un peut me dire pourquoi ça ne marche pas? Je suis pas assez doué pour voir mon erreur là...
 
Merci :)


Message édité par Ipso le 25-05-2004 à 20:42:07
mood
Publicité
Posté le 25-05-2004 à 20:41:40  profilanswer
 

n°738751
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-05-2004 à 23:47:02  profilanswer
 

Ça irait plus vite de dire où il n'y a pas d'erreur :whistle:
 
Version propre "vite faite" (pour la découple on pourrait faire mieux, mais c'est pas simple, et avant que cette solution ne pose des problèmes on a le temps de voir venir) :
 

Code :
  1. function strtotstr(const str: string): TStringList;
  2. var
  3.   tstr: TStringList;
  4. begin
  5.   tstr := TStringList.Create; 
  6.   tstr.Text := StringReplace(str, ';', sLineBreak, [rfReplaceAll]); 
  7.   Result := tstr;
  8. end;


 
Tu ne peux pas libérer le TStrings sinon tu retournes un pointeur ne valant plus rien de concret.
C'est l'appelant qui doit le libérer.
Pour cette raison, en général l'appelant crée le TStrings et le passe en paramètre à une procédure (pas de valeur de retour donc).
Pour créer un objet, on appelle le Create de sa classe, pas de l'objet lui-même vu qu'il n'existe pas encore !
On ne crée jamais de TStrings. C'est juste une classe générique (par ex pour le type de paramètre passé à la procédure/fonction) de laquelle dérivent TStringList et autres similaires.
Ta version marcherait peut-être pour la découpe, mais j'ai pas le courage de réfléchir. À la limite après avoir corrigé le Create et le Free tu peux la tester.
Quand tu dis que ça ne marche pas, tu aurais pu dire que ça crashait avec une Access Violation (je suppose). "Ça marche pas" ce n'est pas une erreur acceptable :p


Message édité par antp le 25-05-2004 à 23:48:35

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°740682
Ipso
Posté le 26-05-2004 à 20:28:05  profilanswer
 

Oui, dsl, je sais que c'était un peu vague, mais Delphi me sortait directement la fenêtre de débogage, j'étais un peu perdu... Encore une fois, je m'en suis sorti avec tes indications, merci :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [Delphi] Conversion string > tstrings?

 

Sujets relatifs
problème de conversion d'un hexadécimal en binaire ![Java] Problème pour convertir un string en entier [resolu]
String -> booleanConversion CString en char* ?
(je débute delphi) bouton avec index.Conversion dun projet VBA -> VB.Net ou VB
problem conversion char* -> string sous visual .netarreter une requete SQL dans Delphi
[asm] conversion chaine numerique flottante en base 10 
Plus de sujets relatifs à : [Delphi] Conversion string > tstrings?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR