Autor Beitrag
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Do 13.01.05 22:20 
Hallo,

ich stehe mal wieder vor einem Problem:
In einer Schleife entpacke ich einige Daten mit der zLib-Unit. Leider kommt es ab und an vor, dass auch fehlerhafte Dateien dabei sind und deshalb eine Fehlermeldung ausgegeben wird. Diese Fehler fange ich mit einem try-except-Block ab. Das ist zwar nicht schön, aber da ich leider auf die Stream-Methoden von zLib zurückgreife, kann ich den Fehler anders nur schwer abfangen.
Trotzdem möchte ich das die Schleife weiter durchläuft, aber nach dem Fehler wird die Prozedur immer abgebrochen. Der Abschnitt, der den Fehler auslöst, sieht wie folgt aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
//For-Schleife...
//Klasse erstellen
//in der Klasse kommt folgender Abschnitt vor, der den Fehler erzeugt...
  try
    DezipStream := TZDecompressionStream.Create(ZipStream);
  except
    {nothing}
  end;
//Klasse freigeben...
//Schleife Ende
Hat jemand eine Ahnung wie ich diese Fehler einfach ignorieren kann ohne das der Programmablauf unterbrochen wird?

Vielen Dank,
Hans-Peter

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Do 13.01.05 22:27 
wulfskin hat folgendes geschrieben:
[Schleife trotz Exception weiterlaufen lassen]

Versuch mal:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure MachWas;
[...]
begin

  procedure MachWasSchwieriges(VonMirAusAuchMitParametern);
  begin
    try
      DezipStream := TZDecompressionStream.Create(ZipStream);
    except
      {nothing}
    end;
  end;

//For-Schleife...
//Klasse erstellen
//in der Klasse kommt folgender Abschnitt vor, der den Fehler erzeugt...
  MachWasSchwieriges((VonMirAusAuchMitParametern);
//Klasse freigeben...
//Schleife Ende
end;
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 13.01.05 22:29 
bringt er dir den fehler auch wenn du die EXE startest, also ohne auf F9 zu drücken? weil Delphi bringt die fehler trotzdem, während sie in der finalen exe nicht mehr vorkommen. darum kommen exceptions manchmal 2 mal vor...

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
wulfskin Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Do 13.01.05 22:43 
JayEff hat folgendes geschrieben:
bringt er dir den fehler auch wenn du die EXE startest, also ohne auf F9 zu drücken? weil Delphi bringt die fehler trotzdem, während sie in der finalen exe nicht mehr vorkommen. darum kommen exceptions manchmal 2 mal vor...
Ja die Schleife wird auch in der Exe abgebrochen, die Fehler kommen dann aber natürlich nicht.

Danke Robert. Manchmal kann die Lösung doch so einfach sein und man kommt nicht drauf ;)! Ich teste das mal, aber ich glaube so sollte es wirklich gehen!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Do 13.01.05 22:50 
JayEff hat folgendes geschrieben:
[...]Delphi bringt die fehler trotzdem, während sie in der finalen exe nicht mehr vorkommen.[...]

Dennoch müsste eigentlich die Schleife trotzdem weiterlaufen - daher mein Vorschlag, den kritischen Code in eine eigene Prozedur zur weiteren Untersuchung auszulagern.