Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem: Procedure zum speichern eines grids auf FTP server (https://www.delphipraxis.net/113839-problem-procedure-zum-speichern-eines-grids-auf-ftp-server.html)

5etH 15. Mai 2008 15:44


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:
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;
Aufruf
Delphi-Quellcode:
Save(KNDT.StringGrid1, Grid1,'KundenStamm.CSV',CSV1); // EDIT !!! Im aufruf tritt der fehler auf
Fehlermeldung(en):
[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]

Luckie 15. Mai 2008 15:53

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:

rollstuhlfahrer 15. Mai 2008 16:11

Re: Problem mit eigener Procedure
 
es wär mal ganz interessant, wenn du noch die Zeilen markierst, bei denen der Fehler auftritt

Mikender 15. Mai 2008 16:13

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

5etH 16. Mai 2008 07:24

Re: Problem mit eigener Procedure
 
keiner mehr eine idee ?

RavenIV 16. Mai 2008 07:45

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.

tomsel 16. Mai 2008 07:52

Re: Problem mit eigener Procedure
 
Zitat:

Aufruf

Delphi-Quellcode:
Save(KNDT.StringGrid1, Grid1,'KundenStamm.CSV',CSV1); // EDIT !!! Im aufruf tritt der fehler auf

Schau dir die Codezeile vor dieser genauer an.
[EDIT]
Dort fehlt mit an Wahrscheinlichkeit grenzender Sicherheit das Semikolon.


Gruß aus München
[/EDIT]

Klaus01 16. Mai 2008 07:55

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:
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;
Grüße
Klaus

Luckie 16. Mai 2008 08:05

Re: Problem mit eigener Procedure
 
Zitat:

Zitat von 5etH
keiner mehr eine idee ?

Du solltest eventuell mal unsere Beiträge lesen. Wir haben dich danach gefragt, welche Zeile Zeile 210 ist und ich habe dich gebeten den Threadtitel anzupassen!

angos 16. Mai 2008 08:08

Re: Problem mit eigener Procedure
 
hi,

Zitat:

[DCC Fehler] Regin.pas(210): E2066 Operator oder Semikolon fehlt
da würde ich mal ganz stark darauf tippen, dass in der Anweisung vor Zeile 210 das letzte Semikolon vergessen wurde ;)


Gruß
angos


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:08 Uhr.
Seite 1 von 2  1 2      

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