Hi,
ich habe folgendes Problem: Ich arbeite mit der TICQClient Komponente, mit der ich Usernamen anhand von UINs auslesen möchte. Dies muss ich für eine Liste von Usern machen (sagen wir mal 10 Leute). Ich weiss, dass ich hierbei Threads anwenden muss, denn ich muss ja erst den Rückwert der Funktion erhalten (den Username) und DANN erst mit der for-Schleife weitermachen.
Delphi-Quellcode:
type
TUserInfo = class(TThread)
private
procedure GetUserName(UIN : Cardinal);
end;
[...]
procedure TUserInfo.GetUserName(UIN: Cardinal);
var test : String;
begin
Form1.ICQClient1.RequestInfoShort(UIN);
end;
[...]
procedure TForm1.ICQClient1UserInfoShort(Sender: TObject; UIN, NickName,
FirstName, LastName, Email: string; UserFound, AuthRequired: Boolean);
begin
RequestedUsername := NickName;
end;
////////////////////////////////////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
begin
for I := 0 to 10 do
begin
UserThread.GetUserName(StrToInt(EasyListView.Items.Items[I].Captions[1])); // Hier ist die UIN drin
// ShowMessage('Verzögerung');
EasyListView.Items.Items[I].Captions[2] := RequestedUsername;
end;
end;
Ich habe mit die Funktionalität mit einem kleinen Trick getestet und zwar, indem ich eine ShowMessage in die for-Schleife gemacht habe. Also funktionieren tut es generell, aber so wie es oben steht, eben nicht.
Wer kann mir helfen?