Hi!
Es gibt die Möglichkeit statische Arrays (Typ egal) bei z.B. bei Index 1 anfangen zu lassen. Macht man dies und greift in einer Schleife- weil man es gewöhnt ist und es schneller zu tippen ist- mit Startindex 0 zu, liefert das dann falsche Werte. Halte ich für brandgefährlich.
Vieleicht ist das für viele eine olle Kamelle, aber mir war das so nicht bewusst und ich werde in Zukunft lieber mit Low() und High() arbeiten und würde dies auch jedem empfehlen.
Codebeispiel Konsolenanwendung:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
Arr :
Array [1..2]
of Boolean;
i : Integer;
begin
try
{ TODO -oUser -cConsole Main : Code hier einfügen }
Arr[1] := True;
Writeln(BoolToStr(Arr[1]));
Arr[2] := True;
Writeln(BoolToStr(Arr[2]));
Writeln('
');
//Writeln(BoolToStr(Arr[0])); // Zur Kompilierzeit [dcc32 Fehler] Project1.dpr(20): E1012 Konstantenausdruck verletzt untere Grenzen
for I := 0
to High(Arr)
do
Writeln(BoolToStr(Arr[i]));
Writeln('
');
for I := Low(Arr)
to High(Arr)
do
Writeln(BoolToStr(Arr[i]));
Readln;
except
on E:
Exception do
Writeln(E.ClassName, '
: ', E.
Message);
end;
end.
Ergibt:
-1
-1
0
-1
-1
-1
-1