![]() |
Fehler mit einer function!?!
Hallo,
ich habe das Problem, dass bei folgender Function der Fehler auftaucht: "Objekt oder Klassentyp erforderlich".
Delphi-Quellcode:
Der Fehler taucht in dieser Zeile auf:
function StarteThread(Parameter : Pointer) : LongWord; StdCall;
var User : String; anz,i : Integer; begin ActiveFormX.IdFTP1.Username := 'User'; ActiveFormX.IdFTP1.Password := 'passwort'; ActiveFormX.IdFTP1.Host := 'ftp://www.domain.de'; ActiveFormX.IdFTP1.Connect; ActiveFormX.IdFTP1.ChangeDir('/html/Test-Upload'); anz := Listbox1.Count-1; for i := 0 to anz do begin ActiveFormX.Image1.Picture.LoadFromFile(Listbox1.Items.Strings[i]); ActiveFormX.IdFTP1.Put(Listbox1.Items.Strings[i],ExtractFileName(Listbox1.Items.Strings[i])); end; Sleep(0); ActiveFormX.IdFTP1.Quit; end; end;
Delphi-Quellcode:
Was mache ich hier falsch?
ActiveFormX.IdFTP1.Username := 'User';
Gruß Thomas |
Re: Fehler mit einer function!?!
hmm also normalerweise tritt ein solcher fehler dann auf, wenn du versucht einen Ereignis handler zurlaufzeit zu binden und die "handle"-methode keine methode ist sondern eine porcedure oder funktion.
Soll heissen:
Delphi-Quellcode:
ist nicht viel... aber ein ansatztype TMyObj = class() public OnSomeThing : TEvent; end; procedure handler(Sender : TObject); // snipp procedure handler(Sender : TObject) begin showMessage('Da ist irgendwas irgendwo passiert!'); end; procedure bind(); begin obj = TMyObj.Create(); obj.OnSomeThing := handler; //<- das mag der dann nicht, da die procedure handler zu keinem objekt gehört! end; cya Corelgott |
Re: Fehler mit einer function!?!
hmm... das hilft mir ehrlich gesagt nicht so wirklich weiter!
Ich habe mir schon überlegt, ob es direkt an der IdFTP Komponente liegt, auf die in der function nicht zugegriffen werden kann. Nur wie könnte ich das ändern? |
Re: Fehler mit einer function!?!
Hallo Thomas,
mich irritiert, dass du deine Function StarteThread nennst, aber der Name passt irgendwie garnicht zum gezeigten Code. Normalerweise greifst du aus einer Methode deiner Form auf die Komponenten deiner Form zu. Vielleicht hast du den Code verkürzt wieder gegeben - aber wenn nicht würde ich der Form einfach eine Methode mit passendem Namen spendieren, in der du dann problemlos auf Image1, IdFTP1 und ListBox1 zugreifen kannst. Grüße vom marabu |
Re: Fehler mit einer function!?!
Genau das habe ich schon andersrum gemacht.
Ich hatte alles in einer normalen Form (nicht in ActiveX Form) erstellt und es geht nun um den Thread. Ohne diesen funktioniert anscheinend nicht die gleichzeitige Verarbeitung von Bilderanzeige im Image1 und dem Upload. Um den Code zu komplettieren. Also diese Function war komplett. Hier der Quelltext wie ich sie aufrufen will:
Delphi-Quellcode:
Thomas
procedure TActiveFormX.Image2Click(Sender: TObject);
var ThreadID: Cardinal; ThreadHandle: HWND; begin ThreadHandle := BeginThread(nil, 0, TFNThreadStartRoutine(@StarteThread), nil, 0, ThreadID); if ThreadHandle <> 0 then CloseHandle(ThreadHandle); end; |
Re: Fehler mit einer function!?!
In deinem Ansatz über eine "normale" Form hättest du nur den tight loop vermeiden müssen:
Delphi-Quellcode:
marabu
with ListBox1, IdFTP1 do
for i := 0 to Pred(Items.Count) do begin Image1.Picture.LoadFromFile(Items[i]); Application.ProcessMessages; Put(Items[i], ExtractFileName(Items[i])); end; |
Re: Fehler mit einer function!?!
auch wenn es jetzt nur halb zu dem Thema passt... Was ist denn ein "tight loop"?
|
Re: Fehler mit einer function!?!
Das ist eine Schleife, in der du bis zum Ende die Kontrolle nicht mehr abgibst. Da so die Abarbeitung der message queue pausiert, findet beispielsweise auch kein Neuzeichnen statt.
marabu |
Re: Fehler mit einer function!?!
Achsoooo!
Vielen Dank! So habe ich es jetzt geschafft! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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