![]() |
TDatabase mit Assign kopieren?
Hallo,
die Methode Assign der TDatabase scheint nicht zu funktionieren (D7). Ich kann nicht Datbase1.Assign(Database2) durchführen. Weiss jemand Rat? Ciao, sepp001 |
Re: TDatabase mit Assign kopieren?
Hallo sepp001,
Zitat:
Code:
Datbase1 := Database2;
|
Re: TDatabase mit Assign kopieren?
Zitat:
Ich denke eher das eine Assign von einer TDatabase auf eine andere auch nicht sinnvoll ist, da ja z.B. das Property DatabaseName eindeutig sein muss. Schau einfach mal in den Delphi-Source-Code ob für TDatabase überhaupt ein überladene Version der Assign-Methode definiert ist? |
Re: TDatabase mit Assign kopieren?
Zitat:
einem anderen TDatabase-Objekt zuzuweisen. Du kannst die Eigenschaften ja von Aussen zuweisen:
Delphi-Quellcode:
Wenn die beiden Objekte exakt die gleichen Eigenschaften haben, würde dies sicher die
Database2.Databasename := Database1.Databasename;
Database2.LoginPrompt := Database1.LoginPrompt; ... Performance der BDE stören. Wenn die beiden Objekte nicht genau die gleichen Eigenschaften haben, brauchst du auch kein Assign. Vielleicht bist du auch nur schreibfaul und wolltest folgendes:
Delphi-Quellcode:
aber das kann man auch vergessen, da bei Assign auch die Eigenschaft Connected kopiert worden wäre.
Database2.Assign(Database1);
Database2.Databasename := 'irgendneandereDB'; |
Re: TDatabase mit Assign kopieren?
@Bernhard,
Zitat:
Die Frage müsste von sepp001 anders gestellt werden. @sepp001 Wieso willst du oder für was brauchst du einen Database.Assign, was willst du damit bezwecken? Welches Problem hast du überhaupt, damit du auf einen Database.Assign gekommen bist? Zitat:
- direkte Objektzuweisung per Referenz - neue Instanz erzeugen und jedes einzelne Property mit den Werten der Source-Instanz füllen dabei darf aber der Database.Name nicht identisch sein oder mit einen Zähler versehen DatabaseNeu.Name := Database1.Name + IntToStr (n); |
Re: TDatabase mit Assign kopieren?
Hallo:
Sinn und Zweck der ganzen Angelegenheit: ich will eine Database-Komponente an eine DLL übergeben. Da mir die DLL aber ohne meinen Einfluss an der original übergebenen herumpfuscht (da sie, wie richtig bemerkt, als Referenz übergeben wird), möchte ich eine exakte Kopie rüberschieben. Bleibt wohl doch nur der Weg über die Propertybelegung... :( Ciao, sepp001 |
Re: TDatabase mit Assign kopieren?
@sepp001,
Zitat:
Wenn eine Verbindung über ein Database-Objekt mal steht, was soll man dann noch viel verändern wollen? Ich will nur damit ausdrücken, dass du nochmals deinen Source analysieren solltest wo Veränderungen im Database-Objekt der DLL entstehen (könnten). Häufig ist in der DLL oder im Form das Database.Active := True gesetzt, und dann fetzt es natürlich. |
Re: TDatabase mit Assign kopieren?
Zitat:
Wenn nun beide Objekt nicht per Formular-Verwaltung gesichert sind, sondern dynamisch erzeugt werden, hast Du danach ein schönes Speicherleck bzw. kracht es wenn du beim zweiten Objekt die Free-Methode aufrufst. |
Re: TDatabase mit Assign kopieren?
@Bernhard,
Zitat:
Zitat:
a2) dann weiss er auch was er damit macht b) wenn eine Referenz einer DLL übergeben wird, dann gehört auch kein .Free in die DLL die dieses Referenz-Objekt zerstören könnte c1) wenn dynamisch Objekte erstellt werden, dann a2) c2) ist sowie immer vorsicht geboten c3) wird auch der Aufwand größer um die dynamischen Objekte wieder zu zerstören (ObjektListen, Interface, RTTI, etc.) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 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 by Thomas Breitkreuz