En delphi 7 j'utilisais massivement les pointers et, en général, ça fonctionnait mais en esseyant d'exploiter ce code sur D 8, j'obtient des choses bizarres.

Voilà, je voudrais donc utiliser une dll écrite en D 7 qui contient cette fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
function AddDataP(InHandle : integer;Name : PChar;data : PChar;Replace : longbool) : longbool;stdcall;
begin
...   
end;
sous D 8, j'ai essayé plusieurs méthodes qui ressemblaient à ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
function AddDataP(InHandle : integer;Name : PChar;data : PChar;Replace : longbool) : longbool;unsafe;external 'sdsf.dll';
 
      function StrToPChar(InStr : string) : PChar;unsafe;
      begin
        Result := PChar(@InStr);
      end;
 
...
begin
  AddDataP(Handle,StrToPChar('system'),StrToPChar('data.dat'),true);
...
end;
Mais voilà, dans cette méthode, je crois que seul le 1ere caracètre de chaque PChar est reçu par la dll D 7 ... je dis "je crois" car j'ai essayé une infinité de méthodes qui mon soit fait n'importe quoi, soit une erreur de Marshaling ...

Merci d'avance