28. september 2004 - 17:51Der 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; ?
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.
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 ...
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?
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.