Entwickler-Ecke
Dateizugriff - Dateiinhalt als Objekt behandeln
Roux - Mo 30.06.08 15:32
Titel: Dateiinhalt als Objekt behandeln
Hi!
Ist es möglich, dass ich aus einer Datei einen String auslese und über diesen auf ein gleichnamiges Objekt zuzugreifen?
Beispiel: Angenommen in einer Datei steht "Kreis", ich lasse diese Datei auslesen und möchte dann auf das Objekt Kreis (TShape) zugreifen. Vermutlich wird dies nicht funktionieren.
Roux
ub60 - Mo 30.06.08 16:00
Wenn Du auf allgemeine Objekte zugreifen willst, geht das (glaube ich) nicht.
In Deinem Fall sind es aber Komponenten. Da sollte Dir "FindComponent" und die F1-Taste weiterhelfen.
ub60
hazard999 - Mo 30.06.08 16:16
Doch das geht.
Die VCL macht nichts anderes. (DFM zB).
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var CompClass:string; begin ComponentClass := FindComponentClass(CompClass); Result := TComponent(ComponentClass.NewInstance); end;
initalization RegisterClass(TKreis); |
ub60 - Mo 30.06.08 16:21
"Doch das geht." finde ich eine tolle und gutnachvollziehbare Erklärung. :D :D
Hab mir eben mal den Quelltext von FindComponent angeschaut:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function TComponent.FindComponent(const AName: string): TComponent; var I: Integer; begin if (AName <> '') and (FComponents <> nil) then for I := 0 to FComponents.Count - 1 do begin Result := FComponents[I]; if SameText(Result.FName, AName) then Exit; end; Result := nil; end; |
Genau so könnte man es auch mit Objekten machen, wenn man Sie bei ihrer Erstellung in einem Array oder einer Liste "registriert".
ub60
hazard999 - Mo 30.06.08 16:27
Mit TPersistent braucht man kein RTTI.#
Zumindest nicht direkt.
Siehe meinen Post vorher.
Roux - Mo 30.06.08 18:46
Danke für die zahlreichen Antworten, ich bastel mal ein wenig. :)
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!