Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#9

AW: allgemeine Pointer Frage

  Alt 26. Nov 2012, 14:04
Ein "LongString" ist halt intern ein Zeiger.

Man könnte nun str[1] übergeben, oder PChar(str)^ , nur daß Ersteres knallt, wenn der String leer ist, wärend PChar im Falle eines Leerstrings (intern nil) einen Zeiger auf einen alternativen "leeren String" zurückgibt (also einen "String" aus #0 bestehend, bzw. genauer aus #0#0)

Zitat:
Wenn myarray[I].mystring mir nur die SpeicherAdresse in den STREAM schreibt dann kann Ich doch myarray[I].mystring^ direkt dereferenzieren oder?
Du hast das jetzt in einer Datei gespeichert ... ja, dann kannst du das "jetzt" auch wieder dereferenzieren,
aber lies die Datei mal morgen wieder aus (abgesehn davon, daß du dir dann beim Auslesen des "Zeigers" die automatische Speicherverwaltung des Strings zerschossen hast)

Deswegen gibt es ja auch spezialisierte Streams, welche direkt mit Strings umgehen können.
TStringStream, TReader, TWriter, TStringList uvm.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (26. Nov 2012 um 14:09 Uhr)
  Mit Zitat antworten Zitat