unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

procedure Test1;
procedure Test2; StdCall;
procedure Test3; StdCall;
function Test4(argument :String) :Integer; StdCall;
function Test5(argument :PChar) :Integer; StdCall;
function Test6(pArgument :Pointer) :Integer; StdCall;

{procedure Test1; external 'Project1.dll';
procedure Test2; StdCall; external 'Project1.dll';
procedure Test3; StdCall; external 'Project1.dll';
function Test4(argument :String) :Integer; StdCall; external 'Project1.dll';
function Test5(argument :PChar) :Integer; StdCall; external 'Project1.dll';
function Test6(argument :Pointer) :Integer; StdCall; external 'Project1.dll';}

implementation

{$R *.dfm}

procedure Test1; external 'Project1.dll';
procedure Test2; external 'Project1.dll';
procedure Test3; external 'Project1.dll';
function Test4; external 'Project1.dll';
function Test5; external 'Project1.dll';
function Test6; external 'Project1.dll';

procedure TForm1.Button1Click(Sender: TObject);
var wynik :Integer;
var s :String;
begin
Test1;
Test2;
Test3;
wynik:=Test4('Przykładowy łańcuch');
ShowMessage('Wynik funkcji Test4: '+IntToStr(wynik));
wynik:=Test5('Przykładowy łańcuch');
ShowMessage('Wynik funkcji Test5: '+IntToStr(wynik));
s:='Przykładowy łańcuch';
wynik:=Test6(@s);
ShowMessage('Wynik funkcji Test6: '+IntToStr(wynik));
end;

end.
