Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Видимость переменных в разных модулях, Видимость переменных в разных модулях 
:(
    Опции темы
Pcrepair
Дата 7.6.2012, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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, ничего не помогает

Код

public
  var
    Data: string;
  end;


Кто подскажет в чем дело? нужно разместить переменную в основном модуле, но чтоб она была доступна в подключаемых модулях
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Чучмек
Дата 7.6.2012, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Unit2 у тебя прописан в uses Unit1 или Project1?

Добавлено @ 11:05
Например:
Новый проект. + File->New->Unit
В unit2 объявляешь переменную s 
Код

unit Unit2;

interface

var s:string;

implementation
....
....


В uses unit1 добавляешь Unit2
и объявляешь переменную s:string absolute unit2.s
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, unit2;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  var s:string absolute unit2.s;

implementation
...
...


Все

Это сообщение отредактировал(а) Чучмек - 7.6.2012, 11:09


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Pcrepair
Дата 7.6.2012, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



унит2 конечно прописан в унит1, ведь там процедура которую вызывают из унит1
но вообще уже ясно, не там указал унит1 в унит1, не подключил так сказать

ту некотрые советуют все ГлобПерем в отдельном юните прописать, как такое решение? потому что будет еще унит3 и унит4 и все будут вызывать эту переменную чтоб обрабатыватьданные в ней
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Qu1nt
Дата 7.6.2012, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 22
Всего: 50



Не используйте глобальные переменные.

Это сообщение отредактировал(а) Qu1nt - 7.6.2012, 13:43
PM MAIL   Вверх
Pcrepair
Дата 7.6.2012, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



кстати, так никто и не поведал: ну чем так ужастны глобальные переменные?
в книжках об этом, их ужастности, то же пишут, но совершенно бездоказательно
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Qu1nt
Дата 7.6.2012, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 22
Всего: 50



PM MAIL   Вверх
Pcrepair
Дата 7.6.2012, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



у гани смокера одни надуманные примеры, да и доводы то же. все это прочитано и многое другое
вот если кто на реальных примерах указал, что при испоьзовании ГП:
- программа зависает
- перерасход памяти
- прочие плохие пришествия

тогда все эти утверждения что Гп - здло, не бы ли бы голословными
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Qu1nt
Дата 7.6.2012, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 22
Всего: 50



Никого переубеждать не собираюсь. Скажу лишь, что отлично обхожусь без глобальных переменных программируя на C#. А еще мне нравится писать масштабируемые системы, независимые от контекста окружения. Реализовать подобные решение с использованием глобальных переменных сложнее, и этот топик тому подтверждение.
PM MAIL   Вверх
Keeper89
Дата 7.6.2012, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Qu1nt, можно увидеть пример такой системы? Какой не жалко


--------------------
PM MAIL WWW   Вверх
CodeMonkey
Дата 7.6.2012, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Цитата
у гани смокера одни надуманные примеры


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


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
MetalFan
Дата 7.6.2012, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(Чучмек @  7.6.2012,  10:56 Найти цитируемый пост)
и объявляешь переменную s:string absolute unit2.s

а зачем такая жесть?! Unit1 и так "увидит" глоб.переменную из Unit2, разве нет?

А вообще согласен. Глоб.переменные это зло и по возможности надо их избегать.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
superVad
Дата 7.6.2012, 23:23 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Цитата(Pcrepair @  7.6.2012,  09:46 Найти цитируемый пост)
уже размещал Data в секцию public в Unit1 и вводил Unit1 в секцию uses unit2, ничего не помогает

Секция public относится к обьекту а не юниту.
Сделай просто обычный var или const сразу под uses. Ну и указывай этот модуль в uses модуля в котором будешь обращаться к переменной.

Цитата(Pcrepair @  7.6.2012,  14:12 Найти цитируемый пост)
у гани смокера одни надуманные примеры, да и доводы то же. все это прочитано и многое другоевот если кто на реальных примерах указал, что при испоьзовании ГП:- программа зависает- перерасход памяти- прочие плохие пришествиятогда все эти утверждения что Гп - здло, не бы ли бы голословными

Можешь использовать - никто ни против.
PM MAIL   Вверх
Чучмек
Дата 7.6.2012, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Цитата(MetalFan @  7.6.2012,  23:00 Найти цитируемый пост)
а зачем такая жесть?! Unit1 и так "увидит" глоб.переменную из Unit2, разве нет?

Unit2 не увидит переменную из Unit1


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
northener
Дата 8.6.2012, 01:22 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(Pcrepair @  7.6.2012,  15:12 Найти цитируемый пост)
у гани смокера одни надуманные примеры, да и доводы то же. все это прочитано и многое другое
вот если кто на реальных примерах указал, что при испоьзовании ГП:
- программа зависает
- перерасход памяти
- прочие плохие пришествия

тогда все эти утверждения что Гп - здло, не бы ли бы голословными 


Прежде чем учить алгебру, надо изучить арифметику. Прежде чем учить высшую математику, надо изучить простую математику.
Нечто подобное относится и к программированию.
Цитата

- программа зависает
- перерасход памяти
- прочие плохие пришествия

Твоя программа, которую ты "рожаешь" уже довольно давно, никогда "не взлетит"!
1. Потому, что ты считаешь себя программистом, не имея на то никаких оснований.
2. Потому, что ты не считаешь программистами тех, кто тебе указывает на неправильные решения.
3. Потому что слишком часто хамишь.
Примите и прочь.

Это сообщение отредактировал(а) northener - 8.6.2012, 01:23


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
MetalFan
Дата 8.6.2012, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(Чучмек @  7.6.2012,  23:34 Найти цитируемый пост)
Unit2 не увидит переменную из Unit1 

не понял, зачем ему видеть какую-то переменную из Unit1, если у него (Unit2) есть "своя" глобальная переменная, которую Unit1 и так "видит"?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Чучмек
Дата 8.6.2012, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Цитата(MetalFan @  8.6.2012,  18:32 Найти цитируемый пост)
не понял, зачем ему видеть какую-то переменную из Unit1, если у него (Unit2) есть "своя" глобальная переменная, которую Unit1 и так "видит"? 

Не знаю. Я вопрос так понял.
Цитата(Pcrepair @  7.6.2012,  10:46 Найти цитируемый пост)
нужно разместить переменную в основном модуле, но чтоб она была доступна в подключаемых модулях 

Иногда действительно бывает нужно (удобней). Хотя это, наверное, использование модулей через ж... .
Я, когда мне была нужна такая махинация, объявлял в модулях указатели и при инициализации переводил их на переменную в dpr. 
 


Это сообщение отредактировал(а) Чучмек - 8.6.2012, 18:51


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Dapo
Дата 8.6.2012, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



А я чето не понял чего вы взялись обсуждать хорошо это или плохо? Это нормальное использование не модулей, а возможностей среды, не более того. Хочет человек использовать - да пожалуйста. Утечки памяти? Неверное значение? Блокировка? Ну он сам решит где чего, когда и зачем. Глобальные переменные - это гуд вне всяких сомнений, просто надо их правильно готовить. Указателями на них (великих и глобальных) конечно дело не исправишь.
Автор, вопрос хороший, жаль ответить не могу уж извини  smile  закопался в яве

Это сообщение отредактировал(а) Dapo - 8.6.2012, 20:37
PM MAIL   Вверх
MetalFan
Дата 8.6.2012, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(Dapo @  8.6.2012,  20:35 Найти цитируемый пост)
Глобальные переменные - это гуд

Тоже мне, нашелся умник) Все в программировании гуд, если использовать это с понятием того, что делаешь.
Но использование глобальных переменных со временем может вылиться в... серьезные проблемы. Говорю как человек, который сталкивался с такими проблемами в большом проекте.
Так что для студенческих поделок или небольших программ-однодневок можно и активно попользовать глоб.переменные... но если проектируется что-то серьезно, то их стоит избегать, как огня.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
superVad
Дата 8.6.2012, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Цитата(MetalFan @  8.6.2012,  21:14 Найти цитируемый пост)
но если проектируется что-то серьезно, то их стоит избегать, как огня.

Я бы добавил - или рассчитываете это делать когда нибудь в будущем.
PM MAIL   Вверх
k0rvin
Дата 8.6.2012, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: нет
Всего: 5



Цитата(Dapo @  8.6.2012,  20:35 Найти цитируемый пост)
Глобальные переменные - это гуд вне всяких сомнений


Для хелловорлда если только и то не факт.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
northener
Дата 9.6.2012, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(Dapo @  8.6.2012,  20:35 Найти цитируемый пост)
А я чето не понял чего вы взялись обсуждать хорошо это или плохо?

Так тролль задал дурацкий вопрос, а потом прокомментировал некоторый ответ.
И некоторые "купились".


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Beltar
Дата 13.6.2012, 07:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 0
Всего: 7



Взаимная видимость модулей возможна, только если их друг друг в uses после implementation писать. Для форм это еще куда ни шло, но все глобальные переменные и функции, которые используются в нескольких модулях, если уж они есть, вынести нафиг в один или несколько юнитов, которые будут видеть все, кому это положено, а сами юниты не будут видеть никого.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Чучмек
Дата 13.6.2012, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



О!!! Beltar,  smile 


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Beltar
Дата 13.6.2012, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 0
Всего: 7



Я сказал что-то неочевидное??


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Чучмек
Дата 13.6.2012, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Цитата(Beltar @  13.6.2012,  07:45 Найти цитируемый пост)
uses после implementation




--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Dapo
Дата 25.6.2012, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



northener, ты бы посмотрел на дату моей регистрации для начала, сокол. Троллить на forum.vingrad для меня святотатство. smile  Да еще и внимательно бы прочитал, то, что я написал. Я еще раз повторю - для любых поделок - от студенческих до поделок MetaLFan глобальные переменные - это гуд. Если кто-то не может контролировать свой код или программирует неорганизованной толпой, так это не проблемы глобальных переменных, господа  smile

PS Ну и что, что некропост. Крайне редко захожу на родную Дельфи.

Это сообщение отредактировал(а) Dapo - 25.6.2012, 16:57
PM MAIL   Вверх
CodeMonkey
Дата 25.6.2012, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Цитата
Если кто-то не может контролировать свой код или программирует неорганизованной толпой, так это не проблемы глобальных переменных, господа 


Мысль интересная, но неверная. Вернее, не до конца верная. 

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


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Dapo
Дата 25.6.2012, 17:33 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



CodeMonkey, ну это уже флейм  smile Тем не менее, твое мнение всегда уважал. Пытаюсь вывести народ на экземплы, а то "низя" - не дает полету мысли. Ведь я написал очень коротко возможные траблы, но почему-то многие увидели только "гуд"  smile 

Это сообщение отредактировал(а) Dapo - 25.6.2012, 17:34
PM MAIL   Вверх
bems
Дата 26.6.2012, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Модератор: учитесь делать это тоньше. Тема закрыта


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1193 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.