Главная страница
    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.45 MB
Время: 0.061 c
1-1121090924
webpauk
2005-07-11 18:08
2005.07.31
Глюки с закрытием приложения


3-1118921580
Сергей2
2005-06-16 15:33
2005.07.31
Использование процедуры из package


14-1121080212
vers
2005-07-11 15:10
2005.07.31
Прикол Delphi 2005


1-1121287971
ANB
2005-07-14 00:52
2005.07.31
Как определить, по какому контроллу кликнули мышей ?


1-1121065795
Курдль
2005-07-11 11:09
2005.07.31
Про отображение BLOB типа jpeg в DBImage





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский