Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi probleme mit threads (https://www.delphipraxis.net/25440-probleme-mit-threads.html)

endeffects 6. Jul 2004 17:29


probleme mit threads
 
hallo,

ich hab heute mit der threaddemo von lucky rumexperimentiert
(http://www.luckie-online.de/Tutorial...mit_Delphi.zip)
dazu hab ich einfach eine idHTTP komponente auf der form plaziert
und die DoSomething(); funktion aus der unit2 wie folgt geändert:

Code:
procedure TMyThreads.DoSomething;
begin

  form1.idhttp.get('http://www.google.de');
end;
weitere änderungen hab ich nicht vorgenommen,
wenn ich nun versuche die threads zu starten wird eine
schutzverletzung ausgelöst, kann mir vielleicht jmd erklären warum

sakura 6. Jul 2004 17:32

Re: probleme mit threads
 
Es gibt mehrere Möglichkeiten. Die zwei wahrscheinlichsten:
  • Dein Thread ist nicht mit den Ereignissen von Form1 synchronosiert
  • Form1 bzw. Form1.IdHttp1 sind nicht initialisiert

...:cat:...

endeffects 6. Jul 2004 19:05

Re: probleme mit threads
 
also ich wüßte ehrlich gesagt nicht was ich da synchronisieren sollte,
das ganze ist ja nur ein test um gleichzeitig verschiedene verbindungen
aufzubauen ohne das hier großartig irgendwelche daten zwischen den
methoden ausgetauscht werden und wie ich die komponente initialisieren
soll weiß ich leider auch nicht

endeffects 7. Jul 2004 09:26

Re: probleme mit threads
 
Hallo,

ich hab mich heute nun nocheinmal dran gewagt
und hänge leider immer noch am selben problem fest.

wenn ich die threads starte die eine Verbindung
über einen idTCPClient aufbauen sollen gibt es einen
Exception Error im idStack.
Zitat:

"Im Projekt TTHreadObject.exe ist eine Exception
der Klasse EIDSocketError aufgetreten. Meldung: Socket
Error # 10022 Invalid argument .'. Prozess wurde angehalten.. "
Ich hab das ganze nun einmal hochgeladen und würde
mich freuen wenn es sich mal jemand anschaut.

den download findet ihr hier

für jegliche verbesserungsvorschläge wäre ich sehr dankbar

mfg

Luckie 7. Jul 2004 09:47

Re: probleme mit threads
 
Hast du dir die Fehlermeldung mal angekuckt? Wohl nicht. Deswegen hie rnoch mal:
Zitat:

---------------------------
Debugger Exception Notification
---------------------------
Project TThreadObject.exe raised exception class EIdAlreadyConnected with message 'Already connected.'. Process stopped. Use Step or Run to continue.
---------------------------
OK Hilfe
---------------------------
Ich habe dir doch gesagt, du musst die Komponente im Thread dynamisch erstellen. Wie soll denn das klappen, wenn du mit allen Threads die gleiche Komponente benutzt? Der erste Thread baut eine Verbindung auf und was macht der zweite Thread wohl? Er versucht noch mal eine Verbindung aufzubauen, was ja wohl dann nur schiefgehen kann. Beheb erstmal das Problem.

endeffects 7. Jul 2004 09:56

Re: probleme mit threads
 
Also diese Fehlermeldung hab ich bisher noch nicht gesehen *g
bei mir taucht immer nur die Meldung "invalid argument" auf.

Zitat:

Ich habe dir doch gesagt, du musst die Komponente im Thread dynamisch erstellen.
Na ich dachte ich soll die folgende Anweisung in den execute auslagern.
Aber da hab ich wohl was falsch verstanden. Da ich wie gesagt erst eine
Woche mit Delphi arbeite weiß ich ehrlich gesagt nicht wie ich
eine Komponente dynamisch erzeuge.

Code:
  with MainForm.IdTCPClient do
    begin
     ...
    end;

Luckie 7. Jul 2004 10:00

Re: probleme mit threads
 
Die Fehlermeldung kommt, wen nman die syntaktischen Fehler behebt und das Programm startet.

Aber als kleinen Tip: Als Anfänger sollte man nicht gerade mit so komplexen Themen beginnen. Wie wäre es mit Grundlagen? dann weißt du auch, wie man Objekte erstellt und wieder löscht.

endeffects 7. Jul 2004 10:10

Re: probleme mit threads
 
man wächst mit seinen aufgaben ;)
davon mal abgesehn arbeite ich lieber an etwas nützlichem

Luckie 7. Jul 2004 10:14

Re: probleme mit threads
 
Ja aber nur, wenn man sie auch bewältigen kann.

Delphi-Quellcode:
procedure TMyThreads.DoSomething;
var
  IdHTTP: TIdHTTP;
  s: string;
  sl: TStringList;
begin
  IdHTTP := TIdHTTP.Create(nil);
  sl := TStringList.Create;
  try
    IdHTTP.Connect;
    s := IdHTTP.Get('http://www.luckie-online.de');
    sl.Text := s;
    sl.SaveToFile('d:\test'+IntToStr(FCount)+'.html');
  finally
    FreeAndNil(IdHTTP);
    FreeAndNil(sl);
  end;
end;
Ich bekomme allerdings einen Socket Error 10062 oder so "Connection refused" was auch immer das heißen mag. Ich kenne mich mit den Indies aber nicht sonderlich gut aus.

Aber mal so nebenbei, was wolltets du mit einer TCP Verbindung auf Port 80 bei Mircosoft?

endeffects 7. Jul 2004 10:24

Re: probleme mit threads
 
also ich hab es nach deinem beispiel nun so geändert:

Code:
uses
  Classes, SysUtils, IdComponent, IdTCPConnection,
  IdTCPClient;

...

procedure TMyThreads.DoSomething;
var
  Loop: Integer;
  IdTCPClient: TIdTCPClient;
begin
  IdTCPClient := TIdTCPClient.Create(nil);
  Inc(FCount);
  with IdTCPClient do
    begin
      Host := MainForm.edtHost.Text;
      Port := StrToint(MainForm.edtPort.Text);
      try
        Connect; // add a timeout here if you wish, eg: Connect(3000) = timeout after 3 seconds.
        Write('GET /'+#13#10);
      finally
      FreeAndNil(IdTCPClient);
      end;
      Synchronize(UpdateLVCaption);
    end;
end;
ich hoffe ich hab nichts falsch gemacht, aber es scheint zu funktionieren

danke für deine hilfe :dance:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz