Ver Mensaje Individual
  #4  
Antiguo 30-04-2019
CrazySoft CrazySoft is offline
Miembro
 
Registrado: abr 2005
Posts: 96
Reputación: 20
CrazySoft Va por buen camino
pongo de nuevo el codigo para que sea legible


D7 Dll
Código Delphi [-]
library Cadena2libD7;

uses
//  ShareMem ,
  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
 //,ShareMem
{$ELSE}
 System.Classes,Winapi.Windows,System.SysUtils
,Vcl.Dialogs
//,System.ShareMem
{$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
// ,ShareMem
{$ELSE}
 System.Classes,Winapi.Windows,System.SysUtils
,Vcl.Dialogs
//,System.ShareMem
{$ENDIF}

;

type
  TForm1 = class(TForm)
    Button2: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  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.
Responder Con Cita