AW: String/Char-Pointer aus C# DLL korrekt auslesen
2. Jan 2014, 14:41
OUT/VAR bedeutet, daß die "Variable" geändert werden kann, da eine Referenz auf den Speicher der Variable übergeben wird.
Das wird hier aber nur benötigt, wenn die Funktion den Speicher resserviert und dann den neuen Pointer zurückgeben muß.
Hier wird aber nur ein "unveränderlicher" Zeiger übergeben und nur der Inhalt der aufgezeigten Speichers verändert.
(Leider) kann man bei Pointern nicht angeben, ob der Inhalt des Speichers verändert wird (der Inhalt des referenzierten Speichers kann gelesen oder überschrieben werden), da IN/OUT/VAR/CONST nur eine Beziehung zur Variable selber haben.
Der "Wert" der Variable, also die Adresse des Speichers, wird ja nicht verändert.
Wenn man es genau nimmt, dann könnte eine procedure IchBinBöse(const S: string);
dennoch den Inhalt des strings verändern. (auch wenn standardmäßig die Compilermagic und die Prüfungen des Compilers versuchen das zu verhindern, was man aber böswillig umgehen könnte)
$2B or not $2B
Geändert von himitsu ( 2. Jan 2014 um 14:46 Uhr)
|