Autor Beitrag
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Mi 27.11.02 12:57 
Ich habe über Metatypen einen Array definiert.
Dieser ist in einer Unit ausgelagert.

ausblenden 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:

ausblenden 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:

ausblenden 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:

ausblenden 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.

_________________
Stellen Sie sich bitte Zirkusmusik vor.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: 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.

_________________
Stellen Sie sich bitte Zirkusmusik vor.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: 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*

_________________
Stellen Sie sich bitte Zirkusmusik vor.