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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2009, 16:10   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Разбить dpr на юниты

Как я уже упоминал, сейчас осваиваю API. И поэтому мой dpr файл разросся до 15 кб (360 строк). Работать в этой куче разумеется стало неудобно. Поэтому вопрос: как правильно вынести функи и процедуры в отдельные юниты. Если бы речь шла о связи Юнит=>юнит, то вопроса бы не возникло, это я умею. А вот с dpr=>unit ни разу не сталкивался.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 08.11.2009, 16:12   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
unit winplug; // модуль с функа

interface

uses Windows,graphics,sysUtils,Messages,Tlhelp32,to_tray,activex;//oleserver,olectrls

 funca: string;

implementation

 function funca: string; -- сама функа
 begin
 end;
*.dpr
Код:
program kap;

uses Messages, Windows, 
 winplug; // подключил

procedure afsf;
begin
 // хочу тут
 funca
end;


...
begin
 // хочу тоже тут
 funca
end.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 08.11.2009 в 16:40.
raxp вне форума Ответить с цитированием
Старый 08.11.2009, 16:18   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Вот я клацнул Создать новый юнит и в дпр появилось следующее:
Код:
uses
  Windows,
  Messages,
  Commctrl,
  Classes,
  Types,
  UNTMain in 'UNTMain.pas';
Теперь, если я в UNTMain опишу процедуры или функи я смогу с ними общаться из dpr? Проверить мне не сложно, но иногда моя "самодеятельность" доходит до BSOD`а.

P.S. Все-таки попробовал. UNTMain "не видит" переменные описанные в дпр. Как с этим бороться?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 08.11.2009 в 16:22.
Alex Cones вне форума Ответить с цитированием
Старый 08.11.2009, 16:21   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

если вынесешь их, разумеется сможешь...
это unit-
Код:
funca: string; -- это для видимости другим

implementation

 function funca: string; -- сама функа
 begin
 end;
UPD: нет, выносишь их в unit, описываешь там. в dpr в uses уже есть модуль с функа, и все... уже видны
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 08.11.2009 в 16:39. Причина: отредактировал 2 пост
raxp вне форума Ответить с цитированием
Старый 08.11.2009, 16:24   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Т.е. Описывать их в юните, а ссылаться из дпр?
Поэксперементировал, разобрался. Спасибо за наводку.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 08.11.2009 в 16:34.
Alex Cones вне форума Ответить с цитированием
Старый 08.11.2009, 16:40   #6
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Вот я клацнул Создать новый юнит и в дпр появилось следующее:
Код:
uses
  Windows,
  Messages,
  Commctrl,
  Classes,
  Types,
  UNTMain in 'UNTMain.pas';
Теперь, если я в UNTMain опишу процедуры или функи я смогу с ними общаться из dpr? Проверить мне не сложно, но иногда моя "самодеятельность" доходит до BSOD`а.
Да, если описание функций будет в разделе interface
модуля то можно с ними работать.
Можете вообще весь код перенести в отдельный модуль
Код:
program ClearDpr;

uses
  UNTMain in 'UNTMain.pas';

{$R *.res}

begin
  MainAppProces();
end.
Код:
unit UNTMain;

interface

procedure MainAppProces();

implementation

uses
  Forms,
  UMainForm;

procedure MainAppProces();
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end;

end.
Но, по моему, лучше до таких крайностей не доходить, а dpr разбить функциями так чтобы был небольшой и локаничный.
s.Creator вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Fatal Error] Project1.dpr(5): File not found: 'vrunl.dcu' HackerOK Общие вопросы Delphi 24 17.08.2009 00:11
Что случилось с DPR? Ash Общие вопросы Delphi 2 05.12.2008 18:35
Проблемы запуска проекта Project.dpr (в программировании новичок) aleksandrmich Общие вопросы Delphi 8 05.03.2008 12:11