Bonjour

Je passe un Pchar en paramètre à une fonction d'une DLL qui doit modifier le contenu du string.
Le contenu doit ensuite être affiché par la procedure appelante.

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
 
Procedure Appel();
 Mot : String;
 Pmot : Pchar;
begin
  mot:='                        ';
 {alocate memory}
 GetMem(pword,Length(mot)) ; // takes a pointer
 pword :=  PChar(mot);
 
 ChangeMot(Pword)
 ShowMessage(string(PWord));
 
{free the memory}
 FreeMem(pword) ;
 
end;
// Procedure dans la dLL

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Procedure ChangeMot(var p : Pchar);
var
    NouveauMot : String;
begin
    NouveauMot := 'DRESSER';
    Move(NouveauMot,p,Length(NouveauMot));
end;
L'affichage de retour est 'DRES ' avec un symbole de fin de string je pense à la place de l'espace.

Y a t-il mieux à faire ?
merci