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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2008, 06:59   #21
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Sergey2 Посмотреть сообщение
А зачем? Какие плюсы у этого способа?
У Вас тема называется "Размножение окон". Где Вы храните всё новые и новые переменные типа TForm2?

Цитата:
Сообщение от Sergey2 Посмотреть сообщение
Чем спокойней? Возможностью прибить "форму" если она эксепш схватит?
А как вы собираетесь организовать параллельную обработку нескольких объектов? Я так понял в этом цель состоит. Интересно просто.
B_N вне форума Ответить с цитированием
Старый 27.01.2008, 16:13   #22
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
У Вас тема называется "Размножение окон". Где Вы храните всё новые и новые переменные типа TForm2?
Я их не раню, т.к. они, по сути, не нужны. Только есть один вопросец. После закрытия формы она память очищает или надо из главной формы вызывать Free? Во втором случаи, конечно, придеться их хранить где-то.
Цитата:
А как вы собираетесь организовать параллельную обработку нескольких объектов? Я так понял в этом цель состоит. Интересно просто.
Там же показано, что переменные объявляются в private и работают не мешая друг-другу.
Sergey2 вне форума Ответить с цитированием
Старый 27.01.2008, 16:37   #23
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Sergey2 Посмотреть сообщение
.............Я их не раню, т.к. они, по сути, не нужны...........
.............Там же показано, что переменные объявляются в private и работают не мешая друг-другу.
Ну так Вы их не храните, или они "работают не мешая друг другу"? Как вообще переменные могут работать? Что происходит c членами переменной Form2 после очередного нажатия на кнопку?
B_N вне форума Ответить с цитированием
Старый 27.01.2008, 16:54   #24
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Ну так Вы их не храните, или они "работают не мешая друг другу"?
Работают не мешая и не храню
Цитата:
Как вообще переменные могут работать?
Ну в смысле что они разнвые, а не одинаковые. Если переменную объявить как не в привайте, то изменение значения переменной в одной форме вызывает изменение значений во всех формах. А если объявить в привайте, то каждое значение индивидуально.
Цитата:
Что происходит c членами переменной Form2 после очередного нажатия на кнопку?
размножаются или про что вопрос?
Sergey2 вне форума Ответить с цитированием
Старый 27.01.2008, 17:07   #25
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Sergey2 Посмотреть сообщение
Работают не мешая и не храню
Если переменную объявить как не в привайте, то изменение значения переменной в одной форме вызывает изменение значений во всех формах. А если объявить в привайте, то каждое значение индивидуально.
Хм... Это кто это Вам сказал такую глупость?

Цитата:
Сообщение от Sergey2 Посмотреть сообщение
размножаются или про что вопрос?
Как и куда может "размножаться" одна единственная переменная Form2?
B_N вне форума Ответить с цитированием
Старый 27.01.2008, 19:24   #26
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Хм... Это кто это Вам сказал такую глупость?
На практике именно так и есть.

Цитата:
Как и куда может "размножаться" одна единственная переменная Form2?
могу ошибиться в терминологии, но это не переменная, а объект. Вернее даже не объект, а тип. И вот создаеться несколько объектов данного типа... или как то так.
Sergey2 вне форума Ответить с цитированием
Старый 27.01.2008, 19:57   #27
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Sergey2 Посмотреть сообщение
На практике именно так и есть.
Ну, Вам виднее. До сего дня, правда, спецификатор private ограничивал доступ к члену класса только для объектов данного класса, ну да ладно.

Цитата:
Сообщение от Sergey2 Посмотреть сообщение
могу ошибиться в терминологии, но это не переменная, а объект. Вернее даже не объект, а тип. И вот создаеться несколько объектов данного типа... или как то так.
Так не нужно ошибаться в терминологии, программирование наука точная, а Вы типы и переменные в одну кучу валите. Разберитесь, где у Вас в записи
Код:
var  
    Form2: TForm2;
переменная, а где тип. И где в Вашем коде "создаеться несколько объектов данного типа... или как то так"
B_N вне форума Ответить с цитированием
Старый 27.01.2008, 20:06   #28
darkstarx
Пользователь
 
Регистрация: 20.01.2008
Сообщений: 24
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Ну это - знаете ли - ни в какие ворота!
Почитайте о событиях, весьма полезно, между прочим...
Хочу заметить, что ничего дурного в этом коде нет. Идея Ваша, Sergey2, правильная...на сколько я ее смог понять:

1. есть некоторая frmMain в модуле MainUnit, которая создается в program Project1 обычным способом Application.CreateForm(TfrmMain, frmMain)
2. на frmMain есть Кнопочка, которая открывает диалоговое окно с предложением выбрать файл
3. есть прописанная в Project1.dpr форма frmFunc из модуля FuncUnit, но не создаваемая, при этом в модуле FuncUnit удалена строка var frmFunc: TfrmFunc, так как она не нужна, зато в классе TfrmFunc в разделе public есть процедура funcProc, принимающая в качестве параметра имя файла и запускающая код обработки файла с отображением нужных окон и в них инфы
4. после выбора файла (п.2) выполняется код создания экземпляра класса TfrmFunc и вызывается открытый метод funcProc(OpenDialog.FileName)

Проблема у вас только в том, что пока не выполнится код в funcProc повторно вы кнопочку нажать не сможете, если не напишите Application.ProcessMessages в коде обработки файла в классе TfrmFunc

Могу предложить еще другой вариант - использовать нити, то есть код, который Вы пишите в обработчике нажатия Кнопки на frmMain, нужно запихнуть в процедуру, которая выполняется в отдельной нити (thread), а в обработчике нажатия кнопки создавать новый экземпляр потока с запусков в нем этого самого кода.

На словах конечно плохо объяснять, но модель архитектуры приложения рисовать сейчас нет времени.

Кстати класс этот можно запихнуть прямо в модуль нити (TMyThread)
darkstarx вне форума Ответить с цитированием
Старый 27.01.2008, 23:12   #29
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию

Цитата:
Сообщение от darkstarx Посмотреть сообщение
Хочу заметить, что ничего дурного в этом коде нет. Идея Ваша, Sergey2, правильная...на сколько я ее смог понять:

1. есть некоторая frmMain в модуле MainUnit, которая создается в program Project1 обычным способом Application.CreateForm(TfrmMain, frmMain)
2. на frmMain есть Кнопочка, которая открывает диалоговое окно с предложением выбрать файл
3. есть прописанная в Project1.dpr форма frmFunc из модуля FuncUnit, но не создаваемая, при этом в модуле FuncUnit удалена строка var frmFunc: TfrmFunc, так как она не нужна, зато в классе TfrmFunc в разделе public есть процедура funcProc, принимающая в качестве параметра имя файла и запускающая код обработки файла с отображением нужных окон и в них инфы
4. после выбора файла (п.2) выполняется код создания экземпляра класса TfrmFunc и вызывается открытый метод funcProc(OpenDialog.FileName)
Не совсем так. Никаких связей между frmMain и frmFunc нет. Единственное что есть, это в frmMain, в обработчике одной из кнопок есть вот такой код:
Код:
  with TForm2.Create(Application) do
    try
      Show;
    except
      Free;
    end;
frmFunc живет своей жизнью, т.е. у него в frmFunc.onCreate происходит запуск всего чего надо и дальше все само работает.

Цитата:
Могу предложить еще другой вариант - использовать нити, то есть код, который Вы пишите в обработчике нажатия Кнопки на frmMain, нужно запихнуть в процедуру, которая выполняется в отдельной нити (thread), а в обработчике нажатия кнопки создавать новый экземпляр потока с запусков в нем этого самого кода.

На словах конечно плохо объяснять, но модель архитектуры приложения рисовать сейчас нет времени.

Кстати класс этот можно запихнуть прямо в модуль нити (TMyThread)
Про нити знаю, просто есть уже готовая программа. И в последний момент было принято решение сделать так, что бы она позволяла обрабатывать сразу несколько файлов. Что бы не переписывать код под нити, хочется сделать вот так.

Проект приложил.
Вложения
Тип файла: rar rar!.rar (7.8 Кб, 7 просмотров)
Sergey2 вне форума Ответить с цитированием
Старый 28.01.2008, 08:53   #30
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ох и демагогия!...
Непонимаю хода мыслей спорящих - на мой взгляд лучшее решение предбявил B_N
Он верно сказал что мона сделать одну главную форму,а остальные будут создаваться когда пользователь захочет открыть еще один файл, причем насчет потоков это тоже светлая мыслю, хоть и не обязательная.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поверх окон Лубышев Помощь студентам 1 29.01.2008 13:43
Координаты окон Лубышев Общие вопросы Delphi 6 22.01.2008 19:40
Размножение червя ZYRGiX Безопасность, Шифрование 6 07.09.2007 19:39
Пристыковка Окон OrdJONY Общие вопросы Delphi 15 19.04.2007 12:47