Avatar billede fixxxer Nybegynder
28. september 2004 - 17:51 Der er 4 kommentarer og
1 løsning

indy IdFTP OnWork

Jeg synes at have et mærkeligt problem.

Hvis jeg dynamisk opretter en TIdFTP, og assigner OnWork og herefter vil fange IdFTP'en selv gennem OnWork-eventen får jeg i stedet fat i en TIdSimpleServer?

Kan jeg ikke i OnWork fange den "almindelige" Sender: TObject; frem for denne her ASender: TObject; ?

procedure TfrmMain.IdFTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Integer);
begin
  ShowMessage( ASender.ClassName );

end;

Tricket skulle være at jeg har lavet min egen class for TIdFTP, med en ekstra variabel til at vise AWorkCount værdien i en ListItem der er difineret ved Create af FTP-komponenten.

  TMyFTP = class(TIdFTP)
    FListItem: TListItem;
    published
      property ListItem: TListItem read FListItem write FListItem;
  end;

Humlen skulle så være at jeg ved OnWork kan fange ListItem for denne FTP og så opdatere AWorkCount i ListItem.Caption fx.

Måske er der en bedre måde at gøre det på end jeg har tænkt mig frem til?
Avatar billede fixxxer Nybegynder
28. september 2004 - 17:52 #1
Måske kan jeg omskrive OnWork til mit behov?
Avatar billede hrc Mester
29. september 2004 - 08:57 #2
Selv får jeg ikke fat i en TidSimpleServer når jeg kigger på aSender.ClassName. Umiddelbart ser det ud til jeg vil få en TIdTCPConnection som TidFTP nedarver fra. Hvis du så har en afledt klasse af TidFTP så kan man bare typecaste den:

  (aSender as TMyFTP).ListItem ... // Den pæneste måde

eller sådan her:

  TMyFTP(aSender).ListItem // Den "gamle" måde

De er lige sløve så måske er det smart at gøre sådan her:

var
  MyFTP : TMyFTP;
begin
  MyFTP := (aSender as TMyFTP);
  MyFTP.ListItem ...
Avatar billede fixxxer Nybegynder
29. september 2004 - 12:10 #3
Nu ved jeg ikke hvilken version af Indy du bruger, men jeg kører 10'eren hvilket kan være forklaringen på vores forskellige resultater ved kaldet ShowMessage( ASender.ClassName );

Jeg forsøgte netop fremgangsmåden TMyFTP(aSender).ListItem, hvilket gav en access violation, formodentlig pga. at ASender intet har med TMyFTP'en at gøre men af uforklarelige årsager fanger Server-side?

Plejer det i øvrigt ikke at hedde Sender: TObject?
Avatar billede fixxxer Nybegynder
29. september 2004 - 12:47 #4
Kan du i øvrigt give mig en forklaring på hvorfor Get() får hele mit program til at hænge, også selvom jeg bruger Application.ProcessMessages

Jeg kunne godt tænke mig at selvom der er en fil undervejs kan brugeren godt minimere vinduet, eller i øvrigt håndtere det som normalt.
Avatar billede fixxxer Nybegynder
24. oktober 2004 - 20:14 #5
Problemet blev løst med en downgrade til INDY 9

Tak for din hjælp
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester