Comment enregistrer les lignes d'un stringgrid dans un fichier avec une extensio

Résolu
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007 - 3 août 2005 à 16:22
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 4 août 2005 à 09:31
salut a tous je cherche comment enregistrer ( et aussi ouvrir) les lignes d'un stringgrid dans un fichier avec une extension que je veut creer exprès pour mon programme,merci.

bye.

4 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
4 août 2005 à 09:31
Voir code source de Nono40 : ENREGISTRER ET RELIRE UN TSTRINGGRID AVEC UN FICHIER .INI

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
3
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 2
3 août 2005 à 17:46
Il te suffit de creer un TFileStream, d'inscrite le nombre de lignes
ainsi que le nombre de colonnes et d'écrire dedans. L'extension n'est
pas importante: tu peux mettre ce que tu veux.

Ici, j'utilise un TSaveDialog mais ce n'est pas obligé.

procedure TForm1.BtnSaveClick(Sender: TObject);

var

X, Y, L: Integer;

Fs: TFileStream;

begin

{ Execution de la boite de dialogue.

C'est une TSaveDialog dont la propriété DefaultExt contient l'extension voulue. }

if not SD.Execute then

Exit;



{ Création du'un flux fichier. }

Fs : = TFileStream.Create(SD.FileName,fmCreate);

try

{ Ecriture de la taille du StringGrid (ici, il s'appelle sg). }

Fs.WriteBuffer(sg.ColCount,SizeOf(Integer));

Fs.WriteBuffer(sg.RowCount,SizeOf(Integer));



{ Boucle pour enregistrer toutes les chaines. }

for X := 0 to sg.ColCount -1 do

for Y : = 0 to sg.RowCount -1 do

begin

{ Récupération de la talle de la chaine. }

L := Length(sg.Cells[X,Y]);

{ Ecriture de la taille de la chaine. }

Fs.WriteBuffer(L,SizeOf(Integer));

{ Puis écriture de la chaine elle-même. }

Fs.WriteBuffer(sg.Cells[X,Y][1],L);

end ;



finally

{ Libération du flux. }

Fs.Free;

end; // try.

end;

<hr size ="2" width="100%">Rien de plus simple.

Si ca te convient, je te mettrai la procédure de relecture.



@ ++

Florent



Si tu ne te plantes pas ......
tu ne poussera jamais
0
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
3 août 2005 à 18:21
salut
en essayant ton code il me met les erreurs suivantes
que faire? merci de ton aide!
++
0
adec0127 Messages postés 53 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 22 février 2008
3 août 2005 à 21:03
quel tipe de erreurs explication?
0
Rejoignez-nous