pongo de nuevo el codigo para que sea legible
D7 Dll
Código Delphi
[-]
library Cadena2libD7;
uses
Classes, Windows, SysUtils
, Dialogs
;
{$R *.res}
function Cadena_7(Cadena: PAnsiChar): PAnsiChar; stdcall;
begin
ShowMessage(string(Cadena));
Result := PAnsiChar(AnsiString('Cadena PAnsiChar '+(trim(string(Cadena)))));
end;
function Cadena_AS7(Cadena: PAnsiString): PAnsiString; stdcall;
begin
ShowMessage(string(AnsiString(Cadena)));
Result := PAnsiString(('Cadena PAnsiString '+Trim(string(AnsiString(Cadena)))));
end;
function Cadena_P7(Cadena: PChar): PChar; stdcall;
begin
ShowMessage(string(AnsiString(Cadena)));
Result := PChar(('Cadena PChar '+(string(AnsiString(Cadena)))));
end;
function Cadena_W7(Cadena: PWideChar): PWideChar; stdcall;
begin
ShowMessage(string(AnsiString(Cadena)));
Result := PWideChar(('Cadena PWideChar '+Trim(string(AnsiString(Cadena)))));
end;
function Cadena_S7(Cadena: string): string; stdcall;
begin
ShowMessage(Cadena);
Result := 'Cadena string '+Cadena;
end;
exports Cadena_7, Cadena_P7, Cadena_S7, Cadena_W7, Cadena_AS7;
begin
end.
RX10
Código Delphi
[-]
library Cadena2libRx10;
uses
{$IFDEF VER150}
Classes, Windows, SysUtils
,Dialogs
{$ELSE}
System.Classes,Winapi.Windows,System.SysUtils
,Vcl.Dialogs
{$ENDIF}
;
{$R *.res}
function Cadena_(Cadena: PAnsiChar): PAnsiChar; stdcall;
begin
ShowMessage(string(Cadena));
Result := PAnsiChar(AnsiString('Cadena PAnsiChar '+(trim(string(Cadena)))));
end;
function Cadena_AS(Cadena: PAnsiString): PAnsiString; stdcall;
begin
ShowMessage(string(AnsiString(Cadena)));
Result := PAnsiString(('Cadena PAnsiString '+Trim(string(AnsiString(Cadena)))));
end;
function Cadena_P(Cadena: PChar): PChar; stdcall;
begin
ShowMessage(string(AnsiString(Cadena)));
Result := PChar(('Cadena PChar '+(string(AnsiString(Cadena)))));
end;
function Cadena_W(Cadena: PWideChar): PWideChar; stdcall;
begin
ShowMessage(string(AnsiString(Cadena)));
Result := PWideChar(('Cadena PWideChar '+Trim(string(AnsiString(Cadena)))));
end;
function Cadena_S(Cadena: string): string; stdcall;
begin
ShowMessage(Cadena);
Result := 'Cadena string '+Cadena;
end;
exports Cadena_, Cadena_P, Cadena_S, Cadena_W, Cadena_AS;
begin
end.
Pruebas
Código Delphi
[-]
unit Unit1;
interface
uses
Messages, Variants, Graphics, Controls, Forms,
StdCtrls, Clipbrd,
{$IFDEF VER150}
Classes, SysUtils ,Dialogs
{$ELSE}
System.Classes,Winapi.Windows,System.SysUtils
,Vcl.Dialogs
{$ENDIF}
;
type
TForm1 = class(TForm)
Button2: TButton;
Memo1: TMemo;
Memo2: TMemo;
Button1: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Cadena_7(Cadena: PAnsiChar): PAnsiChar; stdcall external 'Cadena2libD7.dll'
function Cadena_P7(Cadena: PChar): PChar; stdcall external 'Cadena2libD7.dll'
function Cadena_W7(Cadena: PWideChar): PWideChar; stdcall external 'Cadena2libD7.dll'
function Cadena_S7(Cadena: string): string; stdcall external 'Cadena2libD7.dll'
function Cadena_AS7(Cadena: PAnsiString): PAnsiString; stdcall external 'Cadena2libD7.dll'
function Cadena_(Cadena: PAnsiChar): PAnsiChar; stdcall external 'Cadena2libRx10.dll'
function Cadena_P(Cadena: PChar): PChar; stdcall external 'Cadena2libRx10.dll'
function Cadena_W(Cadena: PWideChar): PWideChar; stdcall external 'Cadena2libRx10.dll'
function Cadena_S(Cadena: string): string; stdcall external 'Cadena2libRx10.dll'
function Cadena_AS(Cadena: PAnsiString): PAnsiString; stdcall external 'Cadena2libRx10.dll'
procedure TForm1.Button2Click(Sender: TObject);
begin
try
Memo2.Lines.Add('Cadena_ '+Cadena_(PAnsiChar(AnsiString(trim(memo1.lines.text)))));
except
end;
try
Memo2.Lines.Add('Cadena_P '+StrPas(Cadena_P(PChar(String(trim(memo1.lines.text))))));
except
end;
try
Memo2.Lines.Add('Cadena_w '+Cadena_W(PWideChar(String(trim(memo1.lines.text)))));
except
end;
try
Memo2.Lines.Add('Cadena_AS '+String(AnsiString(Cadena_AS(PAnsiString(pAnsicHAR(string(trim(memo1.lines.text))))))));
except
end;
try
Memo2.Lines.Add('Cadena_S '+Cadena_S(string(trim(memo1.lines.text))));
except
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
try
Memo2.Lines.Add('Cadena_ '+Cadena_7(PAnsiChar(AnsiString(trim(memo1.lines.text)))));
except
end;
try
Memo2.Lines.Add('Cadena_P '+StrPas(Cadena_P7(PChar(String(trim(memo1.lines.text))))));
except
end;
try
Memo2.Lines.Add('Cadena_w '+Cadena_W7(PWideChar(String(trim(memo1.lines.text)))));
except
end;
try
Memo2.Lines.Add('Cadena_AS '+String(AnsiString(Cadena_AS7(PAnsiString(pAnsicHAR(string(trim(memo1.lines.text))))))));
except
end;
try
Memo2.Lines.Add('Cadena_S '+Cadena_S7(string(trim(memo1.lines.text))));
except
end;
end;
end.