Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Pointer in einen Array
opfer.der.genauigkeit - Mi 27.11.02 12:57
Titel: Pointer in einen Array
Ich habe über Metatypen einen Array definiert.
Dieser ist in einer Unit ausgelagert.
Quelltext
1: 2: 3: 4:
| unit uFunctionWork; type TClass = class of TForm; TFormtypes = Array[0..4] of TClass; |
Ich habe im fsMDIForm (es handelt sich bei dem Programm um MDI) in den Array die Kinder geschrieben (also TForm1, TForm2 etc.) undzwar so:
Quelltext
1: 2: 3: 4: 5: 6:
| unit wGrundform; var Formtype : TFormtypes; begin Formtype[1] := TForm1; end; |
usw...
Hintergrund zum Ganzen:
Ich möchte eine MDI-Applikation schreiben, ohne zirkuläre Refferenzen.
Funktioniert auch alles wunderbar und schön. Is mir aber noch nicht kompliziert genug. :mrgreen:
Eigentlich möcht ich das ganze mit Pointern machen.
In etwa so:
Quelltext
1: 2: 3: 4: 5: 6:
| unit uFunctionWork; type TClass = ^TForm; TFormTypeArray = array[1..4] of TClass; var Formtype : TFormtypes; |
Und den Teil in dem ich in den Array schreiben möchte sollte in etwa so aussehen:
Quelltext
1: 2: 3: 4: 5: 6:
| unit wGrundform; var p : TClass; begin p^.Formtype[1] := TForm1; end; |
Das Problem ist, das Formtype nicht mehr erkannt wird bzw.
ich den Pointer garnicht auf den Array refferenzieren kann.
Ich hoffe irgendjemand hat ne Lösung.
Thx im Vorraus.
Udontknow - Mi 27.11.02 13:34
Zitat: |
Eigentlich möcht ich das ganze mit Pointern machen. |
Verstehe ich nicht ganz. TClass ist doch bereits ein Zeiger, nämlich auf eine Klasse, genauso wie TObject ein Zeiger auf eine Klasseninstanz ist.
Überhaupt solltest du das nicht TClass nennen, denn TClass wird in Delphi bereits als "class of TObject" definiert. Also lieber "TFormType=class of TForm" und "TFormTypes=Array of TFormType".
Cu,
Udontknow
opfer.der.genauigkeit - Mi 27.11.02 13:59
Daß das andere Pointer sind ist mir schon klar,
aber ich wollte Pointer bei Form1 etc. benutzen.
Bei der Initialisierung also.
Udontknow - Mi 27.11.02 14:25
Wie, Pointer bei Form1 etc. ? Was ist das für eine Beschreibung?
Zitat: |
In etwa so:
Code:
unit uFunctionWork;
type
TClass = ^TForm;
TFormTypeArray = array[1..4] of TClass;
var
Formtype : TFormtypes;
|
In etwa? Wass nun, TFormTypeArray oder TFormTypes?
Zitat: |
Und den Teil in dem ich in den Array schreiben möchte sollte in etwa so aussehen:
Code:
unit wGrundform;
var
p : TClass;
begin
p^.Formtype[1] := TForm1;
end; |
Aha. Wieso versuchst du, einen TClass-Zeiger zu dereferenzieren, und dann ein Array anzusprechen? Selbst wenn es zu keinem Konflikt mit der Delphi-Definition "tclass=class of Tobject" kommt, ist doch nach deiner Def TClass=^TForm, also ein Zeiger auf einen Zeiger auf eine Klasse. Nix Array!
Versuche erst mal, ein wenig Ordnung in dein System zu bringen.
Cu,
Udontknow
Udontknow - Mi 27.11.02 14:28
Wo es mir gerade einfällt: Vielleicht nimmst du für solche Zwecke einfach TClassList.
Cu,
Udontknow
opfer.der.genauigkeit - Mi 27.11.02 14:54
Zitat: |
In etwa? Wass nun, TFormTypeArray oder TFormTypes? |
War n Tipfehler sollte TFormTypeArray heißen.
Zitat: |
...also ein Zeiger auf einen Zeiger auf eine Klasse. |
Jetzt weiß ich, was da nicht gestimmt hat. *ggg*
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!