Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi mehrdym. Dynamische Arrays (https://www.delphipraxis.net/32836-mehrdym-dynamische-arrays.html)

Methi 28. Okt 2004 15:20


mehrdym. Dynamische Arrays
 
hallo
Delphi-Quellcode:
var
  List: TStringList;
  I: Integer;
  S: String;
begin

  S := '1345123515;345235;2352354;23452345;';
  List := TStringList.Create;
  SetLength( myArr1[j], Succ(Length(myArr1[j]) )); //hier liegt der Fehler

  with List do
  begin
    Delimiter := ';';
    DelimitedText := S;
    for I := 0 to Count - 1 do
      myArr1[j,I]:= strtoint(Strings[I]);
  end;
  List.Free;
end;
noch eine kleine erläuterung:
myArr1 ist ein 2 dymensionales array. diese funktion soll in die 2te ebene den zerlegten String "S" schreiben, dass zerlegen klappt auch, aber irgendwie das mit dem array noch nicht...zeigerverletzung?

Kann jmd. helfen?

SubData 28. Okt 2004 15:22

Re: mehrdym. Dynamische Arrays
 
Wo wird'n j gezählt / deklariert?

jim_raynor 28. Okt 2004 15:27

Re: mehrdym. Dynamische Arrays
 
Um alle Einträge in einem zweidimensionalen dynamischen Array gleich groß zu machen musst du folgendes machen

SetLength(myArray, Dim1, Dim2);

Wenn du SetLength(myArray[y], Dim2) machst wird nur myArray[Y] auf die entsprechende größe gesetzt. Alle anderen bleiben so wie vorher.

Aber so wie ich das bei genauerer Betrachtung sehe, ist dies ja nicht unbedingt das Problem. Ich glaube auch das J irgendwo Schief hängt.

Methi 28. Okt 2004 15:37

Re: mehrdym. Dynamische Arrays
 
J ist erstmal eine constante... sie wird (wenn überhaupt) in einer anderen funktion erhöht.

ich beginne sozusagen immer mit myarray[0, I]

ich möchte nur den wert I erhöhen, somit mehr elemente in die 2te Dymension packen...

myarray[1 , X] soll davon unangetastet bleiben... (wenn es myarray[1, x] überhaupt gibt)

aus der delphi hilfe:
Zitat:

Sie können auch mehrdimensionale dynamische Arrays anlegen, die nicht gleichförmig sind. Rufen Sie dazu als Erstes die Funktion SetLength auf, und übergeben Sie ihr Parameter für die ersten n Dimensionen des Arrays:

var Ints: array of array of Integer;
SetLength(Ints,10);

Mit dieser Anweisung weisen Sie dem Array Ints Speicherplatz für zehn Zeilen zu. Den Speicher für die Spalten können Sie später einzeln zuweisen (und dabei unterschiedliche Längen angeben):

SetLength(Ints[2], 5);

Die dritte Spalte von Ints kann damit fünf Integer-Werte aufnehmen, und Sie können ihr nun Werte zuweisen (auch wenn die anderen Spalten nicht zugewiesen sind), z. B. Ints[2,4] := 6


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