Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ein type mit dynamischem Array? (https://www.delphipraxis.net/47318-ein-type-mit-dynamischem-array.html)

Igotcha 9. Jun 2005 10:30


Ein type mit dynamischem Array?
 
Hallo zusammen,

ich möchte in einem VirtualStringTree Tabelleninhalte anzeigen lassen. Bisher habe ich beim VST mit Records gearbeitet und bin recht zufrieden damit, aber wie gehe ich dabei mit variablen Spaltenanzahlen um?

Delphi-Quellcode:
type
  PTabData = ^TTabData;
  TTabData = record
    FID: integer;
    FData: Array of String
end;
Initialisiert wird der VST irgendwann mit

Delphi-Quellcode:
VDATA.NodeDataSize:=sizeof(TTabData);
Wenn ich jetzt zum Beispiel eine Tabelle mit 10 Spalten anzeigen möchte, geht folgendes nicht:

Delphi-Quellcode:

var
   myData: PTabData
   akt_Node: PVirtualNode;
begin
   Setlength(myData.Fdata, 9)
   akt_Node:=atree.AddChild(nil);
   myData:=atree.GetNodeData(akt_Node);
   ...
end;
Gruß Igotcha

alzaimar 9. Jun 2005 19:27

Re: Ein type mit dynamischem Array?
 
ich kenn VST nicht, aber deklarier doch dein Record einfach mit der maximalen Spaltenanzahl.

Igotcha 10. Jun 2005 00:47

Re: Ein type mit dynamischem Array?
 
Zitat:

Zitat von alzaimar
ich kenn VST nicht, aber deklarier doch dein Record einfach mit der maximalen Spaltenanzahl.

Jo, genau das wollte ich eben nicht ;-)

Gruß Igotcha

marabu 10. Jun 2005 07:49

Re: Ein type mit dynamischem Array?
 
Hallo Igotcha,

Zitat:

Zitat von Igotcha
Wenn ich jetzt zum Beispiel eine Tabelle mit 10 Spalten anzeigen möchte, geht folgendes nicht:
Delphi-Quellcode:
var
   myData: PTabData
   akt_Node: PVirtualNode;
begin
   Setlength(myData.Fdata, 9)
   akt_Node:=atree.AddChild(nil);
   myData:=atree.GetNodeData(akt_Node);
   ...
end;

besser ist, wenn du erst den Zeiger myData initialisierst und dann SetLength() ausführst.

Grüße vom marabu

alzaimar 10. Jun 2005 08:17

Re: Ein type mit dynamischem Array?
 
Zitat:

Zitat von Igotcha
Jo, genau das wollte ich eben nicht ;-)

Wieso denn nicht? "Keep it simple" sollte bei der Softwareerstellung oberste Prämisse sein. Erst dann "Make it fast/small".


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