cs_saravana
Messages postés91Date d'inscriptionvendredi 25 mars 2005StatutMembreDernière intervention18 octobre 2007
-
18 déc. 2005 à 19:19
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 2022
-
19 déc. 2005 à 16:19
est-ce que quelqun peut me donner la procédure inverse du code (c'est a dire pour lire a partir du fichier)
procedure TForm1.saveExecute(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 ecriture.Execute then
Exit;
{ Création du'un flux fichier. }
Fs := TFileStream.Create(ecriture.FileName,fmCreate);
try
{ Ecriture de la taille du StringGrid (ici, il s'appelle sg). }
Fs.WriteBuffer(form2.StringGrid1.ColCount,SizeOf(Integer));
Fs.WriteBuffer(form2.StringGrid1.RowCount,SizeOf(Integer));
{ Boucle pour enregistrer toutes les chaines. }
for X := 0 to form2.StringGrid1.ColCount -1 do
for Y := 0 to form2.StringGrid1.RowCount -1 do
begin
{ Récupération de la talle de la chaine. }
L := Length(form2.StringGrid1.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(form2.StringGrid1.Cells[X,Y][1],L);
end;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 18 déc. 2005 à 22:20
Salut
Esaye ceci:
procedure TForm1.Button2Click(Sender: TObject);
var
X, Y, L: Integer;
Fs: TFileStream;
Buff : Array[0..255] of char;
begin
{ Execution de la boite de dialogue.
C'est une TOpenDialog dont la propriété DefaultExt contient l'extension voulue.
Avec FileMustExist à True}
if not Lecture.Execute then
Exit;
{ Création du'un flux fichier. }
Fs := TFileStream.Create(Lecture.FileName,fmOpenRead );
try
{ Lecture de la taille du StringGrid (ici, il s'appelle sg). }
Fs.ReadBuffer(L,SizeOf(Integer));
StringGrid1.ColCount := L;
Fs.ReadBuffer(L,SizeOf(Integer));
StringGrid1.RowCount := L;
{ Boucle pour Lire toutes les chaines. }
for X := 0 to StringGrid1.ColCount -1 do
for Y := 0 to StringGrid1.RowCount-1 do
begin
{ Rempli Buffer avec des #0 }
FillChar(Buff,Length(Buff),#0);
{ Lecture de la taille de la chaine. }
Fs.ReadBuffer(L,SizeOf(Integer));
{ Puis Lecture de la chaine elle-même. }
Fs.ReadBuffer(Buff,L); StringGrid1.Cells[X,Y]:= Buff;
end;
cs_saravana
Messages postés91Date d'inscriptionvendredi 25 mars 2005StatutMembreDernière intervention18 octobre 2007 19 déc. 2005 à 11:37
merci cirec je n'ai eu aucune erreure mais lorsque jenregistre le fichier il me met erreur d'ecriture dans le flux. est-ce que tu pe m'aider stp
merci
bye
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 19 déc. 2005 à 12:42
Je ne sais pas si j'ai bien compris, mais tu dis que quand tu enregistres le fichier (avec ta procédure je suppose ?) il te met une erreur d'écriture dans le flux. Si c'est ça j'avoue que c'est un peut bizarre puisque j'ai moi même testé les deux conjointement et je n'ai eu aucune erreur.
Pourrais-tu être un peut plus précis quand à l'origine de l'erreur (à quel niveau du code elle se produit où à quel instant)
@+
Cirec
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_saravana
Messages postés91Date d'inscriptionvendredi 25 mars 2005StatutMembreDernière intervention18 octobre 2007 19 déc. 2005 à 16:00
voila je vais être plus clair, lors de la compilation il n'y a aucune erreure mais lorsque je veux ouvrir un fichier au début(formcreate) j'ai 'EREADERROR' erreur de lecture dans le flux et quand j'essaie d'enregistrer a la fin (formdestroy) j'ai 'ewriteerror' erreur d'ecriture dans le flux.
voici le source
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
uses
Unit2;
{$R *.dfm}
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Form2.show;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
ligne:integer;
begin
if (form2.StringGrid1.RowCount=1) and (form2.stringgrid1.cells[0,0]='') then
begin
Form2.StringGrid1.Cells[0,0]:=labeledEdit1.Text;
Form2.StringGrid1.Cells[1,0]:=labeledEdit2.text;
Form2.StringGrid1.Cells[2,0]:=labeledEdit3.text;
Form2.StringGrid1.Cells[3,0]:=combobox1.text;
end
else
begin
ligne:=form2.stringgrid1.RowCount-1;
Form2.StringGrid1.Cells[0,ligne]:=labeledEdit1.Text;
Form2.StringGrid1.Cells[1,ligne]:=labeledEdit2.text;
Form2.StringGrid1.Cells[2,ligne]:=labeledEdit3.text;
Form2.StringGrid1.Cells[3,ligne]:=combobox1.text;
Form2.stringgrid1.rowcount:=Form2.stringgrid1.rowcount+1;
form2.sbrefresh(self);
end;
end;
procedure TForm1.FormDestroy(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 ecriture.Execute then
Exit;
{ Création du'un flux fichier. }
Fs := TFileStream.Create(ecriture.FileName,fmCreate);
try
{ Ecriture de la taille du StringGrid (ici, il s'appelle sg). }
Fs.WriteBuffer(form2.StringGrid1.ColCount,SizeOf(Integer));
Fs.WriteBuffer(form2.StringGrid1.RowCount,SizeOf(Integer));
{ Boucle pour enregistrer toutes les chaines. }
for X := 0 to form2.StringGrid1.ColCount -1 do
for Y := 0 to form2.StringGrid1.RowCount -1 do
begin
{ Récupération de la talle de la chaine. }
L := Length(form2.StringGrid1.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(form2.StringGrid1.Cells[X,Y][1],L);
end;
procedure TForm1.loadExecute(Sender: TObject);
var
X, Y, L: Integer;
Fs: TFileStream;
Buff : Array[0..255] of char;
begin
{ Execution de la boite de dialogue.
C'est une TOpenDialog dont la propriété DefaultExt contient l'extension voulue.
Avec FileMustExist à True}
if not Lecture.Execute then
Exit;
{ Création du'un flux fichier. }
Fs := TFileStream.Create(Lecture.FileName,fmOpenRead );
try
{ Lecture de la taille du StringGrid (ici, il s'appelle sg). }
Fs.ReadBuffer(L,SizeOf(Integer));
Form2.StringGrid1.ColCount := L;
Fs.ReadBuffer(L,SizeOf(Integer));
Form2.StringGrid1.RowCount := L;
{ Boucle pour Lire toutes les chaines. }
for X := 0 to Form2.StringGrid1.ColCount -1 do
for Y := 0 to Form2.StringGrid1.RowCount-1 do
begin
{ Rempli Buffer avec des #0 }
FillChar(Buff,Length(Buff),#0);
{ Lecture de la taille de la chaine. }
Fs.ReadBuffer(L,SizeOf(Integer));
{ Puis Lecture de la chaine elle-même. }
Fs.ReadBuffer(Buff,L); Form2.StringGrid1.Cells[X,Y]:= Buff;
end;
cs_saravana
Messages postés91Date d'inscriptionvendredi 25 mars 2005StatutMembreDernière intervention18 octobre 2007 19 déc. 2005 à 16:01
voila je vais être plus clair, lors de la compilation il n'y a aucune erreure mais lorsque je veux ouvrir un fichier au début(formcreate) j'ai 'EREADERROR' erreur de lecture dans le flux et quand j'essaie d'enregistrer a la fin (formdestroy) j'ai 'ewriteerror' erreur d'ecriture dans le flux.
voici le source
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
uses
Unit2;
{$R *.dfm}
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Form2.show;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
ligne:integer;
begin
if (form2.StringGrid1.RowCount=1) and (form2.stringgrid1.cells[0,0]='') then
begin
Form2.StringGrid1.Cells[0,0]:=labeledEdit1.Text;
Form2.StringGrid1.Cells[1,0]:=labeledEdit2.text;
Form2.StringGrid1.Cells[2,0]:=labeledEdit3.text;
Form2.StringGrid1.Cells[3,0]:=combobox1.text;
end
else
begin
ligne:=form2.stringgrid1.RowCount-1;
Form2.StringGrid1.Cells[0,ligne]:=labeledEdit1.Text;
Form2.StringGrid1.Cells[1,ligne]:=labeledEdit2.text;
Form2.StringGrid1.Cells[2,ligne]:=labeledEdit3.text;
Form2.StringGrid1.Cells[3,ligne]:=combobox1.text;
Form2.stringgrid1.rowcount:=Form2.stringgrid1.rowcount+1;
form2.sbrefresh(self);
end;
end;
procedure TForm1.FormDestroy(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 ecriture.Execute then
Exit;
{ Création du'un flux fichier. }
Fs := TFileStream.Create(ecriture.FileName,fmCreate);
try
{ Ecriture de la taille du StringGrid (ici, il s'appelle sg). }
Fs.WriteBuffer(form2.StringGrid1.ColCount,SizeOf(Integer));
Fs.WriteBuffer(form2.StringGrid1.RowCount,SizeOf(Integer));
{ Boucle pour enregistrer toutes les chaines. }
for X := 0 to form2.StringGrid1.ColCount -1 do
for Y := 0 to form2.StringGrid1.RowCount -1 do
begin
{ Récupération de la talle de la chaine. }
L := Length(form2.StringGrid1.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(form2.StringGrid1.Cells[X,Y][1],L);
end;
procedure TForm1.loadExecute(Sender: TObject);
var
X, Y, L: Integer;
Fs: TFileStream;
Buff : Array[0..255] of char;
begin
{ Execution de la boite de dialogue.
C'est une TOpenDialog dont la propriété DefaultExt contient l'extension voulue.
Avec FileMustExist à True}
if not Lecture.Execute then
Exit;
{ Création du'un flux fichier. }
Fs := TFileStream.Create(Lecture.FileName,fmOpenRead );
try
{ Lecture de la taille du StringGrid (ici, il s'appelle sg). }
Fs.ReadBuffer(L,SizeOf(Integer));
Form2.StringGrid1.ColCount := L;
Fs.ReadBuffer(L,SizeOf(Integer));
Form2.StringGrid1.RowCount := L;
{ Boucle pour Lire toutes les chaines. }
for X := 0 to Form2.StringGrid1.ColCount -1 do
for Y := 0 to Form2.StringGrid1.RowCount-1 do
begin
{ Rempli Buffer avec des #0 }
FillChar(Buff,Length(Buff),#0);
{ Lecture de la taille de la chaine. }
Fs.ReadBuffer(L,SizeOf(Integer));
{ Puis Lecture de la chaine elle-même. }
Fs.ReadBuffer(Buff,L); Form2.StringGrid1.Cells[X,Y]:= Buff;
end;