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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2015, 12:21   #1
Андрей-ник
 
Регистрация: 24.04.2015
Сообщений: 7
По умолчанию Две кнопки в одной форме.

Здравствуйте! Заранее извиняюсь, если подобная ситуация уже разбиралась на форуме. Тогда дайте ссылку на соответствующую тему.

Суть моей проблемы:
Решил написать программу с двумя кнопками в одной форме. При нажатии первой кнопки должен формироваться массив, при нажатии второй кнопки полученный массив должен обрабатываться. Для двух кнопок создал две процедуры:
procedure TForm1.Button1Click(Sender: TObject);
и
procedure TForm1.Button2Click(Sender: TObject);
с соответствующими программами, и всё вроде работает, но при нажатии второй кнопки процедура не видит данные полученные первой процедурой, и видимо она обрабатывает какие-то коды, потому что ответ выдаётся но не такой, какой ожидается.

Поэтому прошу, подскажите как во второй процедуре задействовать данные из первой процедуры? Вот программный текст второй процедуры:
Код:
procedure TForm1.Button2Click(Sender: TObject);
 var Massiv:array[1..10] of integer;
       Max,Min,i:integer;
begin
  Max:=Massiv[1]; Min:=Massiv[1];
  for  i:=2 to 10 do
      begin
      If  Massiv[i]>Max then Max:=Massiv[i];
      If  Massiv[i]<Min then Min:=Massiv[i];
      end;
  Label3.Caption:=’Наибольший элемент массива = '+IntToStr(Max)+#13+’Наименьший элемент массива = '+IntToStr(Min);
  ShowMessage('Обработка массива закончена!');
end;

Последний раз редактировалось Stilet; 28.04.2015 в 12:28.
Андрей-ник вне форума Ответить с цитированием
Старый 28.04.2015, 12:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

var Massiv выдвори в глобальные переменые.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2015, 13:39   #3
Андрей-ник
 
Регистрация: 24.04.2015
Сообщений: 7
По умолчанию

Куда именно вписать var Massiv:array[1..10] of integer; т.е. где именно должны прописываться глобальные переменные?

Пишу после

unit Unit1;

interface

при запуске программы компилятор подчёркивает uses и выдаёт ошибку: [Error] Unit1.pas(6): Declaration expected but 'USES' found.

Пишу после
var
Form1: TForm1;

программа работает, но выдаёт Max и Min = 0, т.е. тоже что-то не то.
Андрей-ник вне форума Ответить с цитированием
Старый 28.04.2015, 13:51   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты в принципе понимаешь что такое глобальные переменные и для чего служит секция var?
Разницу между локальными (внутри функции) и глобальными переменным различаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2015, 14:16   #5
Андрей-ник
 
Регистрация: 24.04.2015
Сообщений: 7
По умолчанию

Я - чайник в Delphi, т.е. пытаюсь разобраться.
Так как пишу здесь, то не сложно догадаться, что Инетом пользуюсь.
Поэтому:
Глобальные переменные — это переменные, объявленные за пределами функции или процедуры. Например, переменные, объявленные в главном файле проекта Delphi или в разделах интерфейса или реализации модуля, является глобальными.
Локальные переменные — это переменные, которые объявлены в процедуре или функции.

Вы мне предлагаете Var Massiv вынести из процедуры в общую часть программы. Вот я и спрашиваю в какое именно место выносить? В раздел итерфейса я уже Var Massiv выносил.

Можно пропечатать кусочек из какой-нибудь программы с примером выноса в глобальные переменные массива?
Андрей-ник вне форума Ответить с цитированием
Старый 28.04.2015, 14:24   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

у Вас в программе есть место, где объявляется переменная формы:
Код:
var Form1 : TForm1;
вот туда и запишите объявление вашего глобального массива.
Ну и НЕ забудьте убрать описание этого же массива внутри процедур!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.04.2015, 14:48   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вот я и спрашиваю в какое именно место выносить? В раздел итерфейса я уже Var Massiv выносил.
Нет ) Если хочешь разобраться по настоящему прочитай в обычной книге о классическом паскале что такое секция var.
Например тут: http://pascal.proweb.kz/index.php?page=57
раздел описания переменных
Или вот: http://exinform09.narod.ru/otveti/28.html
Т.е. классику, основы подтяни.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2015, 16:09   #8
Андрей-ник
 
Регистрация: 24.04.2015
Сообщений: 7
По умолчанию

Stilet, я понимаю, что такое раздел переменных var, но до сих пор пользовался только локальным разделом описания переменных, т.е. только в процедуре. За совет про книжки спасибо, у меня уже накачено с десяток по Делфи и Паскалю (может и больше), Но мне на данный момент нужен практический совет, теорию я и так подтягиваю помаленьку. За ссылки спасибо. Обязательно ознакомлюсь, надеюсь, что они смогут прояснить мой вопрос.

Serge_Bliznykov, спасибо за подсказку, но я уже пробовал там объявить массив и об этом написал в третьем посте этой темы. В результате значение Max и Min выдаётся равным нулю, т.е. данные массива из первой процедуры не поступают во вторую процедуру на обработку.

Может я неверно объявляю там массив?
Из второй процедуры описание массива убирал.

Ага! Ну вот, допёр))
Оказывается описание массива нужно убирать, как из второй процедуры, та и из первой, где массив формируется. Оставлять нужно только одно глобальное описание этого массива. Как приятно общаться с умными людьми )))
Андрей-ник вне форума Ответить с цитированием
Старый 28.04.2015, 16:40   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Оставлять нужно только одно глобальное описание этого массива.
Знаешь, один неординарный человек ушедшей эпохи сказал:
Цитата:
Задача
состоит не в том, чтобы обременять свою память определенным количеством книг.
Надо добиваться того, чтобы в рамках общего мировоззрения мозаика книг
находила себе соответствующее место в умственном багаже человека и помогала
ему укреплять и расширять свое миросозерцание. В ином случае в голове читателя
получается только хаос. Механическое чтение оказывается совершенно
бесполезным, что бы ни думал об этом несчастный читатель, наглотавшийся книг.
Такой читатель иногда самым серьезным образом считает себя "образованным",
воображает, что он хорошо узнал жизнь, что он обогатился знаниями, а между тем
на деле по мере роста такого "образования" он все больше и больше удаляется от
своей цели. В конце концов, он кончит либо в санатории, либо "политиком" в
парламенте.
Так что толку от твоей накачанности никакого не будет, если не научишься правильно все усвоенное принимать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2015, 09:47   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Глобальные переменные ндо юзать только тогда, когда по-другому никак.
Здесь этот несчастный массив из 10 целых чисел нужно сделать полем формы и всё.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Две формулы в одной ячейке. DoctorDremlen Microsoft Office Excel 2 07.05.2013 01:00
Две кнопки Ko$ Общие вопросы Delphi 0 15.11.2011 15:16
Добавать две кнопки! _Мария_ Помощь студентам 2 22.06.2011 22:01
Две группы переключателей на одной форме Delphi ChEaTeR-abc Помощь студентам 5 04.07.2010 16:53
две ссылки в одной mutaborxxx HTML и CSS 3 12.10.2009 17:40