Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Array of Array of record (https://www.delphipraxis.net/160354-array-array-record.html)

EWeiss 9. Mai 2011 15:28

Array of Array of record
 
Wieder total neben der Schnur heute.. :wall:

Delphi-Quellcode:
  TRecord2 = record
    GibsMir: string;
  end;

  TRecord1 = record
    Hahaha: array[1..15] of array of TRecord2;
  end;
Delphi-Quellcode:
  For i := 1 to 15
    List.Lines.Add('Was nun ' + string(FileInfo.Hahaha[i]));
Wie komme ich jetzt an GibsMir dran ? (Nicht hauen)

gruss

DeddyH 9. Mai 2011 15:31

AW: Array of Array of record
 
Wenn ich mich nicht verguckt habe:
Delphi-Quellcode:
  For i := 1 to 15
    List.Lines.Add('Was nun ' + FileInfo.Hahaha[i][Low(Hahaha[i])].GibsMir);

Phoenix 9. Mai 2011 15:33

AW: Array of Array of record
 
Es ist ja ein Array of Array.
Das heisst in dem Array FileInfo.Hahaha[i] steckt nochmal ein Array und auch dort musst Du mit einem indexer [j] auf das richtige Item zugreifen.

DeddyH 9. Mai 2011 15:39

AW: Array of Array of record
 
So isses, ich hatte das in meinem Beispiel nur angedeutet.

EWeiss 9. Mai 2011 15:41

AW: Array of Array of record
 
Zitat:

Zitat von Phoenix (Beitrag 1099762)
Es ist ja ein Array of Array.
Das heisst in dem Array FileInfo.Hahaha[i] steckt nochmal ein Array und auch dort musst Du mit einem indexer [j] auf das richtige Item zugreifen.

Ist mir aufgefallen deshalb gab es auch gerade auch ein AV (bevor es mir aufgefallen ist)

Danke.

gruss

EWeiss 9. Mai 2011 19:56

AW: Array of Array of record
 
Zitat:

Zitat von DeddyH (Beitrag 1099760)
Wenn ich mich nicht verguckt habe:
Delphi-Quellcode:
  For i := 1 to 15
    List.Lines.Add('Was nun ' + FileInfo.Hahaha[i][Low(Hahaha[i])].GibsMir);

Kann es sein das bei dir trotzdem was nicht stimmt?
Delphi-Quellcode:
  for IntI := 1 to FileInfo.Tracks do
  begin
    for IntA := 1 to 1 do
    begin
      for IntB := 0 to FileInfo.NoteCounter[IntI] -1 do
      begin
        Grid[IntI, IntB] := FileInfo.MIDINotes[IntA, (byte(FileInfo.MIDINotes[IntB]))].NoteNo;
        InstGrid[IntI, IntB] := FileInfo.MIDINotes[IntA, (byte(FileInfo.MIDINotes[IntB]))].Instrument;
      end;
    end;
  end;
Ich verwende ein komma
Delphi-Quellcode:
FileInfo.MIDINotes[IntA, (byte(FileInfo.MIDINotes[IntB]))].NoteNo;


du hingegen nicht.. Ist es das selbe?
Oder wo liegt der Unterschied.

gruss

FredlFesl 9. Mai 2011 20:02

AW: Array of Array of record
 
Man sollte vielleicht das dynamische Array mal dimensionieren, dann sollte der Zugriff klappen.

EWeiss 9. Mai 2011 20:21

AW: Array of Array of record
 
Zitat:

Zitat von FredlFesl (Beitrag 1099838)
Man sollte vielleicht das dynamische Array mal dimensionieren, dann sollte der Zugriff klappen.

Was willst damit sagen?
Es geht nicht um die Funktionalität DAS tut's und es wird schon Hundertzeilen vorher Dimensioniert.
Es ging um die frage wo der unterschied liegt.. mit oder ohne Komma

gruss

FredlFesl 9. Mai 2011 21:00

AW: Array of Array of record
 
Achso.
Es gibt keinen Unterschied, außer in der Anzahl und Art der Zeichen.

Kannst Du überall nachlesen, hättest googeln können.

EWeiss 9. Mai 2011 21:45

AW: Array of Array of record
 
Zitat:

Zitat von FredlFesl (Beitrag 1099863)
Achso.
Es gibt keinen Unterschied, außer in der Anzahl und Art der Zeichen.

Kannst Du überall nachlesen, hättest googeln können.

Ok Danke..
Mit dem googeln ist immer so ne sache wenn man nicht genau weiss welche stichworte man da verwenden soll.
Wenn sich dann 1,2 Millionen Einträge finden ist das nicht gerade das wahre vom Ei.

gruss

FredlFesl 10. Mai 2011 06:21

AW: Array of Array of record
 
Bei Google suchendelphi array zugriff mehrdimensional

EWeiss 10. Mai 2011 06:25

AW: Array of Array of record
 
Zitat:

Zitat von FredlFesl (Beitrag 1099895)

10.300 Ergebnisse
Hilft mir aber nicht weiter da mein Array ja steht.
Aber beim vergleiche total irrationale ergebnisse liefert obwohl sie stimmen.
Wenn man mit dem Debugger vergleicht.

siehe http://www.delphipraxis.net/1099885-post1.html

gruss

FredlFesl 10. Mai 2011 06:45

AW: Array of Array of record
 
Zitat:

Zitat von WikiBooks
Auch die Auswertung der gespeicherten Daten erfolgt über komma-getrennte Indizes. Alternativ kann man jede Dimension in eigenen eckigen Klammern notieren:
Delphi-Quellcode:
a1[1, 0] := 15;     // gleichbedeutend mit: a1[1][0] := 15;
a2[2, 4, 8] := 0;   // gleichbedeutend mit: a2[2][4][8] := 0

Ich dachte, das wäre die Antwort auf deine Frage, nachdem Du die Sache mit der AV gelöst hast.
Zitat:

Zitat von EWeiss (Beitrag 1099847)
Es ging um die frage wo der unterschied liegt.. mit oder ohne Komma

Zitat:

Zitat von EWeiss (Beitrag 1099836)
...Ich verwende ein komma ... du hingegen nicht.. Ist es das selbe?
Oder wo liegt der Unterschied.

Ein Compiler wird beim Erzeugen des Codes u.U. zu anderen Ergebnissen kommen, je nachdem, ob er die Komma- oder Klammerschreibweise vorfindet.

Zitat:

Zitat von EWeiss (Beitrag 1099898)
...Aber beim vergleiche total irrationale ergebnisse liefert obwohl sie stimmen.
Wenn man mit dem Debugger vergleicht.

siehe http://www.delphipraxis.net/1099885-post1.html

Hab mir das andere Problem mal angeschaut. Ich gehe davon aus, das Du die Lösung nun selbst erarbeiten kannst. Wenn nicht => Array-Index korrekt ermitteln.

Aber eins fällt schon mal auf: Du schreibst, das der Code "total irrationale ergebnisse liefert obwohl sie stimmen." Das ist definitiv falsch beobachtet. Sie stimmen nämlich nicht.

Delphi hat zwar Macken, aber der Arrayzugriff gehört definitiv nicht dazu.

EWeiss 10. Mai 2011 07:04

AW: Array of Array of record
 
Zitat:

Aber eins fällt schon mal auf: Du schreibst, das der Code "total irrationale ergebnisse liefert obwohl sie stimmen." Das ist definitiv falsch beobachtet. Sie stimmen nämlich nicht.
Danke für deine Ausführung.
Habe im anderen Thread schon geschrieben das laut der informationen
die vom Tooltip des Debugger kommen sind alle Daten korrekt werden aber falsch ausgewertet.

das meine ich mit Irrational

gruss

himitsu 10. Mai 2011 09:15

AW: Array of Array of record
 
a = array of array of ...

a[x, y] = a[x][y]

Jumpy 10. Mai 2011 09:44

AW: Array of Array of record
 
OT:
Da das Problem ja im anderen Thread gelöst ist erlaub ich mir eine kurze Entführung:

Zitat:

Zitat von himitsu (Beitrag 1099925)
a[x, y] = a[x][y]

Ist das also egal, ob das mehrdimensionale Array statisch oder dynamisch ist?
Ich meine das in andern Programmiersprachen so gesehen zu haben, dass man mit
a[1,2] statische und mit a[1][2] dynamische Arrays angesprochen hat (oder war das umgekehrt)?

/OT

p80286 10. Mai 2011 09:59

AW: Array of Array of record
 
Also soo ganz kompatibel sind die beiden schreibweisen wohl nicht.
wenn Du eine Stringliste hast, die ja wohl auch ein Array ist(?) kannst Du so nicht zugreifen
Delphi-Quellcode:
Bstb:=MyStringlist[0,1];
so aber geht es
Delphi-Quellcode:
Bstb:=MyStringList[0][1];
Allerdings meckert da der Compiler schon im Vorfeld.

Gruß
K-H

EWeiss 10. Mai 2011 10:13

AW: Array of Array of record
 
Zitat:

Zitat von Jumpy (Beitrag 1099930)
OT:
Da das Problem ja im anderen Thread gelöst ist erlaub ich mir eine kurze Entführung:

Zitat:

Zitat von himitsu (Beitrag 1099925)
a[x, y] = a[x][y]

Ist das also egal, ob das mehrdimensionale Array statisch oder dynamisch ist?
Ich meine das in andern Programmiersprachen so gesehen zu haben, dass man mit
a[1,2] statische und mit a[1][2] dynamische Arrays angesprochen hat (oder war das umgekehrt)?

/OT

Das ist also der Unterschied.. Danke.
konnte mir irgendwo auch nicht vorstellen das unterschiedliche Schreibweisen
das gleiche sein soll. Abgesehen vom Ergebnis in diesen fall

himitsu 10. Mai 2011 10:27

AW: Array of Array of record
 
Das bezog sich nur auf Arrays ... egal ob statisch oder dynamisch.

Bei einer Stringlist steht SL[i] eigentlich für SL.Item[i], wobei das Item weggelassen werden kann, da es als "default" Array-Property deklariert ist.
Aus diesem Grund läßt sich z.B
Delphi-Quellcode:
Array of TStringList
nur als [x][y] und nicht als [x, y] schreiben, da es ja eigentlich [x].Item[y] heißt.

Bei verschachtelten Array geht aber Beides.

DeddyH 10. Mai 2011 10:30

AW: Array of Array of record
 
Und weil es für [x, y] keinen Getter in TStringlist gibt und das Array zwar intern vorhanden, der Zugriff aber gekapselt ist.

Jumpy 10. Mai 2011 10:50

AW: Array of Array of record
 
Zitat:

Zitat von himitsu (Beitrag 1099940)
Das bezog sich nur auf Arrays ... egal ob statisch oder dynamisch.

Das beduetet also in Delphi ist die Schreibweise des Zugriffs bei (ich nenns mal) "homogenen", mehrdimensionalen Arrays egal. Das wollt ich glaub ich wissen.

himitsu 10. Mai 2011 11:05

AW: Array of Array of record
 
genau

einfach nur zwei Schreibweisen für das selbe Ergebnis,
so wie
Delphi-Quellcode:
i := i + 1;
und
Delphi-Quellcode:
Inc(i);
(Ersteres wird durch den Compiler zum Letzteren optimiert).

Jumpy 10. Mai 2011 11:11

AW: Array of Array of record
 
Danke. Die Frage kam nur auf wg. der (so mein ich halt) anderen Verwendung in C# oder war es Java?
(Ich bin halt dabei vier Sprachen parallel zu lernen, wobei C# und Java für die Schule sind und wir da kaum was mit machen, deswegen bleibt da sowenig hängen, Delphi und VBA in der Firma klappt schon besser, da ich da täglich mit arbeite).

So jetzt aber [/OT] und danke für das Stillen meiner Neugier:thumb:


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