Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.10.2007, 10:56
Lie Lie вне форума
Прохожий
 
Регистрация: 21.04.2007
Сообщения: 10
Репутация: 10
По умолчанию процудура для всех юнитов

У меня есть Unit1, Unit2...Unit_X
Нужно чтобы каждом из этих Unit'ов работала созданная мною процедура (допустим GetCount). Где ее нужно прописать
Ответить с цитированием
  #2  
Старый 11.10.2007, 11:08
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Раздел public
__________________

Ответить с цитированием
  #3  
Старый 11.10.2007, 11:37
Lie Lie вне форума
Прохожий
 
Регистрация: 21.04.2007
Сообщения: 10
Репутация: 10
По умолчанию

Внизу пишет:
[Error] Unit2.pas(151): Overloaded procedure 'GetCount' must be marked with the 'overload' directive
Что делать?
Ответить с цитированием
  #4  
Старый 11.10.2007, 11:42
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Например:
Код:
procedure GetCount;
begin
Код процедуры
end;
Потом надо написать в разделе public вот что:
Код:
public
procedure GetCount;
Всё! Теперь можно вызывать эту процедуру из других юнитов.
__________________

Ответить с цитированием
  #5  
Старый 11.10.2007, 11:43
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

У меня проблем не было, проверь.
__________________

Ответить с цитированием
  #6  
Старый 11.10.2007, 14:46
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

Winny, ты не то пишешь, ты написал про функции формы, которая содержится в модуле, а это не то.

Кароч, есть 2 похожих способа решения данной проблемы.
1) Запихнуть процедуру, например, в Unit1, а потом в остальных юнитах в Uses добавлять Unit1.
2) Создать текстовый документ, в него поместить процедуру, переименовать файл и сделать расширение *.inc. Затем перед тем местом где будет использоваться данная процедура (перед началом процедуры\функции пишешь {$I Имя_Файла_С_ПРОЦЕДУРОЙ.inc}. Есесьно писать это надо 1 раз в модуле.

Пример

Файл MyFunc.inc
Код:
function Sum(X, Y : Integer) : Integer;
begin
  Result := X + Y;
end;
Код в модуле
Код:
unit Unit1;
...........
interface
...........
implementation
...........
{$I MyFunc.inc}
procedure TForm1.FormCreate(Sender: TObject);
begin
  Caption := IntToStr(Sum(2, 3));
end;
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.
Ответить с цитированием
  #7  
Старый 11.10.2007, 17:35
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Понятно, что не понял Lie
__________________

Ответить с цитированием
  #8  
Старый 12.10.2007, 22:40
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Так же можно создать свой pas юнит с процедурами\функциями и, там, где нужно юзать процедуры\ф-ии из этого юнита, просто добавлять его в Uses. Причем наш юнит с процедурами\ф-ми можно вообще положить куда-нить на винт и юзать этот модуль вообще из любых своих проектов, просто добавив путь до папки в настройки среды (в Library path) и добавив в нужный проект в uses наш модуль, например:

типа наш юнит:
Код:
unit DFunctions;

interface

// used units & modules

  uses
    //...

  const
    //...

  procedure CopyAllFiles(sFromFolder: String; sToFolder: String);

implementation

procedure CopyAllFiles(sFromFolder: String; sToFolder: String);
begin
//...
end;
end.

Кидаем этот юнит куда-нить на винт, отдельно от наших проектов.
Добавляем путь до папки в среду разработки, а потом, при написании проектов, если мы вдруг захотим юзать процедурку CopyAllFiles, то мы просто в Uses добавляем DFunctions, и спокойно в любом месте текущего нашего юнита вызываем эту процедурку.
Можно, чтобы было понятнее, откуда она, вызывать ее так:
Код:
DFunctions.CopyAllFiles(...);
__________________
THE CRACKER IS OUT THERE

Последний раз редактировалось 4kusNick, 12.10.2007 в 22:42.
Ответить с цитированием
  #9  
Старый 24.11.2007, 16:45
Алексей1980 Алексей1980 вне форума
Прохожий
 
Регистрация: 03.03.2007
Сообщения: 25
Репутация: 10
По умолчанию

а может лучше File>Use Unit ?
не знаю куда оно прописывется, давно читал, но вроде работает
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter