Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: String aus Pointer ermitteln?

  Alt 26. Feb 2020, 14:53
Wenn es ein String ist und der Record+DLL von dir stammen, dann statt Pointer ein WideString verwenden.
WideString ist der BSTR von Windows (MSDN-Library durchsuchenSysAllocStringLen) und kann ohne ShareMem zwischen getrennten Modulen (EXE/DLL) übergeben werden.

Ansonsten mußt du halt casten (siehe Uwe), oder umkopieren, z.B. Delphi-Referenz durchsuchenSetString mit PBlob und BlobSize in einen AnsiString, UTF8String oder UnicodeString.

PChar und String wolltest du hier gleich vergessen, denn modulübergreifend sollte man immer nur mit statischen/festen Typen arbeiten.
String, Char und PChar sind tabu. (also AnsiString, UnicodeString, WideString, PAnsiChar, PWideChar, ...)
Integer/NativeInt könnte man auch mit auf die Liste setzen und dafür LongInt verwenden, aber da eine 32 Bit-DLL nicht in einem 64 Bit Programm läuft, wäre es fast egal, aber wenn es z.B. um Prozessübergreifende Datenübertragung/-speicherung geht, dann das auch nicht.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (26. Feb 2020 um 14:56 Uhr)
  Mit Zitat antworten Zitat