Hallo zusammen.
Hier im Forum hab ich ja schon den Tipp gefunden wie man bei den Indys ein "OnError"-Event einbaut.
Das hab ich auch gemacht, hierfür erstmal vielen Dank.
Leider hab ich noch ein weiteres Problem.
Der Code läuft in einem eigenen Thread der vom Hauptprogramm gestartet wird.
Delphi-Quellcode:
private
procedure OnIndyError(fErrorType: TErrorType;fErrorMsg:
String);
...
...
...
constructor xxx.Create(Image: TPMultiImage; ToDo: Integer);
begin
.....
// Exceptionbehandlung für die Indy Komponenten
// Code aus Delphi Praxis
vIndyException:=TIndyException.Create;
vIndyException.OnError:=OnIndyError;
inherited Create(true);
end;
....
....
....
procedure xxx.HTTPAbfrage;
var
Parameter, Header, HTTPContent:
String;
begin
.....
try
HTTPContent := HTTP.Get(AbfrageURL + '
?' + Parameter);
// Starte HTTP Abfrage
HTTPAuswerten(HTTPContent);
except
HTTPContent := '
';
AnfrageStatus := mlsSendenFehler;
if PruefeInternetVerbindung
then begin
OnlineStatus := mlsOnline;
end else begin
OnlineStatus := mlsOffline;
end;
http.Disconnect;
end;
end;
....
....
....
procedure xxxx.OnIndyError(fErrorType: TErrorType; fErrorMsg:
String);
begin
LastIndyError := fErrorMsg;
end;
Das Abfragen funktioniert wunderbar.
Wenn ich jetzt aber z.B. bei der HTTP-Komponenten (TIdHTTP) einen Proxyserver eintrage den es nicht gibt, oder wenn ich den Code über einen Knopf schnell hintereinander zweimal aufrufe (was gehen soll), versucht er das GET und bringt danach die Meldung
Win32Error. Fehler Code:5
Zugriff verweigert.
Danach geht die komplette Anwendung zu. Was könnte das sein ?
Liegt es evtl. daran das ich versuche, falls eine Connection da ist, da erst ein disconnect zu machen ?
Hab leider keine Variante gefunden wie ich sonst ein laufendes "GET" abbrechen kann.