Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi indy ftp: dazugehörige idFTP-Komponente aus OnWork ermitteln (https://www.delphipraxis.net/45910-indy-ftp-dazugehoerige-idftp-komponente-aus-onwork-ermitteln.html)

Nogge 14. Mai 2005 10:28


indy ftp: dazugehörige idFTP-Komponente aus OnWork ermitteln
 
Hallo Community,
Ich erstelle mehrere idFTP-Komponente zur Laufzeit, verbinde aber all diese mit den selben (OnWorkBegin, OnWork, OnWorkEnd)-Procedures. Ich habe nämlich die idFTP-Komponente ein wenig für meine Zwecke überarbeitet, weil ich für jede Komponente auch ein Panel und ein Label benötige. Daher möchte ich irgendwie herausfinden, welche Komponente gerade das Event ausführt.
Delphi-Quellcode:
type
  TidFTP_Thread = class(TidFTP)
    private
      { Private declarations }
      Filename : String;
      Target  : String;
      P_Thread : TPanel;
      L_Thread : TLabel;
    end;

jfheins 14. Mai 2005 10:55

Re: indy ftp: dazugehörige idFTP-Komponente aus OnWork ermit
 
Also meine IdFtp-Komonenten haben alle im OnWork etc,. den Parameter Sender, mit dem du auf die Ftp-Kompo zugreifen kannst, die dieses Ereignis ausgelöst hat.

Nogge 14. Mai 2005 11:05

Re: indy ftp: dazugehörige idFTP-Komponente aus OnWork ermit
 
Der Sender ist aber vom Typ idTCPConnection und nicht vom Typ idFTP.
Delphi-Quellcode:
(Sender as TidTCPConnection).Irgendetwas
Wenn ich den Typ verändere, erhalte ich eine AV.

jfheins 14. Mai 2005 11:13

Re: indy ftp: dazugehörige idFTP-Komponente aus OnWork ermit
 
:oops: :wall:

Versuch mal, sie über
Delphi-Quellcode:
(Sender as TidTCPConnection).Name
zu unterscheiden :wink:

Nogge 14. Mai 2005 11:19

Re: indy ftp: dazugehörige idFTP-Komponente aus OnWork ermit
 
So müsste ich alle idFTP-Komponenten durchgehen und prüfen, ob das der best. ist. Diese Methode gefällt mir nicht^^

jfheins 14. Mai 2005 11:27

Re: indy ftp: dazugehörige idFTP-Komponente aus OnWork ermit
 
Schreib' dir eine kleine Funktion, die deine IdFtps durchgeht, und den richtigen zurückliefert ...

In etwa:
Delphi-Quellcode:
function GetIdFtp (const Vorfahr: TObject): TIdFtp;
begin
for <Alle IdFtps> do
  if <IdFtp>.Name = Vorfahr.Name then
  begin
    Result := <IdFtp>;
    Break;
  end;
end;

Nogge 14. Mai 2005 13:15

Re: indy ftp: dazugehörige idFTP-Komponente aus OnWork ermit
 
Das Problem ist, dass ich die ganzen idFTPs lokal erstellt habe und nicht global daraufzugreifen kann. Das beste wäre, wenn ich dem OnWork usw. Event einen weiteren Parameter übertragen könnte. Ich weiß aber nicht, ob das erstens geht und zweitens wenn es gehen würde, wie.

jfheins 14. Mai 2005 13:18

Re: indy ftp: dazugehörige idFTP-Komponente aus OnWork ermit
 
Du könntest natürlich auch eine neue TIdFtp-Komo ableiten, die im Parameter Sender sich selbst einträgt, statt TIdTCPConnection

Nogge 14. Mai 2005 13:24

Re: indy ftp: dazugehörige idFTP-Komponente aus OnWork ermit
 
Würde ich ja gern, nur wie geht das?^^

jfheins 14. Mai 2005 13:56

Re: indy ftp: dazugehörige idFTP-Komponente aus OnWork ermit
 
Für das OnWork-Event müsste das so gehen:
Delphi-Quellcode:
  TMyFtp = class (TIdFtp)
    procedure DoWork(AWorkMode: TWorkMode; const ACount: Integer); override;
  end;

implementation

{ TMyFtp }

procedure TMyFtp.DoWork(AWorkMode: TWorkMode; const ACount: Integer);
begin
  if FWorkInfos[AWorkMode].Level > 0 then begin
    Inc(FWorkInfos[AWorkMode].Current, ACount);
    if assigned(OnWork) then begin
      OnWork(Self, AWorkMode, FWorkInfos[AWorkMode].Current);
    end;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz