AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler mit einer function!?!

Ein Thema von Plague · begonnen am 2. Feb 2006 · letzter Beitrag vom 2. Feb 2006
Antwort Antwort
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#1

Fehler mit einer function!?!

  Alt 2. Feb 2006, 17:58
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:
ActiveFormX.IdFTP1.Username := 'User'; Was mache ich hier falsch?

Gruß
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Corelgott
Corelgott

Registriert seit: 11. Apr 2003
Ort: Lübeck
213 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Fehler mit einer function!?!

  Alt 2. Feb 2006, 18:14
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
wer Rächtschraibfehler findet daaf sie behalten...
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#3

Re: Fehler mit einer function!?!

  Alt 2. Feb 2006, 18:19
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?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Fehler mit einer function!?!

  Alt 2. Feb 2006, 19:09
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
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#5

Re: Fehler mit einer function!?!

  Alt 2. Feb 2006, 19:13
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Fehler mit einer function!?!

  Alt 2. Feb 2006, 19:48
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
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#7

Re: Fehler mit einer function!?!

  Alt 2. Feb 2006, 19:50
auch wenn es jetzt nur halb zu dem Thema passt... Was ist denn ein "tight loop"?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Fehler mit einer function!?!

  Alt 2. Feb 2006, 19:55
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
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#9

Re: Fehler mit einer function!?!

  Alt 2. Feb 2006, 20:00
Achsoooo!
Vielen Dank!

So habe ich es jetzt geschafft!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 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