Autor Beitrag
Krischa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

Windows 7 64 Bit
Delphi 2007
BeitragVerfasst: Mo 08.06.09 09:44 
Hi,
mein Program zeigt mir beim Testen die Fehlermeldung 'Fehler bei Bereichsprüfung' an. Ich kann aber kein Fehler feststellen. Wenn ich das Programm Zeile für Zeile durchlaufe kommt an der Stelle der Fehler.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
case stsa of                                                        //
  0:stsa:=query3.fieldbyname('MW0').Value;                          //
  1:stsa:=query3.fieldbyname('MW1').Value;                          //
  2:stsa:=query3.fieldbyname('MW2').Value;                          //
end;


stsa hat den Wert 2 und die Felder die ich auslese sind auch nicht leer. Was soll ich aus der Fehlermeldung schließen?


Zuletzt bearbeitet von Krischa am Mo 08.06.09 10:18, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 08.06.09 09:47 
Die Fehlermeldung besagt normalerweise, dass die Grenzen beim Zugriff auf ein Array überschritten wurden.

Bei einem Datenbankzugriff kenne ich den Fehler nicht, ich weiß nicht wodurch der an der Stelle verursacht werden kann. Aber ich vermute einmal, dass die Felder vielleicht nicht gefunden werden. :gruebel:
oki
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40

Win XP
Delphi 2007 Prof
BeitragVerfasst: Mo 08.06.09 09:58 
Du machst ein case auf stsa und weist in der Case-Anweisung stsa einen Wert zu? Könnte das der Fehler sein? Hab ich so nocht nicht ausprobiert.

Gruß oki

_________________
42
Krischa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

Windows 7 64 Bit
Delphi 2007
BeitragVerfasst: Mo 08.06.09 10:06 
Daran liegt es nicht. Habe das Programm noch 2 mal durchlaufen lassen und auf einmal ist er an der Stelle nicht mehr hängen geblieben sonder ein paar Zeilen weiter.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if prod[j].steuabw=true then
begin
  h1:=StringReplace(floattostr(prod[i].steu),',','.',[rfReplaceAll, rfIgnoreCase]);
  nachricht := nachricht + slinebreak + 'TAX+7+VAT+++:::' +h1 + #39; nz := nz + 1;
end;


Wenn prod[j].steuabw false ist macht er keine Probleme aber sobal einmal ein true auftaucht bringt er mir die gleiche Fehlermeldung wie oben 'Fehler bei Bereichprüfung' ERangeError. Die Fehlermeldung kommt schon bei der Überprüfung.
Ich verstehe die Welt nicht mehr :(
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 08.06.09 10:27 
An der Stelle wäre das prod[j] der wahrscheinlichste Kandidat, bist du sicher, dass j nicht über den Bereich hinauslaufen kann?

Eine andere Möglichkeit wäre ein Speicherfehler, d.h., dass du irgendwo Speicher überschrieben hast, und daher irgendwo anders pseudozufällig Fehler auftreten.

user profile iconKrischa hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
if prod[j].steuabw=true then					
Dazu dann noch der Standardhinweis:
Der Vergleich mit Booleanwerten (z.B. if x = true then) ist nicht nur unschön und unlogisch, sondern falsch.
Hier habe ich mal ein kleines Beispiel gebastelt, wann es schief geht:
www.delphi-forum.de/....php?p=548760#548760
Mehr dazu steht hier unter Anfängerfehler:
www.delphi-treff.de/...olean-werten/page/4/
Und warum das auch vollkommen unlogisch ist:
www.delphi-forum.de/....php?p=560637#560637
oki
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40

Win XP
Delphi 2007 Prof
BeitragVerfasst: Mo 08.06.09 10:29 
prod[i]?
gibt es das Arrayfeld mit dem Index i in prod?

[edit] Hmmm :?: da war kein roter Kasten [/edit]

_________________
42
der organist
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Mo 08.06.09 10:30 
user profile iconKrischa hat folgendes geschrieben Zum zitierten Posting springen:
Daran liegt es nicht. Habe das Programm noch 2 mal durchlaufen lassen und auf einmal ist er an der Stelle nicht mehr hängen geblieben sonder ein paar Zeilen weiter.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if prod[j].steuabw=true then
begin
  h1:=StringReplace(floattostr(prod[i].steu),',','.',[rfReplaceAll, rfIgnoreCase]);
  nachricht := nachricht + slinebreak + 'TAX+7+VAT+++:::' +h1 + #39; nz := nz + 1;
end;


Wenn prod[j].steuabw false ist macht er keine Probleme aber sobal einmal ein true auftaucht bringt er mir die gleiche Fehlermeldung wie oben 'Fehler bei Bereichprüfung' ERangeError. Die Fehlermeldung kommt schon bei der Überprüfung.
Ich verstehe die Welt nicht mehr :(


sicher dass das i nich über die Grenzen geht, wenn eigentlich ein j gemeint ist?

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
Krischa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

Windows 7 64 Bit
Delphi 2007
BeitragVerfasst: Mo 08.06.09 10:37 
Ahhhh,
ich sollte nicht so früh mit Porgrammieren anfangen. Es lag am j was eigentlich ein i sein müsste. *schlafen geh* :shock: