![]() |
Re: PWideChar und PAnsiChar
S liefert '(' in 50 facher ausführung zurück
P immer den richtigen string 'Visual Demo Plugin' Habe da keine probleme beim debugen gruss Emil |
Re: PWideChar und PAnsiChar
hmmm, vielleicht legt da Delphi ja mehrere TempStrings an ... die Code-Optimierung ist schon schlimm/verworren -.-°
hier mal ein einfaches Beispiel, welches "NICHT" funktionieren könnte :lol:
Delphi-Quellcode:
[add]
// 'ne Form1 mit 2 TEdit's
Function Test(S: WideString): PAnsiChar; Begin Result := PAnsiChar(AnsiString(S)); End; Procedure TForm1.FormCreate(Sender: TObject); Var P: PAnsiChar; i: Integer; A: Array[0..1000] of String; Begin P := Test('123456789'); Edit1.Text := P; P := Test('123456789'); For i := Low(A) to High(A) do A[i] := StringOfChar(AnsiChar(#65), 10); Edit2.Text := P; End; nutzt du kein FastMM oder ShareMem für deine DLL? nja, dann hast du Glück, daß deine DLL einen eigenen Speichermanager nutzt und dieser gerade den genutzten Speicherblock zufällig nicht freigibt. :angel2: [add2] eventuell geht es so "NICHT" besser *hust*
Delphi-Quellcode:
function BASS_AIMP2VIS_GetName(handle: HVIS): PAnsiChar; stdcall;
var PluginInfo: PWideChar; i: Integer; A: Array of AnsiString; begin SetLength(A, 1000000); for i := 0 to High(A) do A[i] := StringOfChar(AnsiChar(#65), 18); Result := nil; if (not A_ValidHandle(handle)) then begin BassFuncs^.SetError(BASS_ERROR_HANDLE); Exit; end; VisInfo := PAIMPVisInfo(Handle); BassFuncs^.SetError(BASS_OK); PluginInfo := VisInfo^.VisPointer.PluginInfo; Result := PAnsiChar(AnsiString(PluginInfo)); if A[20] = '' then ; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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