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...