Autor Beitrag
seddto
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Di 01.06.04 14:53 
Ich habe folgendes Probleme:
Ich verschicke mit den Indy Kompos eine eMail. Ich habe die "kritischen Anweisungsblöcke" mit "try...except" so eingeschlossen, das auch im Fehlerfall keine für den Anwender schwer verständlichen Fehlermeldungen ausgegeben werden, sondern im Except-Block nur eine Messagebox aufgeht, die besagt, das die Mail nicht gesendet wurde. Damit ich das Programm weiter verbessern kann möchte ich die vollständige fehlermeldung allerdings in einer Textdatei speichern. Ich habe es nit Syserrormessage(getlasterror) probiert, das funktioniert ja aber nur wenn es sich um einen System Error handelt wie zum Beispiel Computer ist nicht mit dem Internet verbunden oder ähnliches. Wenn aber ein anderer Fehler auftritt wie zb. Empfänger Adresse falsch oder Mailbox voll handelt es sich nicht um einen Systemerror und die im Fehler log steht dann sowas sinnvolles wie "Fehlermeldung: Der Vorgang wurde erfolgreich beendet." Weiss jemand wie ich die nicht-System-fehlermeldungen speichern kann?
FaTaLGuiLLoTiNe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 5

Windows 7, Windows 8.1
Delphi XE
BeitragVerfasst: Di 01.06.04 15:00 
Die Klasse Exception besitzt eine Eigenschaft Message, die Dir Deine Fehlermeldung liefern sollte ...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
try
 ...
except
 On E.Exception
  do begin
   ShowMessage(E.Message);
  end;
end;


// edit: Dieser Code hat noch einen kleinen Fehler, den ich 2 Beiträge weiter unten korrigiert habe.

_________________
<< FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!


Zuletzt bearbeitet von FaTaLGuiLLoTiNe am Di 01.06.04 16:39, insgesamt 2-mal bearbeitet
seddto Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Di 01.06.04 15:19 
mhh bei dem Aufruf gibts bei mir ne Fehlermeldung! Wie muss ich die Klasse Exception den deklarieren?
FaTaLGuiLLoTiNe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 5

Windows 7, Windows 8.1
Delphi XE
BeitragVerfasst: Di 01.06.04 15:27 
Upps ... mein Fehler ... bin heute irgendwie wirsch ...

statt On E.Exception muss es heissen On E:Exception (mit Doppelpunkt)!

Extra deklarieren musst du die Klasse nicht, sie ist in der Unit SysUtils bereits vorhanden.

_________________
<< FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
fuba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win7
D7 Ent.
BeitragVerfasst: Sa 28.07.07 15:43 
suche genau sowas auch, aber:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    RenameFile(ExtractFilePath(ParamStr(0)) + '2.txt', ExtractFilePath(ParamStr(0)) + '123?5.txt');
  except
    on E:Exception do
    begin
      ShowMessage(E.Message);
    end;
  end;
end;


das ist mein code, nur ich bekomm keinen fehler zurrück.
Also ich bekomm GARNICHTS zurück, als würde ich nichts machen.


Mache ich das ganze aber so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button2Click(Sender: TObject);
begin
  if NOT RenameFile(ExtractFilePath(ParamStr(0)) + '2.txt', ExtractFilePath(ParamStr(0)) + '123?5.txt'then
  RaiseLastOSError;
end;


bekomme ich das zurück:
ausblenden Quelltext
1:
2:
Systemfehler.  Code: 123.
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.


und genau das möchte ich im string format bekommen,
damit ich es in ne log file speichgern kann oder was auch immer.
müsste doch möglich sein oder?
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Sa 28.07.07 18:04 
Wenn du das Fragezeichen aus dem Dateinamen rausnimmst, sollte es schon gehen.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
fuba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win7
D7 Ent.
BeitragVerfasst: Sa 28.07.07 19:58 
user profile iconjakobwenzel hat folgendes geschrieben:
Wenn du das Fragezeichen aus dem Dateinamen rausnimmst, sollte es schon gehen.


ok nochmal zum mitschreiben...
Dieses Thema umfasst "Fehlermeldung speichern"

lies bitte nochmal ALLES von ganz oben und antworte mir dann nochmal :D
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 28.07.07 21:06 
Guck dir mal das Ereignis Application.OnException in der Hilfe an.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 28.07.07 22:46 
ausblenden Delphi-Quelltext
1:
2:
3:
  if not RenameFile(ExtractFilePath(ParamStr(0)) + '2.txt', ExtractFilePath(ParamStr(0)) + '123?5.txt'then
    ShowMessage('Systemfehler! Fehlercode: ' + IntToStr(GetLastError)
      + ', Fehlermeldung: ' + SysErrorMessage(GetLastError));
fuba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win7
D7 Ent.
BeitragVerfasst: Do 30.08.07 19:38 
user profile iconjaenicke hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
  if not RenameFile(ExtractFilePath(ParamStr(0)) + '2.txt', ExtractFilePath(ParamStr(0)) + '123?5.txt'then
    ShowMessage('Systemfehler! Fehlercode: ' + IntToStr(GetLastError)
      + ', Fehlermeldung: ' + SysErrorMessage(GetLastError));


Jup, genau so funzt es!
Danke dir!