Einzelnen Beitrag anzeigen

emploi

Registriert seit: 21. Jun 2004
Ort: Ilmtown
40 Beiträge
 
Delphi 7 Enterprise
 
#1

Thread Problem - Stack overflow

  Alt 13. Aug 2004, 14:35
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
  Mit Zitat antworten Zitat