Einzelnen Beitrag anzeigen

Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#6
  Alt 16. Mai 2003, 20:14
Wie ich schon schrieb: Mittels Wrapper ist es möglich mit Synchronize Paramater zu benutzen. Ein Wrapper ist eine Prozedur, ohne Parameter, die die wiederum die gewünschte Prozedur aufruft, mit den entsprechenden Parametern. Dazu kannst du z.B. die Parameter vor dem Aufruf von Synchronize in Variablen speichern und dann diese Variablen im Wrapper benutzen. So z.B.:
Delphi-Quellcode:
procedure TForm1.AddUser(name: string; id: integer);
begin
   ListBox1.Add(aname);
   ...
end;

//globale Variablen die als temporärer Speicher der Parameter verwendet werden
var
   aname: string;
   aid: integer;

procedure TForm1.AddUserWrapper; //wrapper von AddUser
begin
   AddUser(aname, aid); //aufruf der richtigen Prozedur
end;

procedure TForm1.TIdTCP....Execute; //Execute der Indy
begin
  with AThread.Connection do
  begin
     aname := 'labersack'; //Wertzuweisung der "Parameter"
     aid := 7483;
     Synchronize(AddUserWrapper); //threadsicherer Aufruf der AddUser-Prozedur mittels Wrapper
  end;
end;
Code ist "OnTheFly" geschrieben.
Ich hab das jetzt sehr ausführlich gestaltet, aber bitte nicht vera***** fühlen. Ich gehe eigentlich davon aus, dass du recht viel Ahnung hast; doch besser ein wenig ausführlicher als zu schlecht erklärt!

Somit müsstest du dein Problem eigentlich lösen können. Eigene Threadklassen sind IMHO unnötig.
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat