Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11

Re: Sowas wie "PChar" nur sollte es "nil"

  Alt 16. Jun 2005, 19:04
Zitat von Luckie:
Probier mal:
Pointer(s); Zu mindest ersteres sollte nil zurückgeben, wenn ich es richtig in Erinnerung habe.
Das tut es auch.

PChar(S) ruft eine System-Funktion auf, die folgendes macht:

Delphi-Quellcode:
function StrToPChar(const S: string): PChar;
const
  EmptyPChar: PChar = #0;
begin
  Result := Pointer(S);
  if Result = nil then
    Result := EmptyPChar;
end;
Wie man sieht, wird hier Pointer(S) benutzt, was entweder einen Zeiger auf das erste Zeichen oder bei einem Leerstring den Wert nil zurückliefert.


Zitat:
Oder
@s[1];
Da passiert etwas mehr. Zum einen wird vorerst mal die Prozedur UniqueString aufgerufen, die ggf. den gesamten String kopiert, wenn der Referenzzähler = -1 (Konstante) oder > 1 (mehrere String referenzieren auf die Daten) ist.

Zudem dürfte es bei eingeschalteter Breichsüberprüfung bei einem Leerstring krachen.


Zitat:
Pointer(s[1])
Das ist nun vollkommen falsch. Damit bekommt man einen Zeiger der Form $000000xx, weil man das erste Zeichen des String (=Char) in einen Zeiger typecastet.
  Mit Zitat antworten Zitat