cs_Bilou972
Messages postés24Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention24 novembre 2008
-
20 mai 2004 à 18:54
eto95
Messages postés2Date d'inscriptionmercredi 3 mars 2004StatutMembreDernière intervention25 juillet 2008
-
5 sept. 2005 à 16:03
Voici une chose que j'aurai du faire il y deja bien longtemps, je suis en bts info deuxieme annee, l examen approche et je suis toujours bloqué sur l'exportation de classe dans delphi; j'ai une erreur EinvalidPointerOperation a la fermeture de l'application.
Apres de longues longues heures de recherche sur les differents sites qui parlaient des DLl je n'ai toujours pas trouvé de solution a ce probleme.Peut etre y verrez vous plus clair ??
Code source de la DLL
library francaisdll;
uses
ShareMem,
dialogs,
SysUtils,
Classes;
{$R francais.res}
type
Tdllexport = class
public
function GetLangStringId(StrIdx : integer): string ; virtual; stdcall; export;
end;
function Tdllexport.GetLangStringId(StrIdx : integer): string; stdcall; export;
begin
//showmessage ('1');
result:= LoadStr(StrIdx);
showmessage ('2');
end;
function GetdllexportInstance : Tdllexport; stdcall; export;
begin
result:=Tdllexport.Create
end;
exports
GetdllexportInstance;
begin
end.
Voici le code source de l'appli censee afficher la chaine de caractere recuperee depuis la DLL ;
unit Unit1;
interface
uses
ShareMem, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Tdllexport = class
public
function GetLangStringId(StrIdx : integer): string ; virtual; stdcall; export; abstract;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetdllexportInstance : Tdllexport; stdcall; external 'francaisdll';
var
dllexport : Tdllexport;
begin
dllexport:=GetdllexportInstance;
label1.Caption := dllexport.GetLangStringId(1);
dllexport.Free;
end;
end.
eto95
Messages postés2Date d'inscriptionmercredi 3 mars 2004StatutMembreDernière intervention25 juillet 2008 5 sept. 2005 à 16:03
Salut,
je vois que tu utilise un object pour ta DLL, tres bonne idée pour utiliser des "String" ou "WideString", mais dans ce cas tu n'en a pas besoins (a moins que tu pense utiliser du texte qui depasse 255 caracteres, en plus tu evite la DLL borland pour la gestion de memoire.
voici comment je vois plutot ton code :
library francaisdll;
uses
dialogs,
SysUtils,
Classes;
{$R francais.res}
function GetLangStringId(StrIdx : integer): ShortString; stdcall; export;
begin
result := LoadStr(StrIdx);
end;