![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
Pcrepair |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 16.1.2011 Репутация: нет Всего: нет |
Добрый день
Есть Unit1 - основной модуль, содержит форму unit2 - без формы, содержит процедуру, вызываемую из Unit1 Data: string; - глобальная переменная для хранения текста Если разместить Data в модуль Unit2 перед implementation то все нормально работает, Data доступна подпрограммам и из Unit1 и Unit2 Если разместить Data в модуль Unit1 перед implementation, то из Unit2 она не доступна уже размещал Data в секцию public в Unit1 и вводил Unit1 в секцию uses unit2, ничего не помогает
Кто подскажет в чем дело? нужно разместить переменную в основном модуле, но чтоб она была доступна в подключаемых модулях --------------------
Сборник рабочего кода Процедур и Функций DelPhi http://validcoderepo.narod.ru/ |
|||
|
||||
Чучмек |
|
||||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
Unit2 у тебя прописан в uses Unit1 или Project1?
Добавлено @ 11:05 Например: Новый проект. + File->New->Unit В unit2 объявляешь переменную s
В uses unit1 добавляешь Unit2 и объявляешь переменную s:string absolute unit2.s
Все Это сообщение отредактировал(а) Чучмек - 7.6.2012, 11:09 -------------------- умную мысль держи при себе, а дурной - поделись с другими |
||||
|
|||||
Pcrepair |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 16.1.2011 Репутация: нет Всего: нет |
унит2 конечно прописан в унит1, ведь там процедура которую вызывают из унит1
но вообще уже ясно, не там указал унит1 в унит1, не подключил так сказать ту некотрые советуют все ГлобПерем в отдельном юните прописать, как такое решение? потому что будет еще унит3 и унит4 и все будут вызывать эту переменную чтоб обрабатыватьданные в ней --------------------
Сборник рабочего кода Процедур и Функций DelPhi http://validcoderepo.narod.ru/ |
|||
|
||||
Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Не используйте глобальные переменные.
Это сообщение отредактировал(а) Qu1nt - 7.6.2012, 13:43 |
|||
|
||||
Pcrepair |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 16.1.2011 Репутация: нет Всего: нет |
кстати, так никто и не поведал: ну чем так ужастны глобальные переменные?
в книжках об этом, их ужастности, то же пишут, но совершенно бездоказательно --------------------
Сборник рабочего кода Процедур и Функций DelPhi http://validcoderepo.narod.ru/ |
|||
|
||||
Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
||||
|
||||
Pcrepair |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 16.1.2011 Репутация: нет Всего: нет |
у гани смокера одни надуманные примеры, да и доводы то же. все это прочитано и многое другое
вот если кто на реальных примерах указал, что при испоьзовании ГП: - программа зависает - перерасход памяти - прочие плохие пришествия тогда все эти утверждения что Гп - здло, не бы ли бы голословными --------------------
Сборник рабочего кода Процедур и Функций DelPhi http://validcoderepo.narod.ru/ |
|||
|
||||
Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Никого переубеждать не собираюсь. Скажу лишь, что отлично обхожусь без глобальных переменных программируя на C#. А еще мне нравится писать масштабируемые системы, независимые от контекста окружения. Реализовать подобные решение с использованием глобальных переменных сложнее, и этот топик тому подтверждение.
|
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Qu1nt, можно увидеть пример такой системы? Какой не жалко
|
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
...надо бы сказать клиентам, чьи примеры я привожу, что их приложения "надуманы"... -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
а зачем такая жесть?! Unit1 и так "увидит" глоб.переменную из Unit2, разве нет? А вообще согласен. Глоб.переменные это зло и по возможности надо их избегать. -------------------- There are always someone smarter than you... |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
Секция public относится к обьекту а не юниту. Сделай просто обычный var или const сразу под uses. Ну и указывай этот модуль в uses модуля в котором будешь обращаться к переменной. Можешь использовать - никто ни против. |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
Unit2 не увидит переменную из Unit1 -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Прежде чем учить алгебру, надо изучить арифметику. Прежде чем учить высшую математику, надо изучить простую математику. Нечто подобное относится и к программированию.
Твоя программа, которую ты "рожаешь" уже довольно давно, никогда "не взлетит"! 1. Потому, что ты считаешь себя программистом, не имея на то никаких оснований. 2. Потому, что ты не считаешь программистами тех, кто тебе указывает на неправильные решения. 3. Потому что слишком часто хамишь. Примите и прочь. Это сообщение отредактировал(а) northener - 8.6.2012, 01:23 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
не понял, зачем ему видеть какую-то переменную из Unit1, если у него (Unit2) есть "своя" глобальная переменная, которую Unit1 и так "видит"? -------------------- There are always someone smarter than you... |
|||
|
||||
Чучмек |
|
||||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
Не знаю. Я вопрос так понял.
Иногда действительно бывает нужно (удобней). Хотя это, наверное, использование модулей через ж... . Я, когда мне была нужна такая махинация, объявлял в модулях указатели и при инициализации переводил их на переменную в dpr. Это сообщение отредактировал(а) Чучмек - 8.6.2012, 18:51 -------------------- умную мысль держи при себе, а дурной - поделись с другими |
||||
|
|||||
Dapo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 18.4.2002 Репутация: нет Всего: 1 |
А я чето не понял чего вы взялись обсуждать хорошо это или плохо? Это нормальное использование не модулей, а возможностей среды, не более того. Хочет человек использовать - да пожалуйста. Утечки памяти? Неверное значение? Блокировка? Ну он сам решит где чего, когда и зачем. Глобальные переменные - это гуд вне всяких сомнений, просто надо их правильно готовить. Указателями на них (великих и глобальных) конечно дело не исправишь.
Автор, вопрос хороший, жаль ответить не могу уж извини ![]() Это сообщение отредактировал(а) Dapo - 8.6.2012, 20:37 |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
Тоже мне, нашелся умник) Все в программировании гуд, если использовать это с понятием того, что делаешь. Но использование глобальных переменных со временем может вылиться в... серьезные проблемы. Говорю как человек, который сталкивался с такими проблемами в большом проекте. Так что для студенческих поделок или небольших программ-однодневок можно и активно попользовать глоб.переменные... но если проектируется что-то серьезно, то их стоит избегать, как огня. -------------------- There are always someone smarter than you... |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
||||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: нет Всего: 5 |
Для хелловорлда если только и то не факт. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Так тролль задал дурацкий вопрос, а потом прокомментировал некоторый ответ. И некоторые "купились". -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 0 Всего: 7 |
Взаимная видимость модулей возможна, только если их друг друг в uses после implementation писать. Для форм это еще куда ни шло, но все глобальные переменные и функции, которые используются в нескольких модулях, если уж они есть, вынести нафиг в один или несколько юнитов, которые будут видеть все, кому это положено, а сами юниты не будут видеть никого.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
О!!! Beltar,
![]() -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 0 Всего: 7 |
Я сказал что-то неочевидное??
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
-------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
Dapo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 18.4.2002 Репутация: нет Всего: 1 |
northener, ты бы посмотрел на дату моей регистрации для начала, сокол. Троллить на forum.vingrad для меня святотатство.
![]() ![]() PS Ну и что, что некропост. Крайне редко захожу на родную Дельфи. Это сообщение отредактировал(а) Dapo - 25.6.2012, 16:57 |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Мысль интересная, но неверная. Вернее, не до конца верная. Аналогия: то, опасно не оружие, а опасен человек, не отменяет существенно большей (потенциальной) опасности огнестрельного оружия по сравнению с постельной подушкой. К более опасным вещам следует относиться с большей осторожностью, следовать правилам по их применению, по мере возможностей - избегать, где это возможно, предпочитая более безопасные вещи. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Dapo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 18.4.2002 Репутация: нет Всего: 1 |
CodeMonkey, ну это уже флейм
![]() ![]() Это сообщение отредактировал(а) Dapo - 25.6.2012, 17:34 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Модератор: учитесь делать это тоньше. Тема закрыта
-------------------- Обижено школьников: 8 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |