Hallo nochmal liebe Delphi-Community,
ich muss euch hier und jetzt direkt nochmal nerven xD
Und zwar geht es darum, dass ich ein großes Problem festgestellt habe in dem Programm, welches ich tunlichst noch beheben möchte vor der Abgabe.
Ich habe auch schon in sehr vielen Foren und natürlich auch hier die Suchfunktion genutzt, jedoch keine gnaue Antwort auf mein Problem gefunden, da nach meinem Wissenstand alles richtig gemacht ist.
Es geht um folgendes Problem:
Wenn ich die Snake.exe starte, jedoch keine Internetverbindung besteht, und versuche über das Programm mir den Highscore anzeigen zu lassen oder einen Highscore einzutragen, dann spuckt das System einen schwerwiegenden Fehler aus:
Moderiert von
Narses: Bild als Anhang hochgeladen.
Der Fehler wird in Zeile 21 der folgenden function ermittelt.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| function TForm1.SendPostData(Ahttp: TIdHTTP; const AtoURL: string; const aParams: TStrings): string; Var lStream: TMemoryStream; lParams: TStringStream; I: Integer; begin Result:=''; if not Assigned(aHttp) then exit; lStream := TMemoryStream.create; lParams := TStringStream.create(''); try AHTTP.Request.ContentType := 'application/x-www-form-urlencoded'; for I:=0 to aParams.Count-1 do lParams.WriteString(aParams[I] + '&'); try AHTTP.Post(AtoURL, lParams, lStream); except MessageBox(Self.Handle, 'Es konnte nicht auf die Online ' + 'Highscoreliste zugegriffen werden. Bitte stellen sie sicher, ' + 'das eine Verbindung zum Internet besteht.', 'Fehler', MB_OK or MB_ICONSTOP); end; SetLength(Result,lStream.Size); lStream.Position:=0; lStream.ReadBuffer(Result[1],lStream.Size); finally lParams.Free; lStream.Free; end; end; |
Nun die Frage: Warum zur Hölle, fängt der den Fehler nicht ab. Ich hab da ja nicht umsonst try/except/finally benutzt. Und soviel wie ich jetzt mitlerweile erfahren habe, ist das genau die richtige Art und Weise einen solchen fehler zu catchen und eine Fehlermeldung entsprechend auszugeben.
Ich hoffe ihr könnt mir weiterhelfen.
Achso: Wer den fehler einmal reproduzieren möchte einfach eine der lten exen nehmen (müsste in jeder so sein) oder
HIER die neuste Version herunterladen.
Grüße - Kevin
//EDIT: Habe auch gerade probiert unter uses IdException mit einzubinden und dann mittels "on EIdSocketError do" den Fehler abzufangen -> Ohne erfolg
Ich dachte ich wäre stark eingeschränkt mit meinen -16 Diopthrin aber das Programm is ja noch schlimmer wennichs doch sogar vorhersage welcher Fehler kommen wird xD
---
Moderiert von
Narses: Beiträge zusammengefasst---
Sorry für den Doppelpost - aber ich war so dreist und habe um die Übersicht ein wenig zu behalten kein edit machen wollen.
Problem ist gelöst und weil ich es selbst hasse wenn jemand so nen Problem postet und die Lösung nirgends steht erklär ich meinen Fehler schnell:
Die Exception wurde vom Debugger der IDE (in meinem Fall Delphi 7) gefunden bevor das Programm die Exception überhaupt erst abfangen konnte. Kompiliert als exe datei funktioniert es (fast) einwandfrei.(-> Fehler an anderer Stelle gemacht)
Grüße - Kevin