Einzelnen Beitrag anzeigen

Benutzerbild von Corelgott
Corelgott

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

Re: Funktion aus dem Hauptthread in einem extra Thread ausfü

  Alt 29. Jul 2006, 02:28
hi

also vll ist das ein bissel über das ziel hinnaus aber egal...

ich würde, wenn du das echt über nen thread regel willst / musst das so machen:

Delphi-Quellcode:

unit untTResolve;

interface

uses Classes;

type
  TResolveEvent = procedure(Sender : TObject; Address : String; Ip : String) of Object;

type TResolve = class(TThread)
private
  _toResolve : String;
  FOnRes : TResolveEvent;

protected
  procedure execute; override;

public
  property OnIpResolved : TResolveEvent read FOnRes write FOnRes;
  procedure resolve(ip : String);
end;

implementation

{ TResolve }

procedure TResolve.execute;
var
  ResAddress : String;

begin
  inherited;

  // do resolving and all that stuff
  // ResAddress = fubar

  if assigend(FOnRes) then
    FOnRes(self, ResAddress, self._toResolve);

  self.Suspend();
end;

procedure TResolve.resolve(ip: String);
begin
  self._toResolve := ip;
  self.resume();
end;

end.

/// and the usage is....

procedure TForm1.Button1Click(Sender: TObject);
var
  res : TResolve;

begin
  res := TResolve.Create(true);
  res.OnIpResolved := self.HandleResolve;

  res.resolve();
end;

procedure TForm1.HandleResolve(Sender : TObject; Address : String; Ip : String);
begin
  listBox1.fubar := Address;
  // well normaly listBox1.items[...] and so on....
end;
so ich habe den code nicht getestet & auch nicht geprüft...
Aber summa summarum sollte es so gehen.. auch wenn das per event vll. etwas umständlich ist ^^

ist hoffentlich wenigstens ein ansatz...

cya
Corelgott

edit:

aso res local zu machen und nichht zu freen ist vll nicht sooo glücklich ^^...
also vll das noch anpassen ^^
wer Rächtschraibfehler findet daaf sie behalten...
  Mit Zitat antworten Zitat