Главная страница
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.072 c
1-1120811225
KIR
2005-07-08 12:27
2005.07.31
Работа с произвольным изображением на форме


9-1113573787
Yegorchic
2005-04-15 18:03
2005.07.31
Звезда


4-1117539679
chili
2005-05-31 15:41
2005.07.31
Подскажите как определить IP адресс используя WinAPI


14-1121176011
Yuka
2005-07-12 17:46
2005.07.31
Какая библиотека?


4-1117561700
seamcat
2005-05-31 21:48
2005.07.31
ExitProcess