![]() |
objectreferenz austauschen ohne globale variablen!!!!
moin zusammen,
ich hab mal eine frage. es geht darum wie ich objectreferenzen uebertragen kann. das problem ist. ich erhalte in einer procedure die objectreferenz, muss sie aber in einer anderen procedure verarbeiten. momentan mach ich das mit einer globalen variablen von typ object. und zwar so. hab der einfachheit halber ein paar cast weggelassen.
Delphi-Quellcode:
so jetz meine fragen. globale variablen sind ja eine schlechte loesung, weil sie zu langwierigen und schwierigen debugging prozessen fuehren koennen.
var //global
reftestobject: ttestobject; procedure bla1 begin testobject1:=create(owner ....); end; procedure bla2 begin with reftestobject do begin //mach was zu tun ist end; end; meine frage jetzt wie kann ich das besser machen? ich dachte das ich da einen pointer verwenden koennte, aber der muss doch dann auch global definiert sein oder? eventuell so?
Delphi-Quellcode:
hoffe mir kann jemand ein paar tipps geben
var //global
reftestobject: pointer procedure bla1 begin testobject1^:=create(owner ....); end; procedure bla2 begin with @reftestobject do begin //mach was zu tun ist end; end; Gruß euer Richard ;) [edit=alcaeus]Delphi-Tags korrigiert. Mfg, alcaeus[/edit] |
Re: objectreferenz austauschen ohne globale variablen!!!!
und warum nicht:
Delphi-Quellcode:
die variable testobject1 musst natürlich irgendwo deklarieren, z.B. in deinem Form oder einem eigenen Variablen-Containertype ttestobject = class... procedure bla1 begin testobject1:=create(owner ....); bla2(testobject1); end; procedure bla2(_reftestobject: ttestobject); begin with _reftestobject do begin //mach was zu tun ist end; end; |
Re: objectreferenz austauschen ohne globale variablen!!!!
übergibt doch das Objekt einfach der Prozedur
Delphi-Quellcode:
Da war einer schneller
procedure bla2(AObject : TTestObject);
begin with AObject do begin end; end; Aufruf kann auch
Delphi-Quellcode:
sein
bla2(TTestObject.Create);
|
Re: objectreferenz austauschen ohne globale variablen!!!!
also das ist bei mir nicht so einfach moeglich, da es sich bei der 2 objectprocedure um eine standardprocedure eines vcl controls handelt.
ich muesste dann doch ein eigenes ereignis fuer das control implementieren bzw. das vorhandene überschreiben? eine globale klasse will ich nich. ist doch eigentlich das selbe wie ne globale variable, was das debugging betrifft. Gruß richard |
Re: objectreferenz austauschen ohne globale variablen!!!!
Hallo,
höst sich so an, als sei das ein Fall für ein Singleton Pattern, z.b. ![]() Woki |
Re: objectreferenz austauschen ohne globale variablen!!!!
Zitat:
Bau eine HelperKlasse:
Delphi-Quellcode:
THelper = class
public class procedure Bla2(_objekt : TMyObject; _class : TMyWinControl); end; |
Re: objectreferenz austauschen ohne globale variablen!!!!
@woki hab mir grade den code angeschaut und ihn nicht verstanden. außerdem ist es viel zu viel code und viel zu viel definitiongeschreibsel. nochmal ich will bloß
eine objectreferenz von einer procedure an eine andere uebergeben. das problem ist das die zweite procedure eine standard onclick procedure eines vcl controls ist. und ich nicht weis wie ich dieser den zusaetzlichen parameter (die objectreferenz) uebergeben kann. ich moecht das schnell haben und mit moeglichst wenig code. eventuell ginge es auch mit einem hilfobject. //bitte vezeiht mir syntaxfehler. es geht um prizipelle konzept z.b
Delphi-Quellcode:
der voretil bei dier methode ist,das das übergabe obecjt nur solange existiert wie es wirklich gebraucht wird. und so spaeter beim debugging keine seiteneffekte bringt. was haltet ihr davon?
type
objectreferenz=class; param: tobject; // klassenvariable fuer objectreferenz procedure 1 begin ... objectreferenz.create; objectreferenz.param:=create(owner,..); ... end; procedure 2 begin with objectreferenz.param do // mach was zu tun ist .. objectreferenz.free end; Gruß richadr |
Re: objectreferenz austauschen ohne globale variablen!!!!
//doppelpost geloescht sorry
richard |
Re: objectreferenz austauschen ohne globale variablen!!!!
Hallo,
Wenn du dieses Edit eh schon selber abgeleitet hast, könntest du aus diesem Globalen objekt ja eine Property des Edits machen. Ich kann mich ja auch irren ;) |
Re: objectreferenz austauschen ohne globale variablen!!!!
was fuer ein edit? wie kommst du auf edit? und nein ich hab von dem control keine ableitung
richard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 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