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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2020, 09:26   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье Переменные. Что лучше, несколько локальных или одна глобальная переменная?

Здравствуйте!
Хотелось бы узнать, что лучше использовать, несколько локальных или одну глобальную переменную?

Последний раз редактировалось Женя32; 06.09.2020 в 10:21.
Женя32 вне форума Ответить с цитированием
Старый 06.09.2020, 11:10   #2
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

Женя32, решение использовать глобальную переменную должно быть обосновано. Что именно требуется сделать и что хочется получить ?
Алексей1153 вне форума Ответить с цитированием
Старый 06.09.2020, 11:29   #3
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
Женя32, решение использовать глобальную переменную должно быть обосновано. Что именно требуется сделать и что хочется получить ?
В двух кнопках две переменных с одинаковым именем и типом. Лучше в каждой кнопке объявить локальную, или один раз глобальную?
Button1:
Код:
  if addBProF then
         begin
           Form1.BlockedProfile.Items.Add(strU);
           Form1.BlockedProfile.Items.SaveToFile('BlockPFile.mbm');
           Form1.BlockedProfile.Items.LoadFromFile('BlockPFile.mbm');
         end;
Button2:
Код:
if addBProF then
         begin
           Form1.BlockedProfile.Items.Add(strU);
           Form1.BlockedProfile.Items.SaveToFile('contacts.mbm');
           Form1.BlockedProfile.Items.LoadFromFile('contacts.mbm');
         end;

Последний раз редактировалось Женя32; 06.09.2020 в 11:33.
Женя32 вне форума Ответить с цитированием
Старый 06.09.2020, 11:51   #4
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
В двух кнопках две переменные
в кнопках не бывает переменных, речь идёт об обработчиках, то есть функциях.

Так о какой переменной идёт речь то ?

вижу два одинаковых участка кода, которые можно вынести в функцию, в которую нужно передать одну текстовую строку
Алексей1153 вне форума Ответить с цитированием
Старый 06.09.2020, 12:05   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Зависит от конкретной ситуации. Например: по нажатию кнопки принять значение, по нажатию другой - что-то с этим значением делать. Тут переменная будет "обменником" между обработчиками - глобальной .

Последний раз редактировалось digitalis; 06.09.2020 в 12:09.
digitalis вне форума Ответить с цитированием
Старый 07.09.2020, 10:23   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
В двух кнопках две переменных с одинаковым именем и типом.
если это ДВЕ переменных( по смыслу программы), то это локальные.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 28.09.2020, 16:44   #7
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Извините, но не могу пройти мимо. Ответы просто бомбические. Вы просто жжёте напалмом

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
в кнопках не бывает переменных, речь идёт об обработчиках, то есть функциях.
кэп не под своим аккаунтом зашел.
И кстати. В delphi обработчиками являются не функции, а процедуры.
Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
Так о какой переменной идёт речь то ?
о addBProF
Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
вижу два одинаковых участка кода, которые можно вынести в функцию, в которую нужно передать одну текстовую строку
Во-первых, они не одинаковые. Во-вторых, там же написано, что это два обработчика двух разных кнопок. Как вы смотрите?
Цитата:
Сообщение от Женя32 Посмотреть сообщение
В двух кнопках две переменные с одинаковым именем и типом. Лучше в каждой кнопке объявить локальную, или один раз глобальную?
Если значение этой переменной задаётся в обработчике этой кнопки (а скорее всего так и есть), то лучше использовать локальные переменные. Не важно, сколько их - две или тысяча.
Глобальные переменные нужны только если вам надо использовать какое-то общее значение в разных процедурах/функциях.


Цитата:
Сообщение от digitalis Посмотреть сообщение
Зависит от конкретной ситуации. Например: по нажатию кнопки принять значение, по нажатию другой - что-то с этим значением делать. Тут переменная будет "обменником" между обработчиками - глобальной .
Согласен. Это правильно. Но в данном случае вопрос ТС и ответ на него очевиден. ТС не подразумевал обмен данными между обработчиками. Он хотел просто обойтись одной глобальной переменной вместо того, чтобы в каждом обработчике создавать их локально.
На ютубе очень часто такое вижу. Они, почему-то, не любят локальные переменные.

Последний раз редактировалось BLACK_RAIN; 28.09.2020 в 16:53.
BLACK_RAIN вне форума Ответить с цитированием
Старый 28.09.2020, 17:52   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
Во-первых, они не одинаковые. Во-вторых, там же написано, что это два обработчика двух разных кнопок. Как вы смотрите?
А чем они отличаются, кроме имени файла? Вполне верное замечание, что лучше вынести этот код в отдельную процедуру, принимающую имя файла.

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
о addBProF
А может о strU?

С точки зрения кода:
Код:
           Form1.BlockedProfile.Items.SaveToFile('contacts.mbm');
           Form1.BlockedProfile.Items.LoadFromFile('contacts.mbm');
Во-первых, если это обработчик события класса TForm1, то не пишите там Forn1. Во-вторых, а зачем поле SaveToFile делать LoadFromFile? В надежде, что загрузится не то, что только что было сохранено в файл?

Последний раз редактировалось Arigato; 28.09.2020 в 17:56.
Arigato вне форума Ответить с цитированием
Старый 28.09.2020, 20:09   #9
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Вполне верное замечание, что лучше вынести этот код в отдельную процедуру, принимающую имя файла.
замечание-то верное, но вопрос автора был вполне однозначный. А какая именно переменная - не столь важно.
BLACK_RAIN вне форума Ответить с цитированием
Старый 28.09.2020, 21:52   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
вопрос автора был вполне однозначный
Вопрос автора можно однозначно решить выносом данных действий в отдельную процедуру. После этого вопросов на счет переменных уже не возникнет, она будет локальной в этой процедуре и единственной в коде.
Arigato вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глобальная функция + приватные переменные + вызов из другого класса? chiffa Общие вопросы C/C++ 7 12.01.2018 23:46
Подсчитать количество локальных минимумов вектора Х(25). Предусмотреть распечатку значений локальных минимумов Shved2298 Помощь студентам 1 08.05.2017 12:01
несколько структур одна переменна Khayzenberg Общие вопросы Delphi 11 05.10.2012 09:18
График, одна общая ось х, несколько y Dobrk_k Microsoft Office Excel 6 29.04.2012 14:04
Как вместо статических локальных переменных использовать переменные объявленные в namespace? Oleg_SK Общие вопросы C/C++ 25 05.07.2010 18:46