AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschied Pointer/Referenzvariablen

Ein Thema von Kouran · begonnen am 1. Mär 2006 · letzter Beitrag vom 1. Mär 2006
Antwort Antwort
Seite 2 von 2     12   
Frickeldrecktuxer_TM
(Gast)

n/a Beiträge
 
#11

Re: Unterschied Pointer/Referenzvariablen

  Alt 1. Mär 2006, 21:21
Zitat von GuenterS:
Zitat von sniper_w:
Zitat:
Seit wann ist dem so???
Seit es Delphi gibt.
Zitat:
Das trifft nur auf einfache Datentypen zu nicht aber auf Objekte.
Stimmt nicht.
Zitat:
c++ kenntnisse können hier hilfreich sein da man dort eine klare trennung zwischen objekten und objektreferenzen hat.
Das kann man nur zustimmen.
So jetzt widerlege ich mal die ersten zwei Punkte von Sniper_w, sogar mit Beweis zum selber ausprobieren.

Hab ihn als Anhang angehängt.

Man wird darin sehen, dass es keinen Unterschied macht ob ich nun

"var MyOBJ: TMyClass" oder "MyObj: TMyClass" schreibe

man wird sehen, dass es einen Unterschied macht ob ich nun

"myInt: integer" oder "var myInt: integer" schreibe.
ich hatte recht. du verwechselst objekt und objektreferenz. es gibt keinerlei wiederspruch deines codes zu meinen aussagen. um das zu tun was ich in meinem ersten beitrag angesprochen habe (das objekt ändern und nicht nur member des objektes) brauchst du faktisch einen var parameter oder einen pointer auf die objektreferenz wie in meinen beispielen gezeigt. deine aussage das alle objekte in der parameterliste einer funktion automatisch var parameter sind ist ganz einfach falsch.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#12

Re: Unterschied Pointer/Referenzvariablen

  Alt 1. Mär 2006, 21:25
Versuch deinem Objekt nil zuzuweissen in deine Prozedur.
Delphi-Quellcode:
procedure myProc( obj:TObject );
begin
  obj := nil;
end;
//
var
  o:TObject;
begin
  o := TObject.Create();
  myProc( o );
  if o<>nil then
   Application.MessageBox('sniper hatte recht','sniper');

  o.free;
end;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#13

Re: Unterschied Pointer/Referenzvariablen

  Alt 1. Mär 2006, 21:26
Hallo Günter,

keiner hier hat behauptet, dass es keinen Unterschied macht, ob Du Parameter mit var oder ohne übergibst. Der Unterschied zwischen Objekten und primitiven Typen ist der, dass ein Objekt eigentlich ein Pointer ist und damit var unnötig ist, um die Member eines Objektes zu verändern. Es wird ja nicht das Objekt kopiert und lokal verwendet, sondern tatsächlich das übergebene Objekt verwendet.
Damit kann ich das Objekt manipulieren; wenn Du aber die Objektreferenz selbst ändern möchtest, dann musst Du natürlich var verwenden.
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#14

Re: Unterschied Pointer/Referenzvariablen

  Alt 1. Mär 2006, 21:30
genau:
Delphi-Quellcode:
procedure Test1(AObj: TObject);
  begin
  AObj := TObject.Create;
  end;

procedure Test2(var AObj: TObject);
  begin
  AObj := TObject.Create;
  end;


var O1, O2: TObject;
begin
O1 := TObject.Create;
O2 := O1;
Test1(O1);
// hier ist O1 = 02:
if O1 = O2 then
  ShowMessage('Hah ;D ');

O1 := TObject.Create;
O2 := O1;
Test2(O1);
//hier ist O1 <> O2
if O1 <> O2 then
  ShowMessage('Hah ;D ');

end;
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Unterschied Pointer/Referenzvariablen

  Alt 1. Mär 2006, 21:30
Ja ok, ich gebs ja zu ... befand mich ein wenig am Irrweg. Konnte man aber deutlich an meinem Beispiel sehen und für diese Fälle ists ja wirklich wurscht.


Hab diese zwei Varianten auch noch dazugepackt in mein TestProjekt, kann man sich anhand des Quellcodes gut anschaun. Vielleicht hilf diese Diskussion ja auch noch jemand anderen, diese "Falle" zu vermeiden.
Angehängte Dateien
Dateityp: zip testprojekt_796.zip (191,6 KB, 1x aufgerufen)
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz