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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2011, 21:29   #1
Eminem
Пользователь
 
Регистрация: 08.02.2010
Сообщений: 64
По умолчанию Delphi: Иерархия модулей.

Доброго времени суток.

Возможно ли не копипастить кучу нужных модулей в Uses, а забить их в один и вызывать только его?

Набросаю в краце и поясню.
Есть модуль Modul1.pas
Код:
unit Modul1;

interface

Uses Windows, SysUtils, Math;

Type
 TBinary = String;

Function HexToInt(HexValue:String):Integer;

implementation

Function IntToBin(Int:integer):TBinary;
var Ost:string;
begin
if int < 1 then
 Result:=inttostr(int)
else
 while int > 1 do
  begin
   ost:=inttostr(int mod 2)+ost;
   int:=int div 2;
  end;
Result:=inttostr(int)+ost;
end;

end.
И модуль Modul2.pas
Код:
unit Modul2;

interface

Uses Windows, SysUtils;

Function StrToChr(Symbol:string):integer;

implementation

Function StrToChr(Symbol:string):integer;
var i:integer;
begin
result:=-1;
for i:=0 to 255 do
if chr(i)=Symbol then result:=i;
end;

end.
В главном проекте придётся писать:
Uses Modul1, Modul2;

Как их запихнуть в (например) Modul.pas и писать только:
Uses Modul;

P.S. разумеется в Modul1, Modul2 куда больше функций и классов и соединять их в один файл (проверено временем) не есть гуд.

Пробовал писать так:
Код:
unit Modul;

interface

Uses Windows, SysUtils, Modul1, Modul2;     

Function HexToInt(HexValue:String):Integer;
Function StrToChr(Symbol:string):integer;

implementation

end.
А в главном проекте только:
Uses Modul;

Ругается на "Modul":
[Error] Modul.pas(7): Unsatisfied forward or external declaration: 'HexToInt'

Может какие директивы существуют?
Eminem вне форума Ответить с цитированием
Старый 29.04.2011, 22:28   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Если речь о делении большого модуля на части, то можно так:

Код:
unit modul;
interface

uses windows, sysutils;

{$define interface}
{$include modul1.pas}
{$include modul2.pas}
{$undef interface}

implementation

{$define implementation}
{$include modul1.pas}
{$include modul2.pas}
{$undef implementation}

end.
Код:
//modul1.pas
{$ifdef interface}
Type
 TBinary = String;

Function HexToInt(HexValue:String):Integer;
{$endif}
{$ifdef implementation}
Function HexToInt(HexValue:String):Integer;
begin
   //...
end;
{$endif}
Код:
//modul2.pas
{$ifdef interface}
Function StrToChr(Symbol:string):integer;
{$endif}
{$ifdef implementation}
Function StrToChr(Symbol:string):integer;
begin
   // ...
end;
{$endif}
alexBlack вне форума Ответить с цитированием
Старый 02.05.2011, 13:54   #3
Eminem
Пользователь
 
Регистрация: 08.02.2010
Сообщений: 64
По умолчанию

Да, то что нужно, благодарю.
Eminem вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi не видит модулей! IQDDD Общие вопросы Delphi 1 22.04.2011 21:09
Иерархия структур Kuro Общие вопросы C/C++ 3 16.04.2011 11:26
Иерархия классов lirikoff Помощь студентам 7 21.10.2010 23:51
Изменение стандартных модулей Delphi Hottabych Общие вопросы Delphi 13 18.08.2010 11:17
Иерархия skyline_skyline Microsoft Office Excel 3 04.09.2009 13:00