![]() |
externe Procedure ruft variable in Objekt auf??
Hey Leute, ich habe ein (für mich) schwieriges Problem:
Ich programmiere eine Komponente. Ich habe eine Variable in einem Objekt. Diese variable möchte ich in einer Procedure ändern, welche sich global in der Unit befindet, nicht im Objekt. Da das Objekt jedoch zur Zeit der Komponentenentwicklung logischerweise nicht erzeugt ist, kann ich nicht auf diese Variable zugreifen. die Procedure die diese Variable ändern soll wird einer funktion, die ich aus einer DLL importiere in einer Proceduralen Variable übergeben. daher darf ich die procedure nicht im Objekt deklarieren, sonst kommt die Stackverarbeitung durcheinander! Bitte um Hilfe |
Re: externe Procedure ruft variable in Objekt auf??
ich nabe nun folgendes versucht: ich übergebe der Funktion aus der DLL eine Varible, der eine Procedure Zugewiesen ist (Procedurale variable). Diese Procedure befindet sich jedoch innerhalb eines Objektes (im Public bereich). Leider funktioniert das jedoch nicht, ich bekomme jedes Mal eine Zugriffsverletzung bei Adresse 000000008. Wie kann ich das denn ändern?? Hiiiiiiiiilfe :firejump:
|
Re: externe Procedure ruft variable in Objekt auf??
Du könntest dieses Objekt im Constructor erzeugen oder du verwendet Class Proceduren (da natürlich auch nicht mit nil-Objekten spielen). Diese hängen tatsächlich nicht am Objekt sondern direkt an der Klasse, siehe auch Delphi-Hilfe
|
Re: externe Procedure ruft variable in Objekt auf??
wenn ich das Object aber im Constructor erzeuge, dann habe ich doch zwei objektinstanzen, wenn ich die Komponente auf der Form Platziere oder?!
|
Re: externe Procedure ruft variable in Objekt auf??
Moin Clownxx,
in der Hoffnung Dein Problem verstanden zu haben... Mache die Variable im Objekt doch als Property zugänglich. Dann bräuchtest Du in der Prozedur nur noch den Zugriff auf eine Variable die das Objekt enthält. Beispiel:
Delphi-Quellcode:
unit GlobaleUnit;
interface uses TypeUnit; //... var vMyObjekt : TMyObject; procedure GlobalProc; implementation procedure GlobalProc; begin vMyObjekt.MyProperty := 1; end;
Delphi-Quellcode:
Wo Du das Objekt nun erzeugst, bzw. die Variable vMyObject füllst sei jetzt mal dahingestellt.
unit TypeUnit;
type TMyObject = class private FMyProperty : integer; public property MyProperty : integer read FMyProperty write FMyProperty; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 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