Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Probleme mit Pointer-Übergabe - Was mache ich falsch?

  Alt 24. Apr 2004, 20:10
Moin!

1. Eine Instanz ist schon ein Zeiger - daher ist Settings auch immer nur 4 Bytes gross, weil es ein Pointer ist (kannste ja mal mit SizeOf() nachprüfen). Somit brauchst du für deine Lösung einfach nur eine Variable vom Typ TSettings deklarieren und diese kannst du nehmen zum speichern.

2. Warum die AV kommt? Kein Problem, überlegen wir mal gemeinsam:

2a) du definierst eine Variable vom Typ "Zeiger auf TSettings" - ist ok.
2b) danach enthält der Zeiger nix - also Nil, weil er wurde noch nicht auf irgendwas gesetzt, daher zeigt er auf nix.
2c) Du weist der Adresse wohin FSettings gerade hinzeigt die Instanz Settings zu - und da liegt das Problem: FSettings zeigt nirgendwo hin, praktisch auf Adresse 0, da ihm noch keine gegeben wurde, wohin er zeigen soll. Daher die AV.

Abhilfe zu deinem Beispiel:

Ein Zeiger enthält immer nur die Adresse, wo was steht. Daher weise dem Zeiger einfach die Adresse von Settings zu:
  FSettings := @Settings; Dann geht das...

MfG
Muetze1
  Mit Zitat antworten Zitat