![]() |
Ermitteln ob ein Objekt (anh. "name"-Eigenschaft)
Hallo,
ich möchte bei Bedarf ein Datenbank-Objekt (Klasse TDatabase) instanziieren, dynamisch weil ich es nicht immer sicher benötige. Im Falle der Notwendigkeit möchte ich es kreieren , in etwa mit:
Delphi-Quellcode:
Das ganze möchte ich aber nur dann machen, wenn es innerhalb Application noch KEIN TDatabase-Objekt mit dem Namen MyDatabaseObjectName gibt. Die Frage ist, wie ich genau das feststelle.
MyDatabaseObjectName:= TDatabase.Create(Application);
Ich wüßte mir nicht anders zu helfen als so:
Delphi-Quellcode:
Aber das jedes mal? Geht das nicht "direkter"? Ich denke Delphi ist so objektorientiert, dann muss man doch fragen können ob es ein gewisses Objekt gibt oder nicht.
function existiert_datenbank_schon: boolean;
var intv: integer; retv: boolean; begin i:= 0; retv:= false; while (i < Application.ComponentCount) and (not retv) do begin if Application.Components[i] is TDatabase then if TDatabase.Components[i].name = 'MyDatabaseObjectName' then retv:= true; inc(i); end; Viele Grüße! |
Re: Ermitteln ob ein Objekt (anh. "name"-Eigenscha
oder .FindComponent()
|
Re: Ermitteln ob ein Objekt (anh. "name"-Eigenscha
Hi,
ich benutze meis folgenden Weg:
Delphi-Quellcode:
Öffentlich ist nur die function MyDataBaseObject.
interface
uses DBTables; type TMyDataBasObject = class(TDataBase) private end; function MyDataBaseObject: TMyDataBasObject; implementation Var FMyDataBaseObject: TMyDataBasObject = nil; function MyDataBaseObject: TMyDataBasObject; begin if (FMyDataBaseObject = nil) then begin FMyDataBaseObject := TMyDataBasObject.Create(nil); // oder so, dann kann finalization entfallen // FMyDataBaseObject := TMyDataBasObject.Create(Application); end; Result := FMyDataBaseObject; // TODO -cMM: TMyDataBasObject.MyDataBaseObject default body inserted end; initialization finalization if Assigned(FMyDataBaseObject) then FMyDataBaseObject.Free; end. Damit wird das Objekt automatisch erzeugt, wenn ich es darüber anspreche. Cu, Frank [EDIT] Code war fehlerhaft...[/EDIT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz