Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Problem bei meiner If-anweisung


Smartie - Mi 04.05.05 12:05
Titel: Problem bei meiner If-anweisung
Servus!

Es ist schon fast peinlich, aber ich hab ein Problem bei einer If-anweisung.

Ich habs durchgeschaut, ich hab es auch mit anderen änlichen IF-Anweisungen verglichen, ich kann mir den Fehler nicht erklären, wo er herkommen soll.

Mein Code sieht so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure Bereichskontrolle;
//var a : String;
Begin
  if (ZielArray[z] <= Bereichsmax[z]) and (ZielArray[z] >= Bereichsmin[z]) then
    begin
      E4_Abfrage := false;
    end
  else
    begin
      E4_Abfrage := true;
      ERROR_Bereich := 'ERROR4';
      ZielArray[z] := FloattoStr(ZielArray[z]) + ' ERROR4';
    end;
end;


So, mein "problem" ist nun, daß sobald die IF-Bedingung nicht zutrifft, er gar nicht in die else-anweisung springt, sondern gleich zum ende geht.

:nixweiss: :les: :nixweiss: :gruebel: :nixweiss:

Wenn jemand weiß, was ich hier nun wieder für n Schleiß übersehen hab, wär ich dankbar für einen entsprechenden Hinweis.

Lieben Gruß und Danke

Smartie


HolgerB - Mi 04.05.05 12:15

Hallo Smartie,

prüfe mal die Werte in deinen Variablen. Der Code ist meines Wissens nach richtig. Vielleicht ist min > max?

Gruß
Holger


Smartie - Mi 04.05.05 12:16

Also, er macht diesen Scheiß nur wenn es eben nicht stimmt.

außerdem, wenn min<max wäre, wär die if-anweisung jaschließlich auch nichterfüllt, und er müte auch dann in die else springen.

*Weitergrübelt*

Lieben Gruß

Smartie


delfiphan - Mi 04.05.05 12:17

Einen Fehler seh ich direkt keinen. Der Fehler ist so halt evtl. nicht reproduzierbar.
user profile iconSmartie hat folgendes geschrieben:
So, mein "problem" ist nun, daß sobald die IF-Bedingung nicht zutrifft, er gar nicht in die else-anweisung springt, sondern gleich zum ende geht.

Wie kommst du darauf? Bist du im Einzelschritt durchgegangen?


jasocul - Mi 04.05.05 12:18

Es gibt eigentlich nur einen Fall, warum das so sein sollte:
Der Compiler hat deinen Source "optimiert". D.h.: Dass, was im "else" steht ist überflüssig. Meint zumindest der Compiler.
Du siehst das ganz schnell, wenn du alles kompilierst und vor den Source-Zeilen kein blauer Punkt ist.

Aber eigentlich glaube ich das in dem Fall nicht.

Am besten alles Speichern, komplett kompilieren und dann nochmal prüfen.


Smartie - Mi 04.05.05 12:19

user profile icondelfiphan hat folgendes geschrieben:

Wie kommst du darauf? Bist du im Einzelschritt durchgegangen?


Ja, ganz genau! Das mach ich immer, wenn ich einen Fehler nicht fidne, schau ich eben mal an, wie er es durchläuft, und laß mir auch die werte anzeigen.
Und da seh ich, daß er von Zeile 4 sofort in Zeile 14 springt.


jasocul - Mi 04.05.05 12:21

Noch eine Idee:
Bekommst du vielleicht eine Exception und lässt dir die nicht anzeigen? Kann man ja in der IDE ausschalten.


delfiphan - Mi 04.05.05 12:23

Versuch mal try..except und kompilier den Block mit {$r+}.


Smartie - Mi 04.05.05 12:33

Aua,

ok, ich hab in ner halben Stunde Feierabend für heute, kümmere mich am Montag darum. aber da scheint es grad irgednwo ne richtig böse Exception zu geben, Danke Jasocul! Das Problem scheint darin zu lieben, der ZielArray[z] ein Array of Variant ist.

Danke und lieben Gruß

Smartie