AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi probleme mit threads
Thema durchsuchen
Ansicht
Themen-Optionen

probleme mit threads

Ein Thema von endeffects · begonnen am 6. Jul 2004 · letzter Beitrag vom 8. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#1

probleme mit threads

  Alt 6. Jul 2004, 18:29
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
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: probleme mit threads

  Alt 6. Jul 2004, 18:32
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

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#3

Re: probleme mit threads

  Alt 6. Jul 2004, 20:05
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
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#4

Re: probleme mit threads

  Alt 7. Jul 2004, 10:26
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: probleme mit threads

  Alt 7. Jul 2004, 10:47
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#6

Re: probleme mit threads

  Alt 7. Jul 2004, 10:56
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;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: probleme mit threads

  Alt 7. Jul 2004, 11:00
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#8

Re: probleme mit threads

  Alt 7. Jul 2004, 11:10
man wächst mit seinen aufgaben
davon mal abgesehn arbeite ich lieber an etwas nützlichem
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: probleme mit threads

  Alt 7. Jul 2004, 11:14
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#10

Re: probleme mit threads

  Alt 7. Jul 2004, 11:24
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:18 Uhr.
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