Урок 2 - Переменные и их типы

  Продолжаем наше обучение! В Delphi очень важную роль играют переменные. В процессе работы программы в переменных можно как хранить так и извлекать информацию. Переменные могут иметь разный тип. Например для того, чтобы в переменную записать какой-нибудь текст используется тип String. Для того, что бы записать в переменную число используют тип Integer.

Вот список основных типов переменных в Delphi:

  • Integer - целые числа из диапазона: -2147483648..+2147483647
  • Shortin - целые числа из диапазона: -128..+127
  • Byte - целые числа из диапазона: 0..+255
  • Real - как целые так и дробные числа из диапазона: 5e-324..1.7e+308
  • Double - схож с типом Real
  • String - строковый тип данных
  • Char - символьный тип данных
  • Bollean - логический тип данных. Может принимать значение True - истина или False - ложь
С теорией мы закончили, теперь давайте откроем Delphi 7 и создадим новый проект. После этого кидаем на форму знакомый нам компонент Button и еще не знакомый Label. Компонент Label эта такая полезная вещь, в которую можно записать какую-нибудь подпись. Например подпись для другого компонента или просто записать в него автора программы. Попробуйте отыскать компонент Label сами, наводя на все компоненты в вкладке Standard и читая всплывающую подсказку. Кому сложно найти, то это четвертый компонент слева, не считая значка курсора.

Я всё сделал и у меня получилось вот так:

Лабел и батон на форме


Сейчас нам нужно создать событие OnClick на кнопке, я надеюсь, что вы помните, как это делать.
Переменные объявляются между ключевыми словами procedure и begin. Объявление начинается с ключевого слова var, потом пишется имя переменной и через двоеточие её тип. Заканчивается все как всегда точкой с запятой.

  Создадим переменную S типа String в процедуре OnClick:
procedure TForm1.Button1Click(Sender: TObject);
var S:string;
begin

end;
После этого между ключевыми словами begin end присвоим переменной значение равное 'Моя первая переменная'. Присвоение пишется следующим образом. Пишем имя переменной, оператор присвоения := и значение. Если мы записываем информацию типа String, то информация заключается в одинарные кавычки.

Общий вид:
procedure TForm1.Button1Click(Sender: TObject);
var S:string;
begin
S:='Моя первая переменная';
end;
Теперь если скомпилировать программу и нажать на кнопку ничего существенного не произойдет, просто в переменную запишется значение и всё. Попробуем вывести значение из переменной. Делается это также просто как и записывается. Выводить значение мы будем в наш Label.

Синтаксис такой:
Label1.Caption:=S;
Разберем этот код подробно. Сначала мы написали Label1, потом пишем точку и в Delphi появляется огромный список со свойствами данного компонента. Можно конечно порыться и отыскать там Caption, но мы будем умнее! Мы, после того как поставили точку, напишем еще букву C и Delphi как бы отсортирует все свойства и найдет все, которые начинаются с буквы C. Первым в списке как раз будет свойство Caption.

Label1.C


Выбираем его из списка и нажимаем на Enter. Заметьте, что мы писали Label1.C, но после того, как нажали Enter, Delphi сам дописал название свойства. Далее опять же идет оператор присвоения и наша переменная.

Вы наверняка спросите: "Зачем же переменная, если можно было написать Label1.Caption:='Моя первая переменная';?". Ответ простой. Это нужно затем, что мы изучаем переменные :).
Нет, на самом деле так присваивать тоже можно, но представьте такую ситуацию, что вы написали очень большую, популярную программу и у вас, там в программе, пятидесяти компонентам присваивается одно и тоже значение и вот перед вами встала задача: "Поменять это значение на более универсальное и понятное для пользователя".

Что вы будете делать?
  • В первом случае у вас всем этим компонентам присваивается одна и та же переменная и чтобы изменить всем этим пятидесяти компонентам значение вам просто нужно поменять значение в переменной.

  • Во втором случае вы сидите 20 минут и всё копируете и копируете значение всем пятидесяти компонентам.
Вывод делайте сами.

И так, продолжаем! В общем виде должно быть так:
procedure TForm1.Button1Click(Sender: TObject);
var S:string;
begin
S:='Моя первая переменная';
Label1.Caption:=S;
end;
Компилируем нашу программу и нажимаем на Button (батон/кнопку). Сразу же компонент Label вместо Label1 будет показывать Моя первая переменная.

На этом хотелось бы закончить, так как я уже устал писать урок :), но я еще не познакомил вас с типом Integer и как присваивать переменную с таким типом. Вы думаете, что присваивать ее нужно точно так же как и переменную типа String, но вы ошибаетесь.
Дело в том, что свойству Caption вообще у всех компонентов можно присвоить только текстовые значения. Как мы будем присваивать числовой тип если можно только текстовой? Всё проще некуда. Между типами переменных можно как бы переключаться, то есть можно из числового типа сделать текстовой и присвоить его компоненту Label. Этим мы сейчас и займемся.

Для начала нужно начать сначала :). Объявим переменную с именем I и типом Integer, дописав ее к переменной S. Код:
procedure TForm1.Button1Click(Sender: TObject);
var S:string;  I:integer;
begin
...
Далее присвоим переменной I значение 21.
I:=21;
Заметьте, что числовое значение записывается без одинарных кавычек! Теперь присвоим свойству Caption значение переменной I, для этого нужно воспользоваться оператором IntToStr(). Он как бы конвертирует числовой тип в текстовой. В скобках указывается переменная, которую нужно конвертировать.

Общий вид кода:
procedure TForm1.Button1Click(Sender: TObject);
var S:string;  I:integer;
begin
S:='Моя первая переменная';
Label1.Caption:=S;

I:=21;
Label1.Caption:=IntToStr(I);
end;
Скомпилируйте программу и вы увидите, что Label будет отображать значение переменной I, то есть 21.

Ну вот и всё! Удачи!
Встретимся в следующем уроке!




Добавил(а): SyGaK Дата: 2012-10-05
Неплохо, единственный учебник который мне понравился так это ваш сайт



Добавил(а): SyGaK Дата: 2012-10-08
Админ, вот как будет выглядеть такой код: Решил написать склейщик слов. Добавил 3 мемо и один едит. Присвоил мемо значение стринг, а едит мерменную чар. Как будет выглядеть код. Вот как я считаю, но у меня не получается. memo1.Lines (memo1 - это название переменной)+edit1.text+memo2.Lines= Memo3.Lines что в этой конструкции не так? Извини, но пишу на скорую руку, надесюь ты поймешь



Добавил(а): Admin Дата: 2012-10-10
Ты хочешь склеить слова из первого, второго мема и из эдита в третий мемо? Тогда я думаю так: Memo3.Lines.Add(Memo1.Lines.Text + Edit1.Text + Memo2.Lines.Text);



Добавил(а): SyGaK Дата: 2012-10-11
Да именно так. Но едит - это делимитер. То есть допустим в Memo1 логины, а в Memo2 пароли. И я хочу чтобы между ними стоял либо : либо ; В едит мы пишем любой разделитель который будет разделять слова мемо1 и мемо2



Добавил(а): Admin Дата: 2012-10-11
А, то есть тебе по строчно надо? тогда вот так:
Var
I: Integer;
begin
For I:=0 to Memo1.Lines.Count-1 do
Begin
Memo3.Lines.Add(Memo1.Lines.Strings[i] + Edit1.Text + Memo2.Lines.Strings[i]);
End;



Добавил(а): SyGaK Дата: 2012-10-11
Спасибо. Классно у тебя получается Дай пожалуйста ссылки на литературу которую ты читал. Буду учиться



Добавил(а): SyGaK Дата: 2012-10-14
Кстати. Как ещё сделать чтобы к каждой линии в Мемо1 склеивались все линии из Мемо2?



Добавил(а): Admin Дата: 2012-10-16
var
i:integer;
begin
for i:=0 to memo1.Lines.Count-1 do
memo1.Lines.Strings[i] := memo1.Lines.Strings[i] + memo2.Lines.Strings[i];



Добавил(а): SyGaK Дата: 2012-10-21
Не, в смысле: допустим в Мемо1 я написал "Admin", а в Мемо2 "pass password 12345 qwerty. И в Мемо3 выводится: admin (разделитель) pass admin (разделитель) password admin (разделитель) olol admin (разделитель) 12345 admin (разделитель) qwerty



Добавил(а): Admin Дата: 2012-10-21
Ну и что сложного?
var
i: integer;
a: string;
begin
a:=' Разделитель ';
for i:=0 to memo2.Lines.Count-1 do
memo3.Lines.add( memo1.Lines.Strings[0] + a + memo2.Lines.Strings[i]);



Добавил(а): SyGaK Дата: 2012-10-21
Да. Но когда она закончит подставлять всем из мемо2 к мемо1, она будет переключаться на следующую строчку мемо1 и опять прибавлять к ней мемо2



Добавил(а): Admin Дата: 2012-10-21
var
i,i2,b: integer;
a: string;
begin
a:=' Разделитель ';
for i:=0 to memo1.Lines.Count-1 do
begin
for i2:=0 to memo2.Lines.Count-1 do
memo3.Lines.add( memo1.Lines.Strings[b] + a + memo2.Lines.Strings[i2]);
if i2 = memo2.Lines.Count then b:=b+1;
end;
Вопрос задавай нормально, а то не понять тебя



Добавил(а): SyGaK Дата: 2012-10-22
Вот так она будет работать:
В Memo1.Lines есть
Admin
User
Login, ок да?
В Memo2.Lines есть
qwerty
12345
password, ок да?

Когда мы нажимаем на кнопку в Memo3.Lines появляется:
Admin (Edit1.Text) qwerty
Admin (Edit1.Text) 12345
Admin (Edit1.Text) password
User (Edit1.Text) qwerty
User (Edit1.Text) 12345
User (Edit1.Text) password
Login (Edit1.Text) qwerty
Login (Edit1.Text) 12345
Login (Edit1.Text) password



Добавил(а): Admin Дата: 2012-10-22
Ну все правильно, выше я написал как это сделать. Если что, то вот исходник тебе /files/SyGaK.rar



Добавил(а): SyGaK Дата: 2012-10-22
Благодарю! Ты лучший



Добавил(а): raponk Дата: 2013-01-18
ну немного понятно)



Добавил(а): delfiSkin Дата: 2013-05-15
пока все понятно



Добавил(а): sanko Дата: 2015-03-28
остановился на "Компилируем нашу программу и нажимаем на Button (батон/кнопку). Сразу же компонент Label вместо Label1 будет показывать Моя первая переменная". Компилирую программу и нажимаю на button, и нечего не происходит, а программа вроде правильно написана.



Добавил(а): ventura69 Дата: 2015-04-09
4 sannko Могу предположить, что событие на нажатие кнопки не прописано. Проверьте в эвентах (событиях) кнопки строку "онклик". Если она пустая, щелкните по ней. Должно появиться название процедуры на клик. Выбираете его. Компилируете. P.S. Очень печально, что хорошую идею с уроками, как обычно у нас похерили!!! Помощи на вопросы здесь ждать бесполезно!



Добавил(а): hess2222 Дата: 2015-05-03
Спасибо за уроки всё понятно и не очень просто конечно, но интересно! Спасибо!



Добавил(а): pok-anatolij Дата: 2015-10-23
Уроки очень хорошие, подробные и понятные даже мне в мои 67 лет. Большое спасибо.



Добавил(а): Лицеист Дата: 2017-05-06
Тип переменной не "Bollean", а "Boolean" (В самом начале урока список основных типов) А так уроки просто замечательные!


  1. Макс
    Макс 7 months ago
    Круто!
  2. Michael
    Michael 2 months ago
    Приветствую! Даже в 2024 это все ещё актуально)
  3. Michael
    Michael 2 months ago
    Приветствую! Даже в 2024 это все ещё актуально)
Отменить.