Entwickler-Ecke
Sonstiges (Delphi) - Fehler Handling
Marduk - Di 24.09.02 12:24
Titel: Fehler Handling
Hi Leute,
Ich habe ein Programm geschrieben, welches 1 mal wöchentlich eine Datei downloaden soll. Das klappt auch wunderbar, solange eine Internetverbindung vorhanden ist (logisch :lol: ).
Ist keine Verbindung da, bekomme ich einen Socketfehler (auch noch klar). Da das Programm aber auf nicht überwachten Rechnern laufen soll, soll da nicht die Fehlermeldung ewig stehen bleiben sondern das Programm weiterarbeiten, also eine Woche später den nächsten Versuch starten.
Ich habe es mit try...except versucht bekomme es aber nicht hin.
Ich schreib jetzt hier mal das Stückchen Quelltext rein,denke das ist die richtige stelle.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var
desttext,url:string; dest:tfilestream; log:textfile;
begin dest.free; desttext:=edit1.text; DeleteFile(desttext+'\update.zip'); zeit.Caption := FormatDateTime('d. mmmm yyyy hh:mm:ss', Now); statusbar1.SimpleText:='Bitte warten.Datei wird heruntergeladen'; url:=edit2.text; dest:= tfilestream.create(desttext+'\update.zip',fmcreate,fmsharedenynone); idhttp1.get(url,dest); statusbar1.simpletext:='Download erfolgreich.'; dest.free; |
Hab jetzt mal meine Versuche mit dem Fehlerhandling komplett rausgelassen. So wie es jetzt ist funzt das Programm, nur eben noch ohne Fehlerhandling :(
CenBells - Di 24.09.02 12:35
hi
probier das mal
Quelltext
1: 2: 3: 4: 5:
| try idhttp1.get(url,dest); except statusbar1.simpletext:='Download nicht erfolgreich.'; end; |
wenn das noch nicht klappt musst du wahrscheinlich für die komponente idhttp1 noch das ausschmeißen der fehlermeldung deaktivieren.
Gruß
Ken
Marduk - Di 24.09.02 12:51
und wo geht das ?
Marduk - Di 24.09.02 14:02
Jetzt bekomme ich ständig eine Adress Violation.
Hier mein Quelltext:
Quelltext
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: 35: 36:
| begin idhttp1.get(url,dest); statusbar1.simpletext:='Download erfolgreich.'; dest.free; WinExec(PChar('unzip.exe -o '+desttext+'/update.zip -d '+desttext), SW_HIDE);
NMSMTP1.Host := config.Items[7]; NMSMTP1.UserID := config.Items[8]; NMSMTP1.Connect; NMSMTP1.PostMessage.FromAddress := config.items[9]; NMSMTP1.PostMessage.ToAddress.Text := config.items[10]; NMSMTP1.PostMessage.Body.Text := 'Festplatte: '+chr(10)+label11.caption+chr(10)+label12.caption+chr(10)+prozent.caption+chr(10)+'Festplattenbelegung: '+sternletext.caption+chr(10)+'Download URL:'+edit2.text+chr(10)+' Gespeichert nach: '+edit1.text+chr(10)+'Gesendet am '+zeit.caption+chr(10)+'Gesendet durch: '+name.caption; NMSMTP1.PostMessage.Subject := domain.caption+' / '+zeit.caption+config.items[11]; NMSMTP1.SendMail; Statusbar1.simpletext:='Download erfolgreich. Mail wurde verschickt!'; NMSMTP1.Disconnect; AssignFile(log,'log.txt'); Append(log); Writeln(log,zeit.caption+': Update durchgeführt. Mailversand an: '+config.items[10]+'.'); CloseFile(log); DeleteFile(desttext+'\update.zip'); end;
except on EIdException do begin statusbar1.simpletext:='Download nicht erfolgreich. Vielleicht stimmen ihre Proxy-Einstellungen nicht.'; AssignFile(log,'log.txt'); Append(log); Writeln(log,zeit.caption+': Fehler beim Download der Datei'); CloseFile(log); end;
end;
end; |
Ausserdem verschwinden plötzlich meine Buttons für den Download :evil: beim draufdrücken. Aber erst seit ich das Fehlerhandling eingebaut hab.
Bitte helft mir.... :crying:
Marduk - Di 24.09.02 14:04
Hier nochmal die abgekürzte Version ohne überlange Zeilen
Quelltext
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: 35: 36: 37:
| try begin idhttp1.get(url,dest); statusbar1.simpletext:='Download erfolgreich.'; dest.free; WinExec(PChar('unzip.exe -o '+desttext+'/update.zip -d '+desttext), SW_HIDE);
NMSMTP1.Host := config.Items[7]; NMSMTP1.UserID := config.Items[8]; NMSMTP1.Connect; NMSMTP1.PostMessage.FromAddress := config.items[9]; NMSMTP1.PostMessage.ToAddress.Text := config.items[10]; NMSMTP1.PostMessage.Body.Text := 'Festplatte: '+chr(10); NMSMTP1.PostMessage.Subject := domain.....; NMSMTP1.SendMail; Statusbar1.simpletext:='Download erfolgreich. Mail wurde verschickt!'; NMSMTP1.Disconnect; AssignFile(log,'log.txt'); Append(log); Writeln(log,zeit.caption+': Update durchgeführt. Mailversand; CloseFile(log); DeleteFile(desttext+'\update.zip'); end;
except on EIdException do begin statusbar1.simpletext:='Download nicht erfolgreich. Vielleicht...; AssignFile(log,'log.txt'); Append(log); Writeln(log,zeit.caption+': Fehler beim Download der Datei'); CloseFile(log); end;
end;
end; |
CenBells - Di 24.09.02 15:28
an welcher stelle bekommst du denn nun genau die accessviolation?
Du solltest aber eher ShellExecuteEx oder sogar Createprocess verwenden anstelle von WinExec
Des weiteren brauchst du kein begin end zwischen try except
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!