![]() |
Delphi-Version: 7
PByte als String (möglichst ohne kopieren)
Tach Allerseits,
ich habe ein Variable vom Typ PByte (LPData) und eine dazugehörige Längenangabe (FLength). Ich möchte den PByte über eine getAsString() als String zurückgeben. Bisher habe ich folgendes versucht: -Als PAnsiChar typcasten - Geht nicht weil bei FLength +1 nicht immer #0 steht -var s: String absolute LPData - geht oft aber nicht immer. Manchmal AV bei Adresse 00000000 (Referenzzählung?¿) Momentan kopiere ich die bytes wie folgt:
Delphi-Quellcode:
Wäre doch aber sicher irgendwie möglich das ohne zusätzliche kopiererei zu erledigen, or?
SetLength(Result, FLength);
CopyMemory(@Result[1], LPData, FLength); Shalom |
AW: PByte als String (möglichst ohne kopieren)
Delphi-Quellcode:
SetString gibt's schon ewig und wird doch immer übersehen. :wink:
function GetAsString:string;
begin LPData := ... FLength := .. SetString(Result, LPData, FLength); end; |
AW: PByte als String (möglichst ohne kopieren)
Ich glaube das geht ganz einfach nicht, denn:
@shmia: Dabei wird der Inhalt allerdings auch kopiert. [/edit] |
AW: PByte als String (möglichst ohne kopieren)
![]() In
Delphi-Quellcode:
ist quasi dein SetLength+Copy-Code drin verbaut.
SetString(Result, LPData, FLength);
Aber Kopieren wirst du oder ein fremder Code immer irgendwie müssen. Und bitte für das Result einen AnsiString verwenden, denn dein deine Bytes sind ja wohl ANSI (1 Byte pro Zeichen). Oder halt UTF8String, wenn es sich um derartige Daten handelt. (falls du mal irgendwann auf einen neuere unicodenutzenden Compiler umsteigst) [edit] Ups, Shmia hab ich irgendwie garnicht gesehn, bzw. falsch gesehn. :oops: |
AW: PByte als String (möglichst ohne kopieren)
Zitat:
|
AW: PByte als String (möglichst ohne kopieren)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz