Delphi-Quellcode:
var
kundenStream : TMemoryStream;
csv : TStringList;
i: Byte;
begin
edit1.Text:= idftp1.Version;
kundenStream := TMemoryStream.Create;
idftp1.Host:='
192.168.189.128';
idftp1.Username:='
...';
idftp1.Password:='
...';
idftp1.Connect();
idftp1.Get('
kunden.csv',kundenStream);
idftp1.Disconnect;
csv := TStringList.create;
kundenStream.Position:=0;
csv.loadfromStream(kundenStream);
stringGrid1.rowCount :=
csv.count;
for i:=0
to csv.count -1
do
begin
StringGrid1.Rows[i].Delimiter:='
,';
StringGrid1.Rows[i].Commatext:=
csv[i];
end;
csv.free;
kundenStream.Free;
So, der obige Code funktioniert bei mir.
Wenn der Stream nicht auf die Position 0 gesetzt wird,
gibt es eine ListIndex out of bounds Fehlermeldung.
Was ich weiter noch festgestellt habe, ist dass
wenn die Datensätze mit ; getrennt und aus dem Stream gelesen werden
sind diese nicht richtig in das StringGrid eingelesen worden.
Es stehen alle Daten in Spalte 0 des StringGrids.
Werden die Datensätze mit , getrennt
werden sie auch richtig in das StringGrid aufgenommen.
Ich habe mit diesen Datensätzen getestet:
Code:
KundenNr,Name,Vorname,Email
1,Beck,Rufus,test1@123.com
2,Maier,Dieter,test2@456.net
Grüße
Klaus