Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Argument außerhalb des Bereichs (https://www.delphipraxis.net/206278-argument-ausserhalb-des-bereichs.html)

EdAdvokat 6. Dez 2020 17:41

Delphi-Version: 10.2 Tokyo

Argument außerhalb des Bereichs
 
Ich experimentiere ein wenig mit TList und habe dazu eine kurze Routine geschrieben, die zwar aufgerufen wird und die Werte auch in einer Listbox ausgibt, jedoch die Fehlermeldung
"Argument außerhalb des Bereichs" ausgibt. Ich komme einfach nicht auf die Ursache für diesen Fehler.
Delphi-Quellcode:
procedure TForm29.btn5Click(Sender: TObject);
var List: TList<Integer>;
i: int32;
begin
  List := TList<Integer>.Create; { Create List }
try
  List.Add(100); { Add Items }
  List.Add(200);
  List.Add(300);
  List.Add(400);

  for i := 0 to High(List.Items[i]) do

  Lst1.Items.Add(inttostr(List.items[i]));
 
finally
  List.Free;
end;
end;

Der schöne Günther 6. Dez 2020 17:56

AW: Argument außerhalb des Bereichs
 
Geh doch im Debugger einfach mal mit rein und setze dir mal einen Haltepunkt auf die Zeile
Delphi-Quellcode:
Lst1.Items.Add(inttostr(List.items[i]));
.

Dann siehst du es bestimmt 😉

EdAdvokat 6. Dez 2020 18:18

AW: Argument außerhalb des Bereichs
 
leider sehe ich das nicht, denn das habe ich bereits mehrfach versucht und auch versuchtsweise ...items[i-1] eingegeben doch ich sehe es einfach nicht.
Was muß ich verfolgen? I wird bis 4 hoch gezählt. Daraufhin habe ich versucht
Delphi-Quellcode:
for i := 0 to High(List.Items[i-1]) do
zu verwenden, aber auch das hilft nichts.
Ich finde einfach nicht die Ursache.

Redeemer 6. Dez 2020 18:24

AW: Argument außerhalb des Bereichs
 
Delphi-Referenz durchsuchenSystem.High ist nur für Arrays das, was du denkst.

EdAdvokat 6. Dez 2020 18:32

AW: Argument außerhalb des Bereichs
 
Gebe ich
Delphi-Quellcode:
for i := 0 to 3 do
für den konkreten Fall ein, funktioniert es, doch ich wollte die ganze Sache dynamisch gestalten und nicht jedesmal den
Höchstwert der Items direkt eingeben. Gibt es dafür nicht eine bessere Lösung?

TomyN 6. Dez 2020 18:38

AW: Argument außerhalb des Bereichs
 
Code:
  for i := 0 to High(List.Items) do
:-)

EdAdvokat 6. Dez 2020 18:42

AW: Argument außerhalb des Bereichs
 
Delphi-Quellcode:
 for i := 0 to High(List.Items) do
das habe ich auch bereits mehrfach versucht und es get nicht, denn er will eine [] haben...

mmw 6. Dez 2020 18:43

AW: Argument außerhalb des Bereichs
 
halllo,
eventuell so

Delphi-Quellcode:
List.Count
Gruß

EdAdvokat 6. Dez 2020 18:48

AW: Argument außerhalb des Bereichs
 
list.count klappt auch nicht.

mmw 6. Dez 2020 18:51

AW: Argument außerhalb des Bereichs
 
ich hab's so gemacht und es kommt keine Fehlermeldung

Delphi-Quellcode:
var List: TList<Integer>;
i: int32;
begin
  List := TList<Integer>.Create; { Create List }
try
  List.Add(100); { Add Items }
  List.Add(200);
  List.Add(300);
  List.Add(400);
   List.Add(4200);

for i := 0 to List.Count-1 do

  Lst1.Items.Add(inttostr(List.items[i]));

finally
  List.Free;
end;

Gru0

Poelser 6. Dez 2020 18:55

AW: Argument außerhalb des Bereichs
 
Wenn schon
Delphi-Quellcode:
List.Count
, dann aber
Delphi-Quellcode:
-1

EdAdvokat 6. Dez 2020 18:57

AW: Argument außerhalb des Bereichs
 
for i := 0 to List.Count-1 do

Lst1.Items.Add(inttostr(List.items[i]));

finally
List.Free;
end;

Danke das war es!!! List.count-1, warum bin ich da nicht gleich darauf gekommen.

himitsu 6. Dez 2020 19:22

AW: Argument außerhalb des Bereichs
 
Nur noch als Hinweis, aber High war hier nicht die größe eines "Arrays", sondern der größte Wert des Typen.

Low und High von einem Enum, da könnt ihr euch bestimmt denken was es ist,
nichtwar?
-> Der erste und letzte "offizielle" Wert.

Bei anderen "ordinalen" Typen ist es der erste und letzte Wert des Wertebereichs,
also bei einem Byte wären es 0 und 255 und bei einem Integer (LongInt) halt -2147483648 und +2147483647. :angle:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz