String aus Pointer ermitteln?
Hallo,
aus einer DLL-Anfrage erhalte ich folgende Recordstruktur zurück:
Delphi-Quellcode:
In PBlob soll ein RTF-Text stehen, wie bekomme ich den aus dem Record?
TDLLRec = record
Nr : String[3]; BlobSize : Integer; PBlob : Pointer; end; Danke Ciao Stefan |
AW: String aus Pointer ermitteln?
Kommt drauf an, ob der Text in Ansi, UTF-8 oder Unicode (oder sonstwas) codiert ist. Einfach mal schauen was bei
Delphi-Quellcode:
,
PAnsiChar(PBlob)
Delphi-Quellcode:
und
PUTF8Char(PBlob)
Delphi-Quellcode:
rauskommt.
PChar(PBlob)
|
AW: String aus Pointer ermitteln?
Wenn es ein String ist und der Record+DLL von dir stammen, dann statt Pointer ein WideString verwenden.
WideString ist der BSTR von Windows (SysAllocStringLen) und kann ohne ShareMem zwischen getrennten Modulen (EXE/DLL) übergeben werden. Ansonsten mußt du halt casten (siehe Uwe), oder umkopieren, z.B. SetString 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. |
AW: String aus Pointer ermitteln?
Danke, das hatte ich auch schon, aber der Inhalt des Blob war kaputt, da konnte ich lange suchen...
Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz