Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Pointer (https://www.delphipraxis.net/15714-pointer.html)

d3g 6. Feb 2004 19:59

Re: Pointer
 
Zitat:

Zitat von Pseudemys Nelsoni
Delphi-Quellcode:
var
  x: ^integer;
  y: ^integer;
begin
  x^ := 42;
  y^ := 13; // überschreibt die 42?
end;

Du hast die Zuweisung von x zu y dazwischen vergessen, die im Video auch vorkommt.

Zitat:

Zitat von Pseudemys Nelsoni
hoi, das ist sehr gut erklärt, danke :thuimb:

ich hätt noch eine frage jo :wink:, und zwar:

Zitat:

byte1 := @gesamt[0]; //byte1 auf dein speicher von gesamt[0] zeigen lassen
byte2 := @gesamt[1]; //byte2 auf dein speicher von gesamt[1] zeigen lassen

wieso haben byte1 und byte2 am ende kein "^" ? setzt man den nur ran bei werte-zuweisungen?

byte1^ := @gesamt[0] hieße: In die Variable, auf die byte1 zeigt, die Adresse von gesamt[0] hineinschreiben. byte1 := @gesamt[0] bedeutet: byte1 auf die Adresse von gesamt[0] zeigen lassen.

SirThornberry 6. Feb 2004 20:17

Re: Pointer
 
@Pseudemys Nelsoni:
Delphi-Quellcode:
byte1 := @gesamt[0]; //byte1 auf dein speicher von gesamt[0] zeigen lassen
byte2 := @gesamt[1]; //byte2 auf dein speicher von gesamt[1] zeigen lassen
ist nicht das gleiche

byte1 und byte2 sind vom Typ "^Char" also ein Zeiger auf einen "Char" und ein Zeiger ist eine Adresse im speicher (Zahl)
Am besten man stellt sich einen Pointer als zahl vor.
Wenn du byte1 noch nix zugewiesen hast ist byte1 also irgend eine zahl
wenn du
Delphi-Quellcode:
byte1 := @gesamt[0]
schreibst wird byte1 die speicheradresse (zahl) von gesamt[0] zugewiesen
somit merkst du dir im prinzip in der variablen byte1 die anfangsspeicheradresse von gesamt[0]
Delphi-Quellcode:
byte1 := gesamt[0]
sollte also nicht gehen weil "gesamt[0]" keine zahl ist
deswegen dereferenziert man einen Zeiger
Wenn du also "byte11^" schreibst heißt es das du an die stelle im speicher wo byte1 hinzeigt was schreiben willst.. nochmal kurz zusammenfassend
-"@variablenname" gibt die speicheradresse der variablen zurück
-"pointer :=" lässt den zeiger auf eine andere position im speicher zeigen
-"pointer^ :=" schreibt was an die stelle im speicher wo pointer hinzeigt

Pseudemys Nelsoni 6. Feb 2004 20:20

Re: Pointer
 
ah, ich glaub so langsam versteh ich das (endlich) mal :mrgreen: thx.

Edit: ah, SirThornberry hat noch was geschrieben, das les ich dann jetzt mal, hatte das gar nicht gesehen

hatte mich bei meinem beispiel ganz verschrieben, ich meinte ob:

byte1 := @gesamt[0];

und:

byte1 := Addr(gesamt[0]);

das gleiche sind, sorry :oops:

SirThornberry 6. Feb 2004 20:33

Re: Pointer
 
jup, das ist das gleiche

Pseudemys Nelsoni 6. Feb 2004 20:43

Re: Pointer
 
danke, das hat mir gholfen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 Uhr.
Seite 2 von 2     12   

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