![]() |
IndyFTP Fortschritt bei Upload
Hallo Community,
es geht um folgendes: Ich möchte eine Datei per FTP auf einen Server laden. Der einzige Lösungsansatz, welchen ich bisher zum Funktionieren überzeugen konnte, ist die Indy-Variante. Da ich leider nur eine Turbo-Delphi Version habe, bleibt es mir verwehrt die Komponenten einfach auf der Form zu platzieren. So habe ich alles schön erstellt, nur bei der Zuweisung der Prozeduren für eine Fortschrittsanzeige scheitere ich kläglich, es gibt immer Fehlermeldungen mit Parametern, auch im Forum habe ich bislang noch keine Lösung gefunden, um non-VLC erstellten Indy-Komponenten Prozeduren zuzuweisen. Wo liegt hier der Fehler? Der FTP-Upload an sich funktioniert, nur möchte auch gerne sehen was voran geht... Gruß Markus
Delphi-Quellcode:
var
indy_FTPClient: TIdFTP; procedure Tfo_uploader.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin ProgressBar1.Position := AWorkCount; Application.ProcessMessages; end; procedure Tfo_uploader.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin ProgressBar1.Max := AWorkCountMax; end; procedure Tfo_uploader.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode); begin ProgressBar1.Position := 0; end; procedure Tfo_uploader.FormCreate(Sender: TObject); begin indy_FTPClient := TIdFTP.Create; indy_FTPClient.OnStatus := IdFTP1Status; indy_FTPClient.OnWorkBegin := IdFTP1WorkBegin(indy_FTPClient, wmRead, 100); // es geht um diese Parameter indy_FTPClient.OnWorkEnd := IdFTP1WorkEnd; indy_FTPClient.OnWork := IdFTP1Work; end; |
Re: IndyFTP Fortschritt bei Upload
Eigentlich sollte es so funktionieren:
Delphi-Quellcode:
Aber das hast du bestimmt schon ausprobiert und verworfen (da du die Zuweisung bei den anderen beiden ja schon so machst) - oder?
var
indy_FTPClient: TIdFTP; procedure Tfo_uploader.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin ProgressBar1.Position := AWorkCount; Application.ProcessMessages; end; procedure Tfo_uploader.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin ProgressBar1.Max := AWorkCountMax; end; procedure Tfo_uploader.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode); begin ProgressBar1.Position := 0; end; procedure Tfo_uploader.FormCreate(Sender: TObject); begin indy_FTPClient := TIdFTP.Create; indy_FTPClient.OnStatus := IdFTP1Status; indy_FTPClient.OnWorkBegin := IdFTP1WorkBegin; // genauso wie die anderen beiden indy_FTPClient.OnWorkEnd := IdFTP1WorkEnd; indy_FTPClient.OnWork := IdFTP1Work; end; |
Re: IndyFTP Fortschritt bei Upload
Dein Fehler ist das du dort einen Funktionsaufruf hast (du übergibst Parameter). Richtig ist es jedoch wie in der Zeile darunter - einfach nur der Funktionsname (genauer gesagt Methodenanme) ohne Klammern.
|
Re: IndyFTP Fortschritt bei Upload
hätte ich ohne Parameter keine Fehlermeldung bekommen, wäre ich ja gar nicht auf die Idee gekommen etwas hin zu schreiben...
Mit folgendem Code
Delphi-Quellcode:
bekomme ich diese Fehlermeldung:
indy_FTPClient.OnStatus := IdFTP1Status;
indy_FTPClient.OnWorkBegin := IdFTP1WorkBegin; indy_FTPClient.OnWorkEnd := IdFTP1WorkEnd; indy_FTPClient.OnWork := IdFTP1Work; [Pascal Fehler] u_uploader.pas(218): E2009 Inkompatible Typen: 'Liste der Parameter ist unterschiedlich' Der Compiler will ja anscheinend irgendwas in Klammern dahinter haben.... |
Re: IndyFTP Fortschritt bei Upload
Erstmal danke für die Fehlermeldung ;)
Er will keine Klammern, sondern er will eher dass die prozedur, die du zuweist auch dieselben Parameter hat wie erwartet ;) |
Re: IndyFTP Fortschritt bei Upload
wie würde das den konkret aussehen? Ich habe leider keine Vorstellung, was ich an dem Code verändern muss, damit da endlich mal was funktioniert...
Die Fehlermeldung bezieht sich auf folgende beiden Zeilen
Delphi-Quellcode:
indy_FTPClient.OnWorkBegin := IdFTP1WorkBegin;
indy_FTPClient.OnWork := IdFTP1Work; |
Re: IndyFTP Fortschritt bei Upload
Ich hab mal die Suche für dich bemüht (OnWorkBegin) und folgendes gefunden:
Delphi-Quellcode:
vorgehensweise ist übrigens folgende. Man schaut von welchem Typ das Event ist und sucht dann die Declaration davon.
procedure FTPWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Integer);
procedure FTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Integer); Bei einem Button zum Beispiel ist das OnClick vom Typ TNotifyEvent. Und wenn man die Declaration von TNotifyEvent sucht findet man wie die Methode aussehen muss. |
Re: IndyFTP Fortschritt bei Upload
super vielen Dank :)
Kann es sein, dass meine Prozeduren aus einer anderen Indy-Versionen waren? Naja auf jeden Fall geht es jetzt. Gruß Markus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 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