Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Вниз

файл *.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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 2.138 c
14-1120073358
kaif
2005-06-29 23:29
2005.07.31
Любопытная статистика отстоя


11-1103477893
Владимир Кладов
2004-12-19 20:38
2005.07.31
Версия 2.03


14-1120799849
Aldor
2005-07-08 09:17
2005.07.31
Можно ли восстановить функцию по ее коэффициентам Фурье?


14-1120981119
Kvartirant777
2005-07-10 11:38
2005.07.31
Едем в Крым?! :)


1-1121028718
Slicer
2005-07-11 00:51
2005.07.31
Как спрятать заголовок окна в taskbar е





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский