Autor Beitrag
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mo 12.05.03 14:22 
Hallo Leute,

ich stehe im Moment auf dem schlauch, warum greift in diesem Code der try..except-Block nicht ?

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
begin
  typfile := TStringList.Create;
  conffile := TStringList.Create;
  typfile.Clear; conffile.Clear; printerkonfig.Clear;
  typfile.LoadFromFile('prntyp.txt');
  for i := 0 to typfile.Count - 1 do begin
    if posn(printermodel.Text,typfile.Strings[i],1) > 0 then begin
      try
        conffile.LoadFromFile(copy(typfile.Strings[i],posn(';',typfile.Strings[i],2)+1,Length(typfile.Strings[i])));
      except
        printerkonfig.Items.Add('Keine Zusatzfächer');
      end;
    end;
  end;
  if conffile.Count > 0 then
    for j := 0 to conffile.Count - 1 do
      printerkonfig.Items.Add(copy(conffile.Strings[j],0,posn(';',conffile.Strings[j],1)-1));
end;
Nightfly
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 163



BeitragVerfasst: Mo 12.05.03 14:28 
bin auch kein experte, aber muß es nicht try except do heißen, wobei hinter except bloß steht bei welchem fehler er das hinter do geschriebene ausführen soll?
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 12.05.03 14:49 
Was heisst "greift nicht"?`

Setze mal einen Breakpoint auf die Zeile nach try. Kommt das Proggie überhaupt dahin?

Cu,
Udontknow
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mo 12.05.03 14:50 
Die Exception wird abgefangen, wenn ich das Programm nicht in der IDE ausführe. In der IDE kommt die Exception trotz des Blocks.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 12.05.03 14:52 
Einstellungsfrage -> Menü "Tools/Debugger-Optionen" -> "Sprach-Exceptions" -> bei Delphi-Exceptions stoppen.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 12.05.03 15:03 
Aha, das meintest du mit "greift nicht". :wink:

Ich würde nicht wie MathiasSimmack lösen, da dann eben wirklich gar keine Exceptions mehr berücksichtigt werden. Ein exit ist meist angebrachter.

Cu,
Udontknow
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 12.05.03 21:09 
exit? Warum? Wenn ich bis11 richtig verstanden habe, hat´s ihn wohl nur gestört/gewundert/genervt, dass Delphi bei Exceptions aussteigt, während sich die kompilierte Exe da ... hm, "kollegialer" verhält.

Für die Entwicklung ist es IMHO recht interessant, wenn man auf diese Weise auf mögliche Fehlerquellen aufmerksam gemacht wird. In der Praxis allerdings wünscht man sich, dass das Programm die unschöne Fehlerbox abfängt und evtl. eine eigene Meldung präsentiert. (o.ä.)

Exceptions werden trotz der Einstellung auch weiterhin berücksichtigt, nur bleibt Delphi (im Gegensatz zur Grundeinstellung) eben still, wenn du das Programm aus der IDE heraus startest.

Gruß.
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mo 12.05.03 21:23 
Mathias hat dort vollkommend Recht. Diese Exception tritt ja nur dann auf, wenn er die Datei nicht in die Stringliste laden kann. Ich war mir eigentlich auch die ganze Zeit ziemlich sicher, das ich keinen Fehler bei dem try..except-Block gemacht habe. Wie ich dann die EXE ohne IDE ausprobiert hatte und dann noch den Beitrag vom Mathias gelesen hatte, war mir alles klar warum in der IDE die Exception kam und außerhalb nicht.

Danke nochmals an alle beteiligten.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 12.05.03 22:23 
Nun, wie ich schon sagte, wenn ich ein Programm debugge, und mich erst durch hunderte "regulärer" Exceptions kämpfen müsste, die ich immer wieder durch F9 wegdrücken müsste, würde ich sehr schnell die Lust am Programmieren bekommen. "Mögliche" Fehlerquellen lasse ich in einem Log protokollieren.

Es ist eigentlich ein allgemeiner Grundsatz:
Fange alles, was du vorhersehen kannst, ab, die unvorhersehbaren Dinge sind Fälle für die TRY/EXCEPT/FINALLY Blöcke.

Cu,
Udontknow