![]() |
AW: string ein Alias für UnicodeString
Zitat:
Ka was du mir damit sagen willst. ;) gruss |
AW: string ein Alias für UnicodeString
In Delphi ist
Delphi-Quellcode:
ein managed type, um dessen Freigabe man sich nicht kümmern muss. UnicodeString ist nur ein Alias für
string
Delphi-Quellcode:
, so in der Art:
string
Delphi-Quellcode:
Ein
type
UnicodeString = string;
Delphi-Quellcode:
ist ein non-managed type, um dessen Freigabe sich jemand kümmern muss. Eine Konvertierung von
WideString
Delphi-Quellcode:
nach
WideString
Delphi-Quellcode:
erzeugt einen neuen
string
Delphi-Quellcode:
, entbindet aber nicht von der Pflicht zur Freigabe des
string
Delphi-Quellcode:
.
WideString
|
AW: string ein Alias für UnicodeString
Danke.
Er meldet mir hier einen Speicherleck.
Delphi-Quellcode:
FAudioSessionInfo.DisplayName := string(GetVerInfo(FileName));
DisplayName = string GetVerInfo = WideString Wenn ich jetzt den WideString von GetVerInfo an DisplayName übergebe wie soll ich ihn dann freigeben er wird im weiteren verlauf benötigt. Hmmm.... gruss |
AW: string ein Alias für UnicodeString
Zitat:
Delphi-Quellcode:
liefert einen
GetVerInfo
Delphi-Quellcode:
zurück, um dessen Freigabe du dich kümmern musst. Die Konvertierung nach
WideString
Delphi-Quellcode:
erzeugt einen neuen
string
Delphi-Quellcode:
, lässt aber den Speicherbereich des
string
Delphi-Quellcode:
unangetastet. Da du an den
WideString
Delphi-Quellcode:
so aber nicht mehr herankommst, kannst du ihn auch nicht freigeben. Daher entsteht hier ein Speicherleck.
WideString
|
AW: string ein Alias für UnicodeString
Zitat:
gruss |
AW: string ein Alias für UnicodeString
Zitat:
Ein WideString ist einfach nur ein Pointer auf ein WideChar-Array mit einem Längenbyte davor: ![]() Bei einem string gibt es viel mehr Informationen: ![]() Delphi kann ja nicht einfach ein paar Daten vor dem WideString in den Speicher schreiben, um die fehlenden Informationen herzuzaubern. |
AW: string ein Alias für UnicodeString
Danke Uwe muss mal sehen wie ich das gelöst bekomme.
gruss |
AW: string ein Alias für UnicodeString
Woher kommt denn diese Funktion GetVerInfo?
Sie scheint weder Bestandteil der Windows-API noch zum Delphi-Framework zugehörig zu sein. |
AW: string ein Alias für UnicodeString
Zitat:
![]() ![]() ![]() Ich habe es gelöst musste nur an der untersten Ebene anfangen zu suchen und dort die Datentypen nach WideString umlegen. Da mir EurekaLog und ReportMemoryLeaksOnShutdown nichts mehr melden sollte es in Ordnung sein. gruss |
AW: string ein Alias für UnicodeString
Also in der Unit UVerInfoRoutines.pas aus dem article-20-demo.zip ist das wie folgt definiert:
Delphi-Quellcode:
{
GetVerInfo: Thin wrapper around API routine. Loads version information for a given file into a buffer. Raises exception if version information can't be read. } procedure GetVerInfo(const FileName: string; const Size: Integer; const Buffer: Pointer);
Delphi-Quellcode:
Das ist doch gänzlich was anderes als was du weiter oben im Thread verwendest.
procedure GetVerInfo(const FileName: string; const Size: Integer;
const Buffer: Pointer); begin if not GetFileVersionInfo(PChar(FileName), 0, Size, Buffer) then raise Exception.Create('Can''t load version information'); end; Da scheint es eine function anstatt procedure zu sein. Auch von WideString ist nichts zu lesen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 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 by Thomas Breitkreuz