Einzelnen Beitrag anzeigen

Photoner

Registriert seit: 6. Dez 2012
Ort: Nürnberg
103 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Vorsicht! statisches Array mit Startindex>0

  Alt 27. Feb 2015, 12:42
Delphi-Version: XE5
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
Chris
  Mit Zitat antworten Zitat