AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi socket fehler stoppen
Thema durchsuchen
Ansicht
Themen-Optionen

socket fehler stoppen

Ein Thema von G G · begonnen am 4. Okt 2004 · letzter Beitrag vom 12. Apr 2005
Antwort Antwort
G G

Registriert seit: 17. Jun 2004
192 Beiträge
 
#1

socket fehler stoppen

  Alt 4. Okt 2004, 22:16
hi leute ich hab ein Prog geschrieben, dass mit idhttp über einen proxy sich verbinden soll, nun ist es so dass der proxy manchmal nicht online ist, aber wenn das programm nun ausgeführt wird und der proxy nicht online ist, wird eine socket-fehlermeldung zurückgegeben. Kann man diese Warungen unterdrücken, und das program einfach ganz normal weiter ausführen lassen


idhttp1.get('http://google.com');

try finally usw geht auch nicht, da kommt trotzdem der fehler.
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: socket fehler stoppen

  Alt 5. Okt 2004, 00:12
Delphi-Quellcode:
  try
    idhttp1.get('http://google.com');
  except
    on e:EIdSocketError do begin //IdException in Uses-Klausel eintragen!
      //do nothing...
    end;
  end;
hth

be blessed
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: socket fehler stoppen

  Alt 5. Okt 2004, 09:23
Moin!

@Meta777:
Was soll denn da ein Except Block anstatt einem Finally Block anderes bewirken? Das Problem liegt doch grundlegend woanders...

@G G:
2 Möglichkeiten die mir zu dem Problem einfallen:

1. Hast du bedacht, dass Delphi die Exception trotzdem anzeigt, wenn das Programm unter Delphi gestartet wird? (Trotz eines Try/Except bzw. Try/Finally Blockes)
2. Sockets arbeiten eigentlich immer mit Threads, daher kann die Exception asynchron zu dem Get Aufruf auftreten. Mit anderen Worten: Du klammerst zwar den Aufruf von Get() in einen solchen Try/.... Block, aber die Exception passiert später. Bei den Indy Komponenten kenne ich mich gar nicht aus, aber die TServerSocket und TClientSocket haben für den Fall eines Fehlers ein OnError CallBack mit dem man(n) Exceptions/Fehler anzeigen kann bzw. die Fehlerausgabe unterdrücken kann...

MfG
Muetze1
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#4

Re: socket fehler stoppen

  Alt 5. Okt 2004, 12:49
Hallo

@Muetze1

Ein finally und ein except-Block verhält sich schon grundsätzlich verschieden. By try - finally wird nur dafür gesorgt das das was nach finally kommt auch auf jeden Fall durchlaufen wird, die Exception wird aber noch nach "oben", also wenn kein except-Block mehr kommt bis zum User, weitergeleitet. Der try-except-Block fängt den Fehler komplett ab und man bekommt quasi nichts mehr von ihm mit. Und die Indy-Komponenten hauen dir tatsächlich den Fehler direkt um die Ohren und es gibt keinen OnError-Event wie bei TServer- oder TClient-Socket.
Gruß
UweR
  Mit Zitat antworten Zitat
G G

Registriert seit: 17. Jun 2004
192 Beiträge
 
#5

Re: socket fehler stoppen

  Alt 5. Okt 2004, 21:09
nicht streiten leute

Also der code von meta777 hat genau des gemacht was ich wollte, super

danke für die vielen hilfen
  Mit Zitat antworten Zitat
jaduke

Registriert seit: 18. Feb 2005
3 Beiträge
 
#6

Re: socket fehler stoppen

  Alt 11. Apr 2005, 22:37
Hi,

hab auch so ein Problem mit dem EIdSocketError... Habe in die uses-Klausel die IdException eingebunden aber er sagt mir trotzdem das EIdSocketError ein "nicht deklarierter Bezeichner" ist.
Hier ist mein Program Code


Delphi-Quellcode:
procedure TWebSpider.Nachricht_holen;
VAR tmp : String;

BEGIN
  IF NOT (Length(Server_IP.Text) = 0) THEN
  BEGIN
    try
      IdFTP1.Host := 'Server_IP.Text';
      IdFTP1.Port := 21;
      tmp := copy(RadioGroup1.Items[RadioGroup1.ItemIndex],2,
                  Length(RadioGroup1.Items[RadioGroup1.ItemIndex]));
      IdFTP1.Username := tmp;
      IdFTP1.Password := 'Gote_San_seine_Nachricht';
      IdFTP1.Connect;
      IF IdFTP1.LastCmdResult.NumericCode < 400 THEN
      BEGIN
        IdFTP1.Get('motd.txt','motd.txt');
        IdFTP1.Quit;
        Memo1.Lines.LoadFromFile('motd.txt');
        Memo1.Visible := TRUE;
        DeleteFile('motd.txt')
      END
      ELSE ShowMessage('Bitte ueberpruefen Sie Ihre Eingaben!');
      IF NOT FileExists('motd.txt') THEN ShowMessage('Es ist ein Fehler '
                                                     +' unbekannter Art aufgetr'
                                                     +'eten! Bitte ueberpruefen'
                                                     +'Sie Ihre Eingaben!');
    except on EIdSocketError DO ShowMessage('Bitte ueberpruefen Sie Ihre Eingaben!');
    END
  END
  ELSE ShowMessage('Bitte geben Sie die Server-IP ein!')
END;

kann mir wer helfen???

danke schon mal
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#7

Re: socket fehler stoppen

  Alt 12. Apr 2005, 11:09
Hallo Jaduke,

das sollte so eigentlich funzen, hab es gerade mal ausprobiert und bei mir mosert Delphi nicht rum. Welche Indy-Version hast du den im Einsatz? Bei mir geht der folgende Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  StdCtrls, IdException;

type
  TForm1 = class(TForm)
    Button1: TButton;
    IdTCPClient1: TIdTCPClient;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   try
      IdTCPClient1.Connect(1000);
   except
      on e : EIdSocketError do begin
         MessageDlg(E.Message, mtError, [mbOK], 0);
      end;
   end;
end;

end.
mit Indy 9.0.14 ohne Probleme.
Gruß
UweR
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: socket fehler stoppen

  Alt 12. Apr 2005, 13:32
Moin!

Die Exception ist in der Unit IdException deklariert, die der Fragesteller nicht eingebunden hat, der Nachfrager aber schon...

MfG
Muetze1
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:15 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