Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: PAnsiChar nach PWideChar (D2K9), wie geht das?

  Alt 5. Nov 2009, 10:22
AnsiString <> WideString/UnicodeString geschiht automatisch

PAnsiChar <> PWideChar nicht, weil Delphi nicht einfach so Speicher reservieren kann, es ja nicht wissen kann, wie danach dieser Zeiger/Speicher verwaltet wird.
Die Folge wären massieve Speicerlecks.

StrPCopy will einen PWideString, aber FN ist ein AnsiChar.

StrPCopy(Result, WideString(FN)); Wenn Delphi da immernoch meckert aber PAnsiChar nach WideString sollte möglich sein, dann
StrPCopy(Result, WideString(AnsiString(FN)));
oder gleich so und einige Zwischenschritte einsparen
Delphi-Quellcode:
function GetString(Stream : TStream; Len : Word) : PWideChar;
var
  FN : AnsiString;
begin
  SetLength(FN, Len);
  Stream.Read(@FN1[1] , Len);
  Result := WideStrAlloc(succ(Len));
  StrPCopy(Result, WideString(FN));
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat