Autor Beitrag
dings
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 05.10.10 09:16 
Hallo,
ich möchte mit Delphi 7 einen automatischen XmlSerializer schreiben .
Dazu müssen natürlich alle Objekte einer komplexen Klassenheriarchie beim Deserialisieren erzeugt werden.
Aber wie geht das wenn man nur eine Variable hat und den Typ nicht kennt?
bzw der Typ kann zwar mit TypInfo.pas abgefragt werden, aber dann hat man ja nur nen String
ist es möglich mit Delphi eine Instanz eines Objektes zu erzeugen ohne den Typ zu kennen?
vielleicht braucht man einen Zeiger auf den constrtuctor,

*uffz*

wie geht das?

kann mir jemand die "Class of" - Syntax erklären?
wozu gibt es diese Syntax:

ausblenden Delphi-Quelltext
1:
2:
3:
dings = class
end;
dingsClass = class of dings;



Vielen Dank im voraus
Dings

Moderiert von user profile iconKha: Delphi-Tags hinzugefügt

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

OK, ein Objekt von einem bestimmten Typ erzeugen wenn man nur den Klassennamen in einem String hat geht ja eigentlich ganz einfach so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
uses {...} Classes;
//..
function Creator(classname: String): TObject; 
begin
  result := GetClass(classname).Create;
end;

var tst: TObject;
begin
  tst := Creator('TMyDings');
  MsgBox(tst.ClassName);
end;


Voraussetzung ist dass vorher die Klasse registriert wurde:

RegisterClass(TMyDings)

Gruss
Dings

Moderiert von user profile iconKha: Delphi-Tags hinzugefügt

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Achja bevor ichs noch vergess:
die Klasse die de-/serialisiert werden soll muss natürlich auch TPersistent oder auch TCollectionItem sein.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  TMyDings = class(TPersistent)
  end;
  //oder auch...
  TMyDings = class(TCollectionItem)
  end;

@Kha danke fürs taggen :)