Урок 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 - ложь
Я всё сделал и у меня получилось вот так:
Сейчас нам нужно создать событие 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.
Выбираем его из списка и нажимаем на 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"
(В самом начале урока список основных типов)
А так уроки просто замечательные!
|
-
Круто!
-
Приветствую! Даже в 2024 это все ещё актуально)
-
Приветствую! Даже в 2024 это все ещё актуально)
-
интересно, спасибо , познавательно было