Hier mal der vereinfachte Code.
Damit vereinfacht sich auch der Aufruf.
Änderungen:
* "gescheiteter" Prozedurname
* Parameterliste abgespeckt und dafür lokale Variablen verwendet
* Sicherheitsüberprüfungen mit Assert
* try...finally zum Schutz der Resourcen
Delphi-Quellcode:
Procedure SaveStringGrid(Grid : TStringGrid;
const FileName :
String);
Var
I : Integer;
GridMem : TMemoryStream;
// lokale Variable, kein Parameter !
CSV : TStringList;
// dito
Begin
Assert(Assigned(Grid));
// Safety first
Assert(Assigned(Datenmodul1));
// Vorbereitung zum speichern der Datenbanken
GridMem := TMemoryStream.Create;
CSV := TStringList.Create;
try
//Speichern der Grids in Streams
For I:=0
To Grid.RowCount -1
Do
Begin
Grid.Rows[i].Delimiter:='
;';
CSV.Add(StringReplace(Grid.Rows[i].DelimitedText,'
','
;',[rfReplaceAll]));
End;
// Speichern der Streams als Datei auf einem FTP Server
CSV.SaveToStream(GridMem);
// ganz wichtig: Stream muss zurück auf Anfang
GridMem.Position := 0;
Datenmodul1.IdFTP1.Put(GridMem,FileName);
finally
CSV.Free;
GridMem.Free;
end;
End;