AGB  ·  Datenschutz  ·  Impressum  







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

einer variable eine adresse zuweisen

Ein Thema von c113plpbr · begonnen am 14. Jan 2005 · letzter Beitrag vom 15. Jan 2005
Antwort Antwort
Seite 2 von 4     12 34      
NicoDE
(Gast)

n/a Beiträge
 
#11

Re: einer variable eine adresse zuweisen

  Alt 14. Jan 2005, 18:52
Du suchst Delphi-Referenz durchsuchenabsolute.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  Foo: Integer;
  Bar: Integer absolute Foo;
begin
  Foo := 42;
  ShowMessage(IntToStr(Bar));
end;
Ich würde trotzdem den von Sprint gezeigten Weg empfehlen.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: einer variable eine adresse zuweisen

  Alt 14. Jan 2005, 18:56
Wenn ich sage:

Delphi-Quellcode:
a := 5;
b := a;
Dann verweist doch b auch nur auf die Speicheradresse von a. Zumindest meint dies mein Informatiklehrer, ist das nicht korrekt?
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#13

Re: einer variable eine adresse zuweisen

  Alt 14. Jan 2005, 19:01
Zitat von Matze:
Wenn ich sage:

Delphi-Quellcode:
a := 5;
b := a;
Dann verweist doch b auch nur auf die Speicheradresse von a. Zumindest meint dies mein Informatiklehrer, ist das nicht korrekt?
Nein, das ist falsch. "a" und "b" haben verschiedene Speicheradressen, in denen jeweils der Wert 5 steht. Bei jeder Zuweisung von Variablen wird die komplette Variable kopiert (auch wenn es ein Record ist).

Eine Speicheradresse weist man mit dem Adress-Operator an eine Zeigervariable zu:
Delphi-Quellcode:
var
  a: Integer;
  pa: PInteger;
begin
  a := 5;
  pa := @a; // pa zeigt auf die Speicheradresse von a
end;
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#14

Re: einer variable eine adresse zuweisen

  Alt 14. Jan 2005, 19:04
Zitat von Matze:
Wenn ich sage:

Delphi-Quellcode:
a := 5;
b := a;
Dann verweist doch b auch nur auf die Speicheradresse von a. Zumindest meint dies mein Informatiklehrer, ist das nicht korrekt?
Wenn das so wäre, würde, wenn du b z.B. den wert 1 übergibst sich doch auch der wert von a ändern, oder? und das tut er nicht ... (zum glück ... )

Absolute würde warscheinlich gehen, wenn dies eine variable aus meiner DLL wäre, was aber nicht so ist. Und so wie ich das sehe, kann man mit absolute zwar exakt das tun was ich will, aber nur mit variablen, die in meinem quellcode deklariert sind ... oder geht da etwa was mit adressen?

@Oxmyx: lies mal die anderern posts, und du wirst erfahren, dass ich dereferenzierungen im code vermeiden will, womit mir ein pointer darauf nicht besonders viel weiter hilft.

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#15

Re: einer variable eine adresse zuweisen

  Alt 14. Jan 2005, 19:11
Zitat von c113plpbr:
@Oxmyx: lies mal die anderern posts, und du wirst erfahren, dass ich dereferenzierungen im code vermeiden will, womit mir ein pointer darauf nicht besonders viel weiter hilft.

ciao, Philipp
Ich wollte lediglich die Annahme von Matze korrigieren, dass Zuweisungen keine Kopieroperationen wären.
  Mit Zitat antworten Zitat
stefan2005

Registriert seit: 30. Sep 2003
Ort: Puchheim
250 Beiträge
 
Delphi 6 Personal
 
#16

Re: einer variable eine adresse zuweisen

  Alt 14. Jan 2005, 19:24
hi,
ich hatte mal gehört, dass man z.B. einer Integer Variable keine neue Addresse zuweisen kann, da ein Integer nicht dynamisch, sondern schon vom Compiler im Code erstellt wird.

Sprich: Der Compiler legt bei der Kompilierung schon 4 Bytes für einen Integer in der EXE Datei an.

ich weiss aber nicht, ob dies auch auf den Delphi Compiler zutrifft und bitte um Berichtigung, wenns nicht stimmt.

cu,
stefan2005
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#17

Re: einer variable eine adresse zuweisen

  Alt 14. Jan 2005, 19:48
eine neue adresse zuordnen kann man nicht. Deswegen arbeitet man in so einem fall ja auch mit Pointern, "absolute" und/oder propertys
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#18

Re: einer variable eine adresse zuweisen

  Alt 14. Jan 2005, 19:55
Nagut, dann muss ich mich wohl geschlagen geben ...

trotzdem danke für eure ratschläge ... ciao & thx, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#19

Re: einer variable eine adresse zuweisen

  Alt 14. Jan 2005, 20:30
was stört dich an der "absolute" Variante?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#20

Re: einer variable eine adresse zuweisen

  Alt 14. Jan 2005, 21:26
Zitat von SirThornberry:
was stört dich an der "absolute" Variante?
Es stört mich nichts daran, nur ist sie leider hier nicht möglich, weil die variablen auf die ich zugreife, nicht in meinem Quellcode deklariert sind. Und absolute funktioniert nur bei variablen, die in meinem Quellcode deklariert wurden, und nicht für diese zu denen ich nur einen pointer habe (bzw. eine statische adresse). Ansonsten wäre es perfekt.

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 08:15 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