Hey ich habe ein gro�es Problem. Ich will meinen Code ausführen lassen in einem Thread. Mein Thread Code ist nun folgender:
Code
- unit Unit3;
- interface
- uses
- Classes {$IFDEF MSWINDOWS} , Windows {$ENDIF},IdMultipartFormData,IdHttp,
- IdComponent, IdTCPConnection, IdTCPClient,StrUtils,forms,unit1,unit2;
- type
- TArrayofstring = array of string;
- upload = class(TThread)
- IdHTTP1: TIdHTTP;
- private
- procedure SetName;
- protected
- procedure Execute; override;
- end;
- implementation
- { Wichtig: Methoden und Eigenschaften von Objekten in visuellen Komponenten dürfen
- nur in einer Methode namens Synchronize aufgerufen werden, z.B.
- Synchronize(UpdateCaption);
- und UpdateCaption könnte folgenderma�en aussehen:
- procedure upload.UpdateCaption;
- begin
- Form1.Caption := 'Aktualisiert in einem Thread';
- end; }
- {$IFDEF MSWINDOWS}
- type
- TThreadNameInfo = record
- FType: LongWord; // muss 0x1000 sein
- FName: PChar; // Zeiger auf Name (in Anwender-Adress-Bereich)
- FThreadID: LongWord; // Thread-ID (-1 ist Caller-Thread)
- FFlags: LongWord; // reserviert für zukünftige Verwendung, muss 0 sein
- end;
- {$ENDIF}
- { upload }
- procedure upload.SetName;
- {$IFDEF MSWINDOWS}
- var
- ThreadNameInfo: TThreadNameInfo;
- {$ENDIF}
- begin
- {$IFDEF MSWINDOWS}
- ThreadNameInfo.FType := $1000;
- ThreadNameInfo.FName := 'upload';
- ThreadNameInfo.FThreadID := $FFFFFFFF;
- ThreadNameInfo.FFlags := 0;
- try
- RaiseException( $406D1388, 0, sizeof(ThreadNameInfo) div sizeof(LongWord), @ThreadNameInfo );
- except
- end;
- {$ENDIF}
- end;
- function FindInString(Text, SearchFrom, SearchTo: string; FirstOnly: Boolean; var Return: TArrayOfString): Boolean;
- var
- i: Integer;
- FoundString: string;
- begin
- Result := False;
- SetLength(Return, 0);
- i := Pos(SearchFrom, Text);
- while i > 0 do
- begin
- Result := True;
- i := i + Length(SearchFrom);
- FoundString := Copy(Text, i, PosEx(SearchTo, Text, i) - i);
- SetLength(Return, Length(Return) + 1);
- Return[High(Return)] := FoundString;
- Delete(Text, 1, i);
- i := Pos(SearchFrom, Text);
- if FirstOnly then
- Break;
- end;
- end;
- procedure upload.Execute;
- var
- s:string;
- after:tarrayofstring;
- stream: TIdMultiPartFormDataStream;
- begin
- SetName;
- if form2.radiobutton1.Checked then
- begin
- s:=('http://www.imagebanana.com/');
- stream := TIdMultiPartFormDataStream.Create;
- Stream.AddFormField('send','Hochladen!');
- Stream.AddFile('img','23.jpg', 'multipart/form-data');
- s:=IdHTTP1.Post(s,Stream);
- form1.memo1.text:=s;
- FindInString (form1.memo1.text,'[img=','][/url]"',true,after);
- form1.edit1.text:=after[0];
- end;
- end;
- end.
Wie kriege ich mein Programm jetzt dazu das der Thread ausgeführt wird. Ich glaube ich habe schon im Thread fehler gemacht, aber im Internet finde ich einfach nichts das leicht verständlich ist.
Also wie bekomme ich den Code ausgeführt das ich am Ende das Ergebniss in meinem Hauptfenster habe?