Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PWideChar und PAnsiChar (https://www.delphipraxis.net/132741-pwidechar-und-pansichar.html)

EWeiss 18. Apr 2009 18:19

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

himitsu 18. Apr 2009 18:36

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:
// '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;
[add]
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.
Seite 2 von 2     12   

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