Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Fehler mit einer function!?! (https://www.delphipraxis.net/62300-fehler-mit-einer-function.html)

Plague 2. Feb 2006 16:58


Fehler mit einer function!?!
 
Hallo,

ich habe das Problem, dass bei folgender Function der Fehler auftaucht: "Objekt oder Klassentyp erforderlich".
Delphi-Quellcode:
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;
Der Fehler taucht in dieser Zeile auf:
Delphi-Quellcode:
ActiveFormX.IdFTP1.Username := 'User';
Was mache ich hier falsch?

Gruß
Thomas

Corelgott 2. Feb 2006 17:14

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:

type
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;
ist nicht viel... aber ein ansatz
cya
Corelgott

Plague 2. Feb 2006 17:19

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?

marabu 2. Feb 2006 18:09

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

Plague 2. Feb 2006 18:13

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:
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;
Thomas

marabu 2. Feb 2006 18:48

Re: Fehler mit einer function!?!
 
In deinem Ansatz über eine "normale" Form hättest du nur den tight loop vermeiden müssen:

Delphi-Quellcode:
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;
marabu

Plague 2. Feb 2006 18:50

Re: Fehler mit einer function!?!
 
auch wenn es jetzt nur halb zu dem Thema passt... Was ist denn ein "tight loop"?

marabu 2. Feb 2006 18:55

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

Plague 2. Feb 2006 19:00

Re: Fehler mit einer function!?!
 
Achsoooo!
Vielen Dank!

So habe ich es jetzt geschafft!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 Uhr.

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