Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array type required (https://www.delphipraxis.net/100035-array-type-required.html)

P4CM4N 21. Sep 2007 11:38


Array type required
 
Hi, wenn ich folgendes in Delphi starte kommt die Fehlermeldung "arry type required". Was ist da falsch?
Delphi-Quellcode:
unit Unit2;

interface
type zahl=Array [1..49] of Integer;
procedure Lotto (a:integer; var zahl);
implementation

procedure Lotto (a:integer; var zahl);

begin
a:=0;
repeat
zahl[a]:=0;
a:=a+1;
until a=49;
Das ganze ist in einer eigenen unit und soll später in die ertse Unit übergeben werden.

Danke für eure Hilfe

jbg 21. Sep 2007 11:41

Re: Array type required
 
Zitat:

Zitat von P4CM4N
procedure Lotto (a:integer; var zahl);

Darum hat man in Delphi den "T"-Prefix vor Typen. Da sieht man auf den ersten Blick, was hier falsch ist.

sirius 21. Sep 2007 11:43

Re: Array type required
 
Du willst ein array übergeben, dass du im Typ Zahl deklariert hast.
1. Die Variable a brauchst du anscheinend nicht als Übergabevariable. Leg sie mal lokal an!
2. übergib nicht einfach "var zahl" sondern "var irgednetwas:zahl". "Zahl" ist bei dir jetzt ein neuer Typ (ähnlich integer). Solche Typen benent man am besten immer mit einem T vorne an als "type TZahl=..." dann kannst du auch bessser "var Zahl:Tzahl" deklarieren.

P4CM4N 21. Sep 2007 11:48

Re: Array type required
 
Gut, es geht. Danke

ibp 21. Sep 2007 12:02

Re: Array type required
 
schau dir noch mal deine grenzen an im bezug auf das array und wie du es bearbeitest!

tipp wenn du feste grenzen und einen festen ablaufplan hast, dann nimm lieber eine for-schleife anstatt eines repeat/while konstrukts.

P4CM4N 21. Sep 2007 12:15

Re: Array type required
 
Ich hab das ganze eh nochmal ein bisschen geändert, weil ich kein so großes Arry brauche.
Trotzdem Danke

Muetze1 21. Sep 2007 15:43

Re: Array type required
 
Zitat:

Zitat von P4CM4N
Ich hab das ganze eh nochmal ein bisschen geändert, weil ich kein so großes Arry brauche.
Trotzdem Danke

Nur damit du den Hinweis verstehst: Du greifst auf Element 0 des Arrays zu, welches es ja nicht gibt, da dein Array von 1 an deklariert ist.

Ich empfehle dir dringend die Bereichs- und Überlaufprüfung in den Projektoptionen unter Compiler einzuschalten und das Projekt neu zu erstellen. Dann würdest du zumindest auf einen solchen Fehler zur Laufzeit hingewiesen.

P4CM4N 21. Sep 2007 15:57

Re: Array type required
 
Ja, also müsste das ganze bei a:=1 beginnen nicht wahr?

Muetze1 21. Sep 2007 16:45

Re: Array type required
 
Zitat:

Zitat von P4CM4N
Ja, also müsste das ganze bei a:=1 beginnen nicht wahr?

Richtig, da du ja erst nach dem Zugriff auf das Array i erhöhst. Würdest du das vor dem Array-Zugriff machen, dann könntes es bei i:=0 ausserhalb der Schleife bleiben. Vor allem würdest du dann alle Elemente bis auf 49 belegen. Bisher belegst du das Element [49] nicht, da du zu früh die Schleife verlässt. Wenn i gerade frisch auf 49 erhöht wurde, dann steigst du aus der Schleife aus und greifst somit niemals auf das Element [49] des Arrays zu.

ibp 21. Sep 2007 17:39

Re: Array type required
 
Delphi-Quellcode:
a:=0;
repeat
zahl[a]:=0;
a:=a+1;
until a=49;
besser...

Delphi-Quellcode:
for a:=49 downto 1 do
begin
  zahl[a]:=0;
end;


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

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