bonjour,

je n'arrive pas a récupérer des strings depuis une de mes dll.
j'ai tout essayé, PChar, ShortString... et je bloque

voici le code de ma dll:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
library Project1;
uses
  SysUtils,
  Classes,
  Windows;
{$R *.RES}
 
function getnameuser: string; StdCall;
const
  cnMaxUserNameLen = 254;
var
  sUserName: string;
  dwUserNameLen: DWORD;
begin
  dwUserNameLen := cnMaxUserNameLen - 1;
  SetLength(sUserName, cnMaxUserNameLen);
  GetUserName(PChar(sUserName), dwUserNameLen);
  SetLength(sUserName, dwUserNameLen);
  Result := sUserName;
end;
 
function messtrg: PChar; StdCall;
var
str1, str2: string;
begin
str1 := ('username :  ' + getnameuser);
str2 := ('salut! ');
result := PChar(str1);
end;
 
exports
getnameuser,
messtrg;
 
begin
end.

et de mon exe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
Type TMonmesstrg = procedure;
Var
Hdle : THandle;
messtrg: TMonmesstrg;
begin
 
Hdle:=LoadLibrary(PChar('C:\test.dll')); //Charge la DLL
@messtrg:=GetProcAddress(Hdle,'messtrg'); //Récupère l'adresse de la procedure
messtrg; //Appelle la procedure "messtrg"
FreeLibrary(Hdle); //Libère la DLL
end;
j'ai essayé des 15 façons différentes sans succès,
ce que je voudrai c'est récupérer str1 et str2 en appelant messtrg.

merci d'avance