![]() |
Problem: Procedure zum speichern eines grids auf FTP server
Hallo Zusammen
mein Programmfragment speichert StringGrids in eine CSV datei auf einem FTP-Server nur leider gibt er mir einen Fehler aus obwohl es in einer anderen unit ohne probleme läuft hier einmal die beiden teile und anschließend die Fehlermeldung Procedure
Delphi-Quellcode:
Aufruf
Procedure Save(Grid : TStringGrid; GridMem : TMemoryStream; FileName : String; CSV : TStringList);
Var I : Integer; Begin // Vorbereitung zum speichern der Datenbanken GridMem := TMemoryStream.Create; CSV := TStringList.Create; //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); Datenmodul1.IdFTP1.Put(GridMem,FileName); CSV.Free; GridMem.Free; End;
Delphi-Quellcode:
Fehlermeldung(en):
Save(KNDT.StringGrid1, Grid1,'KundenStamm.CSV',CSV1); // EDIT !!! Im aufruf tritt der fehler auf
[DCC Fehler] Regin.pas(210): E2066 Operator oder Semikolon fehlt [DCC Fehler] Regin.pas(210): E2014 Anweisung erforderlich, aber Ausdruck vom Typ 'TMemoryStream' gefunden Kann mir vill jemand sagen woran das liegt ? schonmal vielen dank 5etH [edit=Admin]Beitrag neu in den Cache eingetragen. Mfg, Daniel[/edit] |
Re: Problem mit eigener Procedure
Was in Rundenklammern hinter dem Unitnamen steht, sind die Zeilen, in der der Fehler aufgetreten ist.
Und der Threadtitel istauch nicht sehr aussagekräftig. :roll: |
Re: Problem mit eigener Procedure
es wär mal ganz interessant, wenn du noch die Zeilen markierst, bei denen der Fehler auftritt
|
Re: Problem mit eigener Procedure
Mal ne Frage (vielleicht denke ich auch gerade total falsch) aber warum übergibst du der procedure ne StringList die du zuerst createst und dann mit Free "zerstörst" wäre es nicht sinnvoller die nicht als Parameter sondern einfach als var zu vereinbaren :?: :?: :?:
Ach ja welche Zeile ist denn 210 |
Re: Problem mit eigener Procedure
keiner mehr eine idee ?
|
Re: Problem mit eigener Procedure
Der Compiler motzt die Zeile 210 an.
Falls diese Zeile gemeint ist: Datenmodul1.IdFTP1.Put(GridMem,FileName); dann legt es vermutlich daran, dass das Datenmodul1 nicht bekannt ist. P.S. Datenmodul1 und IdFTP1 sind keine tollen Namen für Komponenten. |
Re: Problem mit eigener Procedure
Zitat:
[EDIT] Dort fehlt mit an Wahrscheinlichkeit grenzender Sicherheit das Semikolon. Gruß aus München [/EDIT] |
Re: Problem mit eigener Procedure
Ich würde die Prozedur so umbauen.
In der Parameterliste all die Sachen die man von aussen in der Prozedure benötigt. Wie das StringGrid, die FTP Session und den Dateinamen. Der MemoryStream und die StringList werden nur intern in der Prozedur benutzt und es reicht auch dann sie nur intern als Variablen zu führen.
Delphi-Quellcode:
Grüße
Procedure Save(Grid:TStringGrid; ftpSession:TidFTP; FileName:String);
var I : Integer; GridMem : TMemoryStream; CSV : TStringList; Begin // Vorbereitung zum speichern der Datenbanken GridMem := TMemoryStream.Create; CSV := TStringList.Create; //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); ftpSession.Put(GridMem,FileName); CSV.Free; GridMem.Free; End; Klaus |
Re: Problem mit eigener Procedure
Zitat:
|
Re: Problem mit eigener Procedure
hi,
Zitat:
Gruß angos |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:08 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