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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2011, 08:13   #1
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию Использование функции из другого модуля

Здравствуйте.
Каким образом возможно использовать функцию другого модуля и возможно ли вообще
Например есть модуль 1 и модуль 2 в модуле 2 написана функция
Код:
function Sum(a:integer;b:Integer):Integer;
begin
   Sum:=a+b;
end;
Как ее вызвать в модуле 1
Lokos вне форума Ответить с цитированием
Старый 12.05.2011, 08:24   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Код:
unit Unit2

interface

  function Sum(a:integer;b:Integer):Integer;

implementation

function Sum(a:integer;b:Integer):Integer;
begin
   Sum:=a+b;
end;

end.

-----------------------------

Unit Unit1

interface

...

implementation

uses Unit2;

//вызов функции
  C := Sum(A, B);

end.
Прик вне форума Ответить с цитированием
Старый 12.05.2011, 08:26   #3
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

пишет ошибку если добавить после interface
Lokos вне форума Ответить с цитированием
Старый 12.05.2011, 08:29   #4
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

А так работает
Код:
unit Unit2

interface

  

var
function Sum(a:integer;b:Integer):Integer;
implementation
uses

function Sum(a:integer;b:Integer):Integer;
begin
   Sum:=a+b;
end;

end.
Lokos вне форума Ответить с цитированием
Старый 12.05.2011, 08:46   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

У меня в приведенном коде нет слова var. С какого бодуна оно туда попало?
И слово uses не может быть "пустым", т.е. чтобы за ним не следовали имена модулей, используемых в этом.

Да, еще. Вызов функции как в примере, конечно, не будет работать. Его надо применять внутри любой дргой функции/процедуры или метода класса который объявлен (если он, конечно, объявлен) в Unit1.

Последний раз редактировалось Прик; 12.05.2011 в 08:55.
Прик вне форума Ответить с цитированием
Старый 12.05.2011, 09:18   #6
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

var это лично мой пример там объявлены глобальные переменные.
Uses есть модули.

Ошибка не в вызове функции. А в ее описании в Unite 2 то есть у меня не получилось написать след образом
Код:
unit Unit2

interface

  function Sum(a:integer;b:Integer):Integer;
потому что у меня там идет подключение модулей.
а вот после Uses все заработало. с varom загнал немного. Код такой
Код:
unit DM;

interface

uses
  SysUtils, Classes, Dialogs, FIBDatabase, pFIBDatabase, IdContext,
  IdTCPConnection, IdTCPClient, IdBaseComponent, IdComponent, IdCustomTCPServer,
  IdTCPServer, DB, FIBDataSet, pFIBDataSet, FIBQuery, pFIBQuery, frxClass,
  frxDBSet;
   function AutorizationClient():boolean;
type
  TDM1 = class(TDataModule) 
.......

Последний раз редактировалось Lokos; 12.05.2011 в 09:22.
Lokos вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
использование модуля novice2010 Помощь студентам 5 07.04.2011 15:10
Передача указателя на процедуру из другого модуля Alex Cones Общие вопросы Delphi 0 27.06.2010 15:21
Запись в файл переменной из другого модуля. katttes Общие вопросы Delphi 8 07.04.2010 13:08
Работа со списком из другого модуля. DIMANJ Общие вопросы Delphi 4 11.10.2009 13:33
Как выполнить процедуру (функцию) из другого модуля Всеслав Общие вопросы Delphi 4 23.05.2009 19:43