cs_99999
Messages postés11Date d'inscriptiondimanche 9 mars 2003StatutMembreDernière intervention23 avril 2006
-
22 avril 2006 à 22:08
cs_99999
Messages postés11Date d'inscriptiondimanche 9 mars 2003StatutMembreDernière intervention23 avril 2006
-
23 avril 2006 à 18:24
bonjour ,
j'utilise une fonction pour sauvegarder un stringgrid dans un fichier mais en fait cette fonction me met un separateur "," entre chaque champs et moi je voudrait le remplacer par une tabulation.
quel parametre puis-je mettre a la place de "commatext" pour obtenir une tabulation plutot qu'une virgule ?
je vous met la fonction ci-dessous , si quelqu'un a une idee je suis prenneur .
merci d'avance.
{------------------------------------------------------------------------------}
{ Fonction de sauvegarde du fichier }
{------------------------------------------------------------------------------}
function SaveToCSV:Boolean;
const
SeparTab = Chr(9);
var
SD : TSaveDialog;
I : Integer;
CSV : TStrings;
FileName : String;
begin
Try
If Form1.SaveDialog1.Execute = True Then
Begin
FileName := Form1.SaveDialog1.FileName;
If Copy(FileName,Pos('.',FileName),Length(FileName)-Pos('.',FileName)+1) <> '.ini' Then FileName := FileName + '.csv';
Screen.Cursor := crHourGlass;
CSV := TStringList.Create;
Try
For I := 0 To Form1.StringGrid1.RowCount - 1 Do CSV.Add(Form1.StringGrid1.Rows[I].Commatext);
CSV.SaveToFile(FileName);
Result := True;
Finally
CSV.Free;
End;
End;
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 23 avril 2006 à 16:07
En gros, cela donne :
CSV := TStringList.Create;
Try
For I : = 0 To Form1.StringGrid1.RowCount - 1 Do Begin Form1.StringGrid1.Rows[I].Delimiter := #9;
CSV.Add(Form1.StringGrid1.Rows[I].DelimitedText
);
End;
CSV.SaveToFile(FileName);
Result := True;
Finally
CSV.Free;
End;
End;
<hr size ="2" width="100%">Et là ça marche.
NB: si tu as déjà une tabulation dans la ligne (par ex, si CSV[3] := 'Hello' + #9 + 'World'), la propriété DelimitedText t'entourerra cette chaîne par des guillemets ou tout autre caractère défini dans QuoteChar.
@ ++
Si tu ne te plantes pas ......
tu ne pousseras jamais
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 23 avril 2006 à 17:54
@ jfs59: C'est sur qu'avec une petie phrase, il aurait bien mieux compris...
@ 99999: Si tu veux séparer uniquement par une tabulation, c'est à toi d'écrire une fonction de sortie.
Tiens, je suis généreux aujourd'hui (a cause des vacances ?!)
function ExtractWithTabs(S: TStrings): string;
const SPACE: array[Boolean] of string[1] = (#9, '');
var I: Integer;
begin Result := EmptyStr;
for I : = 0 to S.Count - 1 do Result :Result + S[I] + SPACE[I S.Count - 1];
end ;
<hr size ="2" width="100%">Et voila !!
Tu remplaces donc
Form1.StringGrid1.Rows[I].Delimiter := #9;
CSV.Add(Form1.StringGrid1.Rows[I].DelimitedText
);
par :
CSV.Add(ExtractWithTabs(Form1.StringGrid1.Rows[I]));
NB: Un détail: nomme tes composants, ça t'aidera pour plus tard je t'assure.
Si tu ne te plantes pas ......
tu ne pousseras jamais
cs_99999
Messages postés11Date d'inscriptiondimanche 9 mars 2003StatutMembreDernière intervention23 avril 2006 23 avril 2006 à 16:48
merci florenth ça marche .
Par contre il va falloir que je trouve comment declarer le QuoteChar comme tu m'explique dans ton NB car je ne veux pas des guillements qui entoure les tabulations.
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 23 avril 2006 à 17:02
Tu peux mettre autre chose que des guillemets entre tes chaînes en spécifiant QuoteChar mais tu ne peux pas mettre #0 (c-à-d rien).
Si tu veux uniquement séparer tes chaînes par une tabulation, il faut que tu définisse toi même ta méthode.
Mais puisque c'est pour y enregistrer dans un fichier, c'est pas bien important, non ?
cs_99999
Messages postés11Date d'inscriptiondimanche 9 mars 2003StatutMembreDernière intervention23 avril 2006 23 avril 2006 à 17:35
c'est genant si je ne peux pas mettre la valeur rien...car en faite c'est important ;
ce fichier est relu apres dans un autre logiciel et il faut que les champs soit separer que par des tabulations .
certaines valeurs de champs sur les lignes sont entre guillemets et doivent le rester mais le faite que des guillemets soit rajouter sur mes champs vides me pose probleme.
cs_99999
Messages postés11Date d'inscriptiondimanche 9 mars 2003StatutMembreDernière intervention23 avril 2006 23 avril 2006 à 17:40
j'oubliais ,
pour ouvrir mon fichier j'utilisele code source de cette page et il gere a l'ouverture les tabulations ou autre separateur mais mon niveau de programmation ne m'a pas permit d'exploiter correctement ce qui existe deja , c'est pourquoi j'utilise une autre fonction pour sauvegarder qui a mon avis n'est pas adapter a ce que je veux...
cs_99999
Messages postés11Date d'inscriptiondimanche 9 mars 2003StatutMembreDernière intervention23 avril 2006 23 avril 2006 à 18:24
merci encore une fois florenth , c'est nickel maintenant , je n'y serais pas arriver sans toi .
je vous remercie grandement de votre aide.
bonne fin de week end a vous.