Hi Jungs,
mal wieder ein Problemchen. Am besten zeig ich euch gleich den Code. Ist das erste mal
das ich mit Threads arbeite (arbeiten will) aber klappt nicht so richtig:
Code:
PROCEDURE LoadPages;
VAR temp : ARRAY[0..250] of String;
ThreadArray : ARRAY of CheckThread;
j,count : Integer;
BEGIN
GetUrls(temp,count); // Speichert die Urls in das Array und gibt Array + Anzahl der Einträge zurück
SetLength(ThreadArray,count-1);
FOR j := 0 TO count - 1 DO
BEGIN
ThreadArray[j] := CheckThread.Create(True);
WITH ThreadArray[j] DO
BEGIN
url := temp[j];
FreeOnTerminate := True;
Resume;
END;
END;
END;
Code:
unit uscs_thread;
interface
uses
Classes, Idhttp;
type
CheckThread = class(TThread)
private
protected
procedure Execute; override;
PROCEDURE SendUrl;
public
SID,
url : String;
end;
implementation
uses uscs_main;
procedure CheckThread.Execute;
var IdHttp1 : TIdHTTP;
Request : TStringList;
MyStream : TMemoryStream;
i : integer;
begin
IdHttp1 := TIdHTTP.Create(nil);
TRY
idHttp1.RedirectMaximum := 15;
idHttp1.HandleRedirects := True;
Request := TStringList.Create;
MyStream := TMemoryStream.Create;
TRY
IdHttp1.Request.ContentType := 'application/x-www-form-urlencoded';
Request.Add('&PHPSESSID='+SID);
IdHttp1.Post(
url,Request,MyStream);
MyStream.WriteBuffer(#0' ', 1);
MyStream.Position := 0;
// MyStream.SaveToFile('test.txt');
FINALLY
MyStream.Free;
Request.Free;
END;
Synchronize(SendUrl);
FINALLY
IdHttp1.Free;
END;
END;
PROCEDURE CheckThread.SendUrl;
BEGIN
uscs_form.UpdateFromThread(
url);
END;
end.
Code:
procedure Tuscs_form.UpdateFromThread(Furl:String);
begin
IF Furl <> '' THEN
uscs_result_form.LB_results.Items.Add(Furl);
end;
Viel Code, Hoffentlich nicht ganz so schrecklich für euch
Weiss nicht wo der Fehler steckt. Hoffe ihr könnt mir helfen!
mfg emploi