Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.31;
Скачать: CL | DM;

Вниз

файл *.h   Найти похожие ветки 

 
aapp   (2005-07-06 15:54) [0]

Добрый день всем.
Имеется готовая dll, содержащая функции по управлению дополнительным устройством, и примеры программ на С и файл *.h.
Раньше в подобных слкчаях я создавал модуль My_*_h.pas, в котором переписывал типы, константы, имена процедур и функций и.т.д. по правилам Pascal. А может я ломлюсь в открытую дверь, может существует какая-нибудь директива, позволяющая включать C-шный header-файл в программу на Delphi?


 
Cosinus ©   (2005-07-06 18:08) [1]

Возможно это поможет?

Использование C-шной DLL
--------------------------------------------------------------------------------

Автор: Xavier Pacheco

unit Main;

interface

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

type
 TMainForm = class(TForm)
   Button1: TButton;
   Button2: TButton;
   FooData: TEdit;
   Button3: TButton;
   Button4: TButton;
   SetCVarData: TEdit;
   GetCVarData: TEdit;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure Button4Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 MainForm: TMainForm;
 _GlobalVar: PChar = "This is a Delphi String";

implementation

uses PasStrng;

{$R *.DFM}

{$L ccode.obj}

type
 TFoo = class
   function Function1(Str1: PChar): integer; virtual; cdecl; abstract;
   function Function2(i: integer): integer; virtual; cdecl; abstract;
 end;

 PCharArray = ^TCharArray;
 TCharArray = array[0..127] of char;

 // import from OBJ file:

function _SAYHELLO(Text: PChar): Integer; cdecl; external;
procedure _C_VAR; external; // trick to import OBJ data

// imports from DLL file:

function ClassFactory: TFoo; cdecl; external "cdll.dll"
 name "_CLASSFACTORY";

procedure ClassKill(Foo: TFoo); cdecl; external "cdll.dll"
 name "_CLASSKILL";

procedure TMainForm.Button1Click(Sender: TObject);
begin
 _SayHello("hello world");
end;

procedure TMainForm.Button2Click(Sender: TObject);
var
 Foo: TFoo;
begin
 Foo := ClassFactory;
 Foo.Function1("huh huh, cool.");
 FooData.Text := IntToStr(Foo.Function2(10));
 ClassKill(Foo);
end;

function GetCArray: string;
var
 A: PCharArray;
begin
 A := PCharArray(@_C_VAR);
 Result := A^;
end;

procedure SetCArray(const S: string);
var
 A: PCharArray;
begin
 A := PCharArray(@_C_VAR);
 StrLCopy(A^, PChar(S), SizeOf(TCharArray));
end;

procedure TMainForm.Button3Click(Sender: TObject);
begin
 SetCArray(SetCVarData.Text);
end;

procedure TMainForm.Button4Click(Sender: TObject);
begin
 GetCVarData.Text := GetCArray;
end;

end.


 
Cosinus ©   (2005-07-06 18:08) [2]

Ой, сорри.
Невнимательно прочитал.



Страницы: 1 вся ветка

Текущий архив: 2005.07.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.045 c
14-1120901589
Магнум
2005-07-09 13:33
2005.07.31
Мария Кириленко


1-1121085805
Kyro
2005-07-11 16:43
2005.07.31
Местоположение приложения


3-1119430308
Term
2005-06-22 12:51
2005.07.31
Использование TTable, связь по нескольким полям


3-1119420416
CRACKISH
2005-06-22 10:06
2005.07.31
Копирование куска базы!


3-1118835314
IronMan
2005-06-15 15:35
2005.07.31
FireBird vs Yaffil