![]() |
Re: .txt von einem ftp server auslesen
hallo nochmal ... hab noch eine letzte frage :cry:
ich habe jetzt den kundendatensatz ein ein unsichtbares grid gepackt (Stringgrid2) und würde es nun gerne per stream wieder an den server senden, mein problem: wie bekomme ich die datensätze des Grids in den Stream, sodass sie wieder mit , in dem csv getrennt sind. so weit bin ich schon gekommen:
Delphi-Quellcode:
if (right) then // Right gibt an ob alle felder zur account erstellung ausgefüllt sind
begin for b := 0 to stringgrid1.rowcount - 1 do begin if (keyganz = stringgrid1.cells[4,i]) and (Stringgrid1.Cells[5,i] = '0') then //wenn Key in datenbank und noch nicht benuzt begin //Einloggen datenmodul1.idftp1.Username := 'proguser'; datenmodul1.idftp1.Password := 'manuel13'; datenmodul1.idftp1.Host := '10.15.121.106'; datenmodul1.idftp1.Connect; //Lokale Tabellen stringgrid1.Cells[5,i] := '1'; Stringgrid2.Cells[1,stringgrid2.rowcount] := edit4.text; Stringgrid2.Cells[2,stringgrid2.rowcount] := edit5.text; Stringgrid2.Cells[2,stringgrid2.rowcount] := keyganz; stringgrid2.RowCount := Stringgrid2.rowcount +1; save := TMemoryStream.create; csv2 := TStringList.create; save.position:=0; for x := 0 to Stringgrid2.rowcount - 1 do begin //Inahlt fehlt <-- wie sieht der schleifen inhalt zum speichern aus end; csv2.savetoStream(save); csv2.free; save.Free; //Auf server Speichern und disconnecten datenmodul1.IdFTP1.ChangeDir('/Kunden/'); datenmodul1.IdFTP1.Put(save,ExtractFileName('Kundendatenbank.csv')); datenmodul1.IdFTP1.Disconnect; end; end; end; |
Re: .txt von einem ftp server auslesen
Delphi-Quellcode:
War aber so ähnlich schon in diesem Thread aufgeführt.
var
csv : TStringList; begin csv := TstringList.create; csv.Delimiter:=','; for i:=0 to StringGrid1.RowCount -1 do begin StringGrid1.Rows[i].Delimiter:=','; csv.Add(StringGrid1.Rows[i].CommaText) end; csv.SaveToStream(<Stream>); csv.Free; end; Grüße Klaus |
Re: .txt von einem ftp server auslesen
holla que tall ^^
also erst lief es ... jetzt tritt ein fehler auf (Listenindex überschreitet das Maximum(0)) woran kann das liegen? hier einmal der code und wo der fehler auftritt
Delphi-Quellcode:
begin
datenmodul1.idftp1.Username := 'proguser'; datenmodul1.idftp1.Password := 'manuel13'; datenmodul1.idftp1.Host := '10.15.121.106'; datenmodul1.idftp1.Connect; datenmodul1.IdFTP1.ChangeDir('/Kunden/'); datenmodul1.idftp1.Get('/Kunden/KundenDatenbank.csv', Kundenstream); 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]; //Hier stürzt er ab ! end; csv.free; kundenStream.Free; right := true; |
Re: .txt von einem ftp server auslesen
Delphi-Quellcode:
Vertausche mal diese beiden Zeilen.Kundenstream.position:=0; csv.loadfromStream(Kundenstream); Grüße Klaus |
Re: .txt von einem ftp server auslesen
ist vertauscht aber selber fehler :(
|
Re: .txt von einem ftp server auslesen
Kannst Du Deine Datei mal testweise in ein Memo ausgeben?
Memo1.lines.loadFromFile() und den output hier einstellen. Testen kann ich das erst heute abend wieder. Grüße Klaus |
Re: .txt von einem ftp server auslesen
also ich habe den stream der übergeben wird jetzt mal ausgesleen und der ist leer
Delphi-Quellcode:
aber die datei auf dem server hat den inhalt
Memo1.lines.LoadFromStream(kundenstream);
KundenNr.,Name,Vorname,Email,Key,Regestriert 1,1,1,1,7453343257-7456326365-5637645445,0 2,2,2,2,7673325253-7272764327-3677447245,0 und er lädt die datei auch vom server wenn ich da in die Log schaue [Edit] je nach dem wie ich i in der folgenden schleife erhöhe ändert sich der maximal listindex
Delphi-Quellcode:
for i:=0 to csv.count -1 do
begin StringGrid1.Rows[i].Delimiter:=','; StringGrid1.Rows[i].Commatext:=csv[i]; end; |
Re: .txt von einem ftp server auslesen
hatte das memo1... an der falschen stelle und jetzt lädt er es in das memofeld
inhalt: KundenNr.,Name,Vorname,Email,Key,Regestriert 1,1,1,1,7453343257-7456326365-5637645445,0 2,2,2,2,7673325253-7272764327-3677447245,0 aber er trägt es nicht in das grid ein... immernoch selber fehler |
Re: .txt von einem ftp server auslesen
Hallo Manuel,
ich habe das noch einmal getestet. Ich bekomme nur den Fehler "Listindex out of Bounds" wenn ich den Stream, nachdem er geladen wurde, nicht auf den Anfang (kundenStream.position:=0;) zurückgesetzt habe. Anbei noch einmal beide Routinen zum down- und upload.
Delphi-Quellcode:
Wenn es bei Dir nicht so geht, dann stimmt in Deinem Code irgendetwas nicht.
procedure TForm1.downloadButtonClick(Sender: TObject);
var kundenStream : TMemoryStream; csv : TStringList; i: Byte; begin 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; if csv.count > 0 then for i:=0 to csv.count -1 do begin StringGrid1.Rows[i].Delimiter:=','; StringGrid1.Rows[i].Commatext:=csv[i]; end; csv.free; kundenStream.Free; end; procedure TForm1.uploadButtonClick(Sender: TObject); var kundenStream: TMemoryStream; csv : TStringList; i: Byte; begin kundenStream := TMemoryStream.Create; idftp1.Host:='192.168.189.128'; idftp1.Username:='...'; idftp1.Password:='...'; idftp1.Disconnect; csv := TStringList.create; for i:=0 to StringGrid1.Rowcount -1 do begin csv.Add(StringGrid1.Rows[i].CommaText); end; idftp1.Connect(); csv.SaveToStream(kundenStream); idftp1.put(kundenStream,'kunden.csv'); csv.free; kundenStream.Free; idftp1.disconnect; end; Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz