Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2010, 17:45   #1
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию dll и делфи

Вот разбиралса впервые с библиотеками создал самую простую
в которой токо одна функция:
Код:
library FirsDLLProject;

uses
  SysUtils,
  Classes;

  function summ (x,y:integer):integer; stdcall;
  begin
   result:=x+y;
  end;

  exports summ; 
{$R *.res}

begin
end.
вот код проги которая использует ету библиотеку
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  function summ(x,y:integer):integer stdcall;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
function summ; external 'FirsDLLProject.dll' name 'summ';

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
r:integer;
begin
r:=summ(10,34);
application.MessageBox(pchar(inttostr(r)), 'result summ');

end;

end.
Button1: TButton; в етой строке такая ошибка:
[Error] Unit1.pas(12): Field definition not allowed after methods or properties
как её решить?
Pein95 вне форума Ответить с цитированием
Старый 25.12.2010, 18:02   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
...
Button1: TButton;
...
end;
...
implementation

function summ(x,y:integer):integer stdcall; external 'FirsDLLProject.dll' name 'summ';
...
Вроде так
BOBAH13 вне форума Ответить с цитированием
Старый 25.12.2010, 18:14   #3
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

тоже самое. странно както все делал так как в примере в книге написано а оно не работает(
Pein95 вне форума Ответить с цитированием
Старый 25.12.2010, 18:35   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Pein95 Посмотреть сообщение
тоже самое. странно както все делал так как в примере в книге написано а оно не работает(
Что тоже самое? Покажите что вы изменили и как.
BOBAH13 вне форума Ответить с цитированием
Старый 25.12.2010, 19:06   #5
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Попробуй следующим образом:

Код:
unit Unit1;

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;
  function Summ(x, y: Integer):Integer;stdcall;

implementation

function Summ(x, y: Integer):Integer; external 'FirsDLLProject.dll';

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  r: Integer;
begin
  r:= Summ(10, 24);
  Application.MessageBox(PChar(IntToStr(r)), 'result summ', MB_OK);
end;

end.
У меня все работает.

Последний раз редактировалось vasek123; 26.12.2010 в 13:53.
vasek123 вне форума Ответить с цитированием
Старый 26.12.2010, 08:28   #6
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Блин ну это же элементарно...
Код:
type
  TForm1 = class(TForm)
  function summ(x,y:integer):integer stdcall;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
Сначала объявляются переменные, только потом методы. И на как иначе...
У Вас же сначала функция, потом Баттон1, на которую ругается. После объявления метода нельзя объявлять переменную или объект.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пытаюсь понять код user32.dll и gdi32.dll Beermonza Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 43 13.07.2010 15:09
Windows I/o без Kernel32.dll и Advapi32.dll coinkrsk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 31 27.06.2010 08:52
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
Вынос компонентов программы (которые делфи всталяет в каждую программу) из проги в dll GanGSISoft Общие вопросы Delphi 17 02.07.2009 17:24
Подключение DLL в Делфи Denis_Gul Помощь студентам 3 19.11.2008 11:12