![]() |
Objekt innerhalb Event zuweisen
Hallo zusammen,
ich habe eine Problem, folgenden Fehler zu verstehen: Nehmen wir an, es gibt unten aufgeführte Event-Methode: Ich übergebe das Objekt "aJob" und wollte diesem ein anderes Objekt, das hier gerade erstellt wurde, zuweisen (hier: DBSession) Das Event geht übriges von "aJob" selbst aus!
Delphi-Quellcode:
Warum gibt es hier eine Fehlermeldung?
procedure TFrmMain.GetDBSession(aJob: TJob);
begin aJob.DBSession:= TDBSession.Create; end; "aJob" ist doch ein Pointer auf ein Objekt. Warum kann ich diesem Objekt hier nicht wie üblich etwas zuweisen? Ich weiß, dass es mit einer solchen Deklarierung funktioniert:
Delphi-Quellcode:
procedure TFrmMain.GetDBSession(var aDBSession: TIDBIntf);
begin aDBSession:= TDBSession.Create; end; Falls aber jemand weiß, *warum* das so ist, würde ich gerne dazulernen. Vielleicht ist ja bei obiger Variante nur ein Lese-Zugriff erlaubt etc. Dank und Gruß Pfoto |
Re: Objekt innerhalb Event zuweisen
Ich Vermute mal Das TJob nicht zu TDBSession kompatibel ist.
|
Re: Objekt innerhalb Event zuweisen
Zitat:
Ich weise in der zweiten Methode die Variable DBSession später auch TJob zu. Gruß Pfoto |
Re: Objekt innerhalb Event zuweisen
Was für ein Fehler tritt auf?
Was für ein Event? |
Re: Objekt innerhalb Event zuweisen
Zitat:
Dieser soll eine Datenbankverbindung (DBSession) holen. Da diese Jobs von mehreren Threads ausgeführt werden, soll jeder Job sich per synchroniziertem Event eine Instanz von DBSession holen und damit arbeiten. Ich ging davon aus, dass der Fehler (eine Schreibschutz- Verletzung) allgemeiner Natur sei, weil ich hier etwa einen logischen Fehler gemacht habe... (weil man z.B. nur lesend auf übergebene Objekte zugreifen kann) Gibt es da etwas in dieser Richtung? Gruß Pfoto |
Re: Objekt innerhalb Event zuweisen
Meinst du mit Schreibschutzverletzung ne AV? Hast du schon mal versucht durch Debuggen herauszufinden wo der Fehler genau auftritt?
|
Re: Objekt innerhalb Event zuweisen
evtl. ist der Fehler auch nur daas var?
im ersten fall übergibst du den Parameter als const somit kannst du den Parameter selbst durch die Funktion nicht manipulieren...(Delphi erzeugt eine neue lokal gültige Variable mit gleichen Namen, aber der Parameter selbst wird nicht verändert). sollte in dem Fall so funktionieren...
Delphi-Quellcode:
HTH Frank
procedure TFrmMain.GetDBSession(var aJob: TJob);
begin aJob.DBSession:= TDBSession.Create; end; |
Re: Objekt innerhalb Event zuweisen
... aber da er aJob nicht ändert, braucht er das nicht. Es wird eine Kopie des "Instanzenzeigers" angelegt, aber trotzdem zeigen beide (Aufrufer Variable & Parameter) auf die gleiche Instanz. Daher wäre eine Zuweisung auf die Eigenschaft der Klasse in beiden Fällen ohne Probleme möglich und valid.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 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