Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dyn Array vielleicht???? (https://www.delphipraxis.net/129677-dyn-array-vielleicht.html)

foerster7892 23. Feb 2009 21:13


Dyn Array vielleicht????
 
Hi
ich wollte ein 2dimensionales Array erstellen bei dem beide Größen von Variablen abhängig sind.
Wie geht das???
würde mich sehr über nen einfaches Bsp freuen :)

thx im vorraus

Fussball-Robby 23. Feb 2009 21:15

Re: Dyn Array vielleicht????
 
Delphi-Quellcode:
var
  A: Array of Array of Integer;
  X, Y: Integer;
begin
  X := 15;
  Y := 3;
  SetLength(A, X, Y);
end;
Gruß

foerster7892 23. Feb 2009 21:20

Re: Dyn Array vielleicht????
 
so hatte ich mir das vor 5min auch noch gedacht:
SetLength(Werte, Anzahl, Varianten);

aber da kommt ne Fehlermeldung
(Werte:array of string;
Anzahl, Varianten :integer;)

Meflin 23. Feb 2009 21:22

Re: Dyn Array vielleicht????
 
Zitat:

Zitat von foerster7892
aber da kommt ne Fehlermeldung
(Werte:array of string;
Anzahl, Varianten :integer;)

das ist keine Fehlermeldung :gruebel: Abgesehen davon ist das Semikolon (;) am Schluss zu viel.

foerster7892 23. Feb 2009 21:23

Re: Dyn Array vielleicht????
 
ne das in klammern is nur wie ich die variablen definiert hab

Meflin 23. Feb 2009 21:24

Re: Dyn Array vielleicht????
 
Zitat:

Zitat von foerster7892
ne das in klammern is nur wie ich die variablen definiert hab

Ja was ist denn nun die Fehlermeldung :gruebel:

foerster7892 23. Feb 2009 21:24

Re: Dyn Array vielleicht????
 
incompatible typen

Meflin 23. Feb 2009 21:26

Re: Dyn Array vielleicht????
 
Zitat:

Zitat von foerster7892
incompatible typen

du definierst ein eindimensionales array of string und rufst SetLength mit zwei Dimensionen auf. kann ja nicht klappen.

foerster7892 23. Feb 2009 21:28

Re: Dyn Array vielleicht????
 
wie definiere ich nen 2d array wenn ich es dyn haben will???

Die Muhkuh 23. Feb 2009 21:30

Re: Dyn Array vielleicht????
 
Delphi-Quellcode:
DynArray: array of array of Datentyp;

Fussball-Robby 23. Feb 2009 21:30

Re: Dyn Array vielleicht????
 
Zitat:

Zitat von foerster7892
wie definiere ich nen 2d array wenn ich es dyn haben will???

Guck doch einfach meinen Beitrag an :roll: Da dann noch Integer in String ändern und fertig...

foerster7892 23. Feb 2009 21:33

Re: Dyn Array vielleicht????
 
sorry das sah mir aus wien schreibfehler weils nicht funzte :-D
denn jetzt kommt ne fehlermeldung bei der definition:
bezeichner erwartet aber array gefunden

Fussball-Robby 23. Feb 2009 21:36

Re: Dyn Array vielleicht????
 
Zitat:

Zitat von foerster7892
sorry das sah mir aus wien schreibfehler weils nicht funzte :-D
denn jetzt kommt ne fehlermeldung bei der definition:
bezeichner erwartet aber array gefunden

Zeig mal deinen bisherigen Code. Eventuell musst du das unter type deklarieren, dazu gibts hier aber auch genug Themen..

foerster7892 23. Feb 2009 21:38

Re: Dyn Array vielleicht????
 
Delphi-Quellcode:
procedure Moeglichkeiten(Werte : array of array of string);
var Stabe1, Stabe2, Stabe3 :string;
    i, g, h, j, Anzahl, Varianten :integer;
begin

  if Taste1 then
  begin
    Stabe1:='A';
    Stabe2:='B';
    Stabe3:='C';
    Anzahl:=Anzahl + 1;
  end;

  if Taste2 then
  begin
    Stabe1:='D';
    Stabe2:='E';
    Stabe3:='F';
    Anzahl:=Anzahl + 1;
  end;

  if Taste3 then
  begin
    Stabe1:='G';
    Stabe2:='H';
    Stabe3:='I';
    Anzahl:=Anzahl + 1;
  end;

  if Taste4 then
  begin
    Stabe1:='J';
    Stabe2:='K';
    Stabe3:='L';
    Anzahl:=Anzahl + 1;
  end;

  if Taste5 then
  begin
    Stabe1:='M';
    Stabe2:='N';
    Stabe3:='O';
    Anzahl:=Anzahl + 1;
  end;

  if Taste6 then
  begin
    Stabe1:='P';
    Stabe2:='Q';
    Stabe3:='R';
    Anzahl:=Anzahl + 1;
  end;

  if Taste7 then
  begin
    Stabe1:='S';
    Stabe2:='T';
    Stabe3:='U';
    Anzahl:=Anzahl + 1;
  end;

  if Taste8 then
  begin
    Stabe1:='V';
    Stabe2:='W';
    Stabe3:='X';
    Anzahl:=Anzahl + 1;
  end;

Varianten := Potenzfkt(Anzahl);
SetLength(Werte, Anzahl, Varianten);

for i := Anzahl downto 1 do
begin
  if i = Anzahl then
  begin
    Varianten := Varianten/3;

    for g := 1 to (Varianten/3) do
    Werte[i, Varianten]:= Stabe1;

    for h := (1/3*Varianten+1) to (2*Varianten/3) do
    Werte[i, Varianten]:= Stabe2;

    for j := (2/3*Varianten+1) to Varianten do
    Werte[i, Varianten]:= Stabe3;
  end

  else
  begin
    Stabe1 := Werte[i, Varianten/3] ;
    Stabe2 := Werte[i, 2*Varianten/3] ;
    Stabe3 := Werte[i, Varianten] ;

    for g := 1 to (Varianten/3) do
    Werte[i, Varianten]:= Stabe1;

    for h := (1/3*Varianten+1) to (2*Varianten/3) do
    Werte[i, Varianten]:= Stabe2;

    for j := (2/3*Varianten+1) to Varianten) do
    Werte[i, Varianten]:= Stabe3;

  end;
end;

end;
das is die procedure

Meflin 23. Feb 2009 21:41

Re: Dyn Array vielleicht????
 
Delphi-Quellcode:
type
  TStrArr: array of array of string

...

procedure Blubb(Werte: TStrArray);
begin
...

foerster7892 23. Feb 2009 21:56

Re: Dyn Array vielleicht????
 
okay thx an alle :dp: :dp: :dp:

Hawkeye219 23. Feb 2009 22:47

Re: Dyn Array vielleicht????
 
Hallo Benjamin,

es sind noch einige Fehler in deinem Quelltext enthalten, auf die dich der Compiler mit Sicherheit hinweisen wird. Wenn du das Array nur innerhalb der Routine verwenden möchtest, dann brauchst du es nicht als Parameter zu übergeben. Möchtest du es aber mit den neuen Dimensionen auch außerhalb der Routine nutzen, dann solltest du ihm in der Parameterliste der Prozedur das Wort "VAR" voranstellen.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 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