![]() |
Array länge verändern
Hallo, ich will die länge eines arrays erst in einer Procedure setzen.
Delphi-Quellcode:
Leider bekomme ich immer ine Fehlermeldung wenn ich oben das array erstelle. Ist sowas überhaupt möglich was ich vorhabe?
procedure zahlsetzen_generieren(i,j : integer;StringGrid1:TStringGrid);
VAR zeiger,k,zahl,wo:integer; möglichkeit : array [0..zeiger] of integer; //Zeiger soll erst in der procedur gesetzt werden??? geprüft: boolean; procedure prüfen(); begin geprüft:= false; geprüft:= check_zeile(i,zahl); if geprüft = false then begin geprüft:=check_spalte(j,zahl); if geprüft = false then begin geprüft:=check_3x3(zahl,i,j); if geprüft = false then begin exit; end; end; end; end; begin zeiger:=0; for k:=0 to 9 do begin prüfen(); if geprüft = false then begin möglichkeit[zeiger]:= k; inc(zeiger); //Hier sollte Zeiger immer erhöht werden wenn zulässig end; end; end; Gruss |
Re: Array länge verändern
seh dich nach dynamischen arrays um die werden dann so deklariert
Delphi-Quellcode:
und wenn du die größe setzt:
möglichkeiten : array of integer;
Delphi-Quellcode:
das array begin bei 0 also -> 0,1 sind die array elemete bei diesem beispiel
setlength(moeglichkeiten,2);
|
Re: Array länge verändern
Delphi-Quellcode:
So sollte es gehn, aber ob die variabl "Möglichkeit" zulässig ist denk ich nicht ;)
procedure zahlsetzen_generieren(i,j : integer;StringGrid1:TStringGrid);
VAR zeiger,k,zahl,wo:integer; möglichkeit : array of integer; //Zeiger soll erst in der procedur gesetzt werden??? geprüft: boolean; procedure prüfen(); begin geprüft:= false; geprüft:= check_zeile(i,zahl); if geprüft = false then begin geprüft:=check_spalte(j,zahl); if geprüft = false then begin geprüft:=check_3x3(zahl,i,j); if geprüft = false then begin exit; end; end; end; end; begin zeiger:=0; for k:=0 to 9 do begin prüfen(); if geprüft = false then begin SetLength(möglichkeit,Succ(zeiger)); möglichkeit[zeiger]:= k; inc(zeiger); //Hier sollte Zeiger immer erhöht werden wenn zulässig end; end; end; |
Re: Array länge verändern
:oops: ups natürlich oe net ö :D
|
Re: Array länge verändern
Hi Murcielago82.
Dafür musst Du eine dynamische Array-Variabl definieren und dann die Länge zuweisen. Das sieht dann so aus:
Delphi-Quellcode:
PS: Zeiger würd ich nie eine Variable nennen, es sei denn, es ist wirklich ein Pointer ;)
var
xMoeglichkeit: Array of Integer; begin SetLength(xMoeglichkeit, iAnzahl); ... PPS: och nö. das geht viel zu schnell hier ... |
Re: Array länge verändern
Klasse vielen Dank!!!
Zitat:
|
Re: Array länge verändern
Da zitiere ich doch mal aus der allesumfassenden Hilfe die man gut über F1 erreichen kann:
Zitat:
|
Re: Array länge verändern
und das bedeuted? In Der Hilfe steht n+1 also wäre es hier zeiger +1?
|
Re: Array länge verändern
Richtig, das heißt "einen mehr als". pred(x) steht übrigens für "einen weniger als X". Beides kann auch zusammen mit high(X) und low(X) für Enum-Typen (Aufzählungstypen) verwendet werden. Ganz praktisch, um den Überblick zu behalten und nicht lange 2+i-(i+1)+(i*i-1)+6... Würmer zu bekommen.
|
Re: Array länge verändern
Moin Martin,
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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 by Thomas Breitkreuz