Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1638 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [DELPHI] DLL et passage de paramètres

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[DELPHI] DLL et passage de paramètres

n°916902
joshuameur​ey
Posté le 07-12-2004 à 13:04:50  profilanswer
 

Bonjour !
 
Je vous expose mon problème : je cherche a passer des paramètres de type record, voir un array de ce record, entre une DLL et mon programme.
Je pourrai tenter de faire autant de procedure qui retournent chacune un elément du record mais en supposant que celui-ci soit gros (contenant beaucoup d'elément de type varié - PChar, Int)...
Merci d'avance...
 
Josh.

mood
Publicité
Posté le 07-12-2004 à 13:04:50  profilanswer
 

n°916969
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-12-2004 à 13:46:33  profilanswer
 

C'est quoi la question ? :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°917188
joshuameur​ey
Posté le 07-12-2004 à 16:24:41  profilanswer
 

La question c'est comment passer un record d'une DLL à mon appli.

n°917192
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-12-2004 à 16:25:56  profilanswer
 

comme tu passerais une autre variable, non ? :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°917197
joshuameur​ey
Posté le 07-12-2004 à 16:31:01  profilanswer
 

Ben non parce que lorsque je lis le record venant de la DLL il m'écrit n'importe quoi...
Par exemple : un record contenant un PChar et un int que la DLL passe, mon appli affiche &"'('"é('"&è-é(& dans le PChar et -1236543 dans l'integer (qui sont des valeurs qui n'ont rien à voir avec ce qu'il y avait dans la DLL !...

n°917244
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-12-2004 à 17:25:40  profilanswer
 

Essaie en déclarant les record comme étant des packed record.
Sinon poste un peu de code...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°917246
joshuameur​ey
Posté le 07-12-2004 à 17:27:57  profilanswer
 

ouai, ok j'essai le packed record... avant le code !...

n°917253
joshuameur​ey
Posté le 07-12-2004 à 17:36:46  profilanswer
 

Bon même avec le packed record ça marche pas...
MON CODE DLL :
library noyau;
 
uses
  SysUtils,
  Classes;
 
const
  MODUL_VERSION = '0.1 - ALPHA' ;
 
type
  TCervoTST = packed record
    Name : PChar ;
    Index : Integer ;
  end ;
 
{$R *.RES}
 
function GiveNoyauVersion : PChar; stdcall;
begin
 result := MODUL_VERSION ;
end;
 
function GiveCervo : TCervoTST ; stdcall;
Var Cervo : TCervoTST ;
begin
 Cervo.Name := 'Nom Cerveau !' ;
 Cervo.Index := 10 ;
 result := Cervo ;
end;
 
exports
 GiveNoyauVersion;
exports
 GiveCervo;
 
begin
end.
 
MON CODE APPLI :
procedure TForm1.Button5Click(Sender: TObject);
type
 TGetVer = Function : PChar ; stdcall ;
 TGetCervo = Function : TCervoTST ; stdcall ;
Var
 GetVer : function : PChar ;
 GetCervo : function : TCervoTST ;
 Handle: THandle ;
 Cervo : TCervoTST ;
begin
 Handle := loadlibrary('system\noyau.dll');
 
 if Handle <> 0
 then begin
      try
        @GetVer := GetProcAddress(Handle, 'GiveNoyauVersion');
        if @GetVer <> nil
        then begin
             ShowMessage(GetVer);
             end;
        @GetCervo := GetProcAddress(Handle, 'GiveCervo');
        if @GetCervo <> nil
        then begin
             Cervo := GetCervo ;
             ShowMessage(Cervo.Name + #13 + IntToStr (Cervo.Index));
             end;
      Finally
        FreeLibrary(Handle);
      end;
      end
 else begin
      ShowMessage('Impossible de charger la DLL');
      end;
 
end;
 
Voila ! rien de bien compliqué dans l'absolu mais en pratique ça marche pas.

n°917280
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-12-2004 à 18:11:42  profilanswer
 

là je ne sais pas pourquoi ça ne marche pas :/


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°922481
Nico SIA
Posté le 14-12-2004 à 08:58:20  profilanswer
 

Tu as essaye en ajoutant Sharemem dans ta dll et ton code ??


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [DELPHI] DLL et passage de paramètres

 

Sujets relatifs
Passage de paramètres à une procédurepassage de cmd a popen
[WMI] Acceder aux parametres hardware d'un PCDelphi 2005 architect TRIAL (US)
[delphi] probleme de mise à jour d'un editModifier le curseur de la souris lors du passage entre 2 frames?
dll qui ne se charge plus aprés une mise à jour SP2Passage d'une variable d'un serveur à un autre ??
Passage de variables VB vers C++ 
Plus de sujets relatifs à : [DELPHI] DLL et passage de paramètres


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR