VarPtr

06/06/2011 - 12:32 von Heinz-Mario Frühbeis | Report spam
Hallo!

Bleibt VarPtr *immer* gleich? (Für die selbe Variable natürlich)

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Schmidt
06/06/2011 - 16:03 | Warnen spam
Am 06.06.2011 12:32, schrieb Heinz-Mario Frühbeis:

Bleibt VarPtr *immer* gleich?
(Für die selbe Variable natürlich)


Ja, den zurückgegebenen Pointer kann man in einer
anderen Variable (im selben "Scope") puffern.

Was aber z.B. nicht funktioniert, ist wenn Du
einen VarPtr aus einer "gedimten" (lokalen)
Prozedur-Variable irgendwohin rausreichst - und
dann erwartest, dass der "draussen ewig gültig ist".
Ein solcher (lokaler) VarPtr ist nur solange
"valid", solange der Prozedur-Scope gilt (die
Prozedur nicht verlassen wurde).

Für globale Variablen funktioniert das
Puffern und Herumreichen eines VarPtrs
(per PufferVariable) dagegen (logischerweise)
ohne solche Scope-Einschrànkungen.

Aufpassen muss man bei globalen Arrays - wenn
Du da z.B. ein:
pArrMemStart = VarPtr(GlobalArray(0))
ausführst, dann ist pArrMemStart nur solange
verwendbar, wie Du *nicht* an die Allokation
des Arrays rührst (also falls Redim nötig, dann
müsstest Du auch pArrMemStart updaten).

Olaf

Ähnliche fragen