Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dynamisches zwei dimensionales Array erzeugen und zugriff (https://www.delphipraxis.net/90533-dynamisches-zwei-dimensionales-array-erzeugen-und-zugriff.html)

Jmh124 19. Apr 2007 04:28


Dynamisches zwei dimensionales Array erzeugen und zugriff
 
hi, ich habe eine array:

und greife drauf wie folgt zu:
Delphi-Quellcode:
type
PTextlist = ^TTextlist;
TTextlist = record

  text: String;
 
end;

var
PList : array[0..3] of array of Plist;

setLength(Plist[0],31);
Plist[0][0].text:='';

Hafish 19. Apr 2007 05:02

Re: Dynamisches zwei dimensionales Array erzeugen und zugrif
 
Ohne zu wissen was du eigentlich willst wage ich zu vermuten, dass ich das Programm so nicht kompilieren lässt.
Wahrscheinlich kommt da eine Fehlermeldung dass Delphi eine Konstante oder einen Typ erwartet.

Zunächst einmal solltest du bei der Variablendeklaration nicht als Typ PList verwenden (so heißt deine Variable die du gerade deklarierst).

Was du meinst ist doch wahrscheinlich:

Delphi-Quellcode:
type
PTextlist = ^TTextlist;
TTextlist = record

  text: String;
 
end;

var
PList : array of array of PTextList;

setLength(Plist,0,31);
Plist[0,0].text:='';

Jmh124 19. Apr 2007 05:11

Re: Dynamisches zwei dimensionales Array erzeugen und zugrif
 
args wieder angefangen programmiersprachen code zu mixen ;/

alles klar danke!

Jmh124 19. Apr 2007 05:14

Re: Dynamisches zwei dimensionales Array erzeugen und zugrif
 
kriege im debugger trotzdem eine EAcception mit versuch auf 00000 zu schreiben! hmm

Hafish 19. Apr 2007 05:23

Re: Dynamisches zwei dimensionales Array erzeugen und zugrif
 
Hast du denn den Speicher auch reserviert?

Jmh124 19. Apr 2007 05:29

Re: Dynamisches zwei dimensionales Array erzeugen und zugrif
 
eigentlich war ich der meinung ich mache das mit setlength ;/

Hafish 19. Apr 2007 05:44

Re: Dynamisches zwei dimensionales Array erzeugen und zugrif
 
Ich meine nicht den array, sondern die Objekte auf die deine Pointer zeigen.

Jmh124 19. Apr 2007 05:47

Re: Dynamisches zwei dimensionales Array erzeugen und zugrif
 
nein das ist der komplette code den ich habe :)

Hafish 19. Apr 2007 06:15

Re: Dynamisches zwei dimensionales Array erzeugen und zugrif
 
Zitat:

Zitat von Jmh124
eigentlich war ich der meinung ich mache das mit setlength ;/

Ja, aber damit setzt du nur die Länge des Arrays. Die einzelnen Record-Objekte brauchen auch Speicher.

Also:
Wenn du Pointer benutzt, dann musst du erst Speicher für die einzelnen Objekte reservieren, bevor du sie benutzen kannst. Wenn du das Prinzip von Pointern noch nicht verstanden hast rate ich dir dringed zu einem Tutorial(Edit:z.B. hier) bzw einem wikipedia Besuch. :wink:


Trotzdem hier mal der Code mit dem es klappt:

Delphi-Quellcode:
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetLength(PList,100,100);
  GetMem(PList[45,10],SizeOf(TTextList));
  PList[45,10].text := 'Test';
  ShowMessage(PList[45,10].text);
  FreeMem(PList[45,10]);
end;
Allerdings musst du vorher die String-Länge begrenzen
Delphi-Quellcode:
  TTextlist = record
    text: string[255];
  end;


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