String-Abhängigkeiten

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Konvertierungen von String in PChar


Gelegentlich muss ein langer String in einen null-terminierten String konvertiert werden, wenn Sie beispielsweise eine Funktion aufrufen, die einen PChar als Parameter benötigt. Wenn Sie einen String in einen PChar umwandeln müssen, sind Sie dafür verantwortlich, dass der resultierende PChar verfügbar bleibt. Da für lange Strings eine Referenzzählung durchgeführt wird, wird der Abhängigkeitswert des Strings um Eins erhöht, obwohl der eigentliche Referenzzähler nicht erhöht wird. Sobald der Referenzzähler den Wert Null erreicht, wird der String freigegeben, trotz der noch vorhandenen Abhängigkeit. Der umgewandelte PChar ist ebenfalls nicht mehr verfügbar, obwohl die Routine, an die er übergeben wurde, möglicherweise noch darauf zugreift. Beispiel:

 procedure my_func(x: string);
 begin
   // Operation mit x
   some_proc(PChar(x)); // Umwandlung des Strings in PChar
   // Jetzt müssen Sie sicherstellen, dass der String verfügbar bleibt,
   // solange er von some_proc benötigt wird
 end;

Siehe auch