Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Fr 21.01.05 12:31 
Hallo,
wenn ich folgenden array defniere habe ich ja in jeder spalte den gleichen datentyp:
MenuItems: array of array of TMenuItem; richtig ?
und nun wollte ich gerne das die erste spalte vom Typ Integer ist. also sowas:
ausblenden Delphi-Quelltext
1:
MenuItems: array of integer array of TMenuItem;					


gibst es möglickeiten für sowas ?


Moderiert von user profile iconTino: Topic aus Sonstiges verschoben am Fr 21.01.2005 um 13:02

_________________
MFG
Michael Springwald, "kann kein englisch...."
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Fr 21.01.05 12:40 
So spontan würde mir da ein Record einfallen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
TMyMenuItem = record
  I: Integer;
  Items: array of TMenuItem
end;

MenuItems: array of TMyMenuItem;

Oder du missbrauchst den Pointer von TMenuItem als Integer. Das kann aber gefährlich enden, wenn du dann aus versehen als TMenuItem zugreifst.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 21.01.05 12:43 
Jip, sogar mehrere:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
MeinSpeziellerArrayType: array of packed record
  FirstColumn: Integer;
  OtherColumns: Array of TMenuItem;
end;


Ansonsten über Pointer-Typecast:

ausblenden Delphi-Quelltext
1:
MeinSpeziellerArrayType: array of array of Pointer;					


Zugriff auf erste Spalte:
ausblenden Delphi-Quelltext
1:
Integer(MeinArray[0,0])					


zugriff auf die anderen Spalten:
ausblenden Delphi-Quelltext
1:
TMenuItem(MeinArray[0,1]^)					


Beste Lösung: Lass es, denn Mischen von Datentypen in Arrays ist unsauber!

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Fr 21.01.05 15:16 
naja ich dachte mir nur: wenn bei spalten von typ TMenuItem sind kostet es doch mehr speicher und der erste typ braucht ja nur ein Integer sein.....aber du hast recht ich lasse es sein :cry:

_________________
MFG
Michael Springwald, "kann kein englisch...."
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Fr 21.01.05 15:31 
Kneif mich einer wenn ich mich irre! Aber TMenuItem ist doch ne Klasse! Wenn du ein solches Array anlegst befinden sich dort drin doch nur Pointer. Und die belegen alle 4 Bytes. Also genau wie ein normaler Integer. Das TMenuItem belegt doch erst mehr Speicher, wenn du die Klasse angelegt hast.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Fr 21.01.05 15:40 
nicht ganzs TMenuItem ist ein record den ich defniert habe ich nutze nicht die klasse TMenuItem *G*

_________________
MFG
Michael Springwald, "kann kein englisch...."
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Fr 21.01.05 15:48 
Da die TMenuItem eine recht bekannte VCL Klasse ist, wäre eine ganz nützliche Grundinformation gewesen. ;-)

Damit fallen nämlich schon einmal alle zweiten Vorschläge weg.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
MitschL
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 211

Win 98 SE, Win 2000
D5 Pers, D6 Pers und D7 Pro
BeitragVerfasst: Fr 21.01.05 16:10 
Wenn dein TMenuItem schon ein Record ist, warum packst Du den Integer nicht da mit rein?

gegrüßt!

_________________
"Bloßes Ignorieren ist noch keine Toleranz." (Theodor Fontane)