Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 2
Всего онлайн: 2
Зарегистрировано юзеров: 6358
Комментариев на сайте: 645
Новый юзер: Realtyvaday



Последние комментарии
c
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
GZip псевдоархив, на мой вопрос тоже не отвечают, как распаковать отдельные файлы/папки...
Pingitrus прокомментировал "Урок 71 - Работа с сжатыми файлами":
Есть еще кто нибудь живой на этом сайте, кто сможет помочь? Так то все работает, zip и rar распаковывает, но у меня есть файл dat который сжат GZip, почему то его не удается распаковать или так не получится так как этот файл не является архивом или является?)) пишет ошибку что неверная функция



Мы в соцсетях
c
Delphi
Урок 6 - Одномерные массивы

  Представьте себе поезд, у которого есть определенное количество вагончиков. У каждого вагона есть номер и внутри каждого, пронумерованного вагона можно хранить информацию. Дак вот массив примерно так и выглядит, только он не поезд :) Массив записывается туда же, куда мы записываем обычные переменные.

Синтаксис:

var имя массива: array[интервал] of тип;
Теперь открываем Delphi и кидаем на форму компонент Button, Label и Memo. Компонент Memo находится на 6 месте на вкладке Standard.

Form


Компонент Memo имеет свойство под названием Lines. Оно схоже со свойством Caption у компонента Label. Найдите это свойство в инспекторе объектов и нажмите на кнопочку с тремя точками:

Lines


После нажатия на кнопку с тремя точками появится редактор:

Окно редактора


Сотрите всё, что написано в редакторе и создайте событие OnClick на кнопке. Объявим массив с именем mas, интервалом от 1 до 3 и типом string. Да, и еще нам нужно объявить переменную i типа integer, она нам пригодиться позже.
procedure TForm1.Button1Click(Sender: TObject);
var mas: array[1..3] of string;
i:integer;
begin
...
Сейчас запишем в наши воображаемые вагоны массива значения:
mas[1]:='Первая строка';
mas[2]:='Вторая строка';
mas[3]:='Третья строка';
А сейчас выводим второй элемент массива в Label и все 3 элемента в Memo.

В лабел:
Label1.Caption:=mas[2]; //Лабел отобразит содержимое второго элемента массива
Теперь, для того чтобы вывести все 3 значения в Memo, нужно воспользоваться циклом For:
for i:=1 to 3 do
Memo1.Lines.Add(mas[i]);
Так как в теле цикла выполняется всего одна строка, то можно опустить ключевые слова begin и end.
Строка Memo1.Lines.Add(mas[i]); при первом круге цикла добавит в memo первый элемент массива, так как переменная i равна 1. При втором круге переменная i равна 2 и строка Memo1.Lines.Add(mas[i]); добавит второй элемент массива. Точно так же и с третьим.

Общий вид программы:
procedure TForm1.Button1Click(Sender: TObject);
var mas: array[1..3] of string;
i:integer;
begin
mas[1]:='Первая строка';
mas[2]:='Вторая строка';
mas[3]:='Третья строка';

Label1.Caption:=mas[2]; //Лабел отобразит содержимое второго элемента массива

for i:=1 to 3 do
Memo1.Lines.Add(mas[i]);
end;
Без цикла For вывод элементов массива осуществлялся бы таким образом:
Memo1.Lines.Add(mas[1]);
Memo1.Lines.Add(mas[2]);
Memo1.Lines.Add(mas[3]);
Нам придется долго копировать и изменять номер элемента, если их будет сто, а бывает и больше тысячи! Цикл же помогает справиться с этим, всего ценой двух строчек.

На этом я завершаю наш урок, но перед этим сохраните пожалуйста программу, потому что она нам понадобится в следующем уроке.

Задание на закрепление: заполните массив из 100 чисел при помощи цикла for, выведите в memo числа 20, 50, 70 из массива при помощи цикла for и условия в нём.

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


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 13 Июля 2012
Просмотров: 56477

Урок 5 - Функции Урок 7 - Многомерные массивы

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-18
почему я уже 2 раза пытаюсь отправить большой комментарий и у меня не получается?




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-18
Что значит строка Memo1.Lines.Add(mas[i])?верней что значит lines и add? Допустим когда я пишу if then else я понимаю что пишу если то иначе а вот что значит та строка? я написал программу на закрепление но у меня выскачила ошибка,думаю из-за не знания перевода. вот код программы: procedure TForm1.Button1Click(Sender: TObject); var mas: array [1..100] of integer; i: integer; begin mas[1]:=20; mas[2]:=50; mas[3]:=70; for i:=1 to 3 do Memo1.Lines.Add(mas[i]); end; end.




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-18
выскакивает вот такая ошибка :*********************** пишу звездочками потому что она не отправляется!! Я думаю что она намекает на то,что в Memo1.Lines.Add(mas[i]); в этой строке нужен тип стринг но мне же ведь надо вывести числа,мне кажется что дело в том что lines.add выводит только текст в мемо,а что надо писать для числа?Хотя возможно мне только кажется,вообще прошу помочь,указать на ошибку.




аватар Добавил: Klesh [Программист] Дата: 2013-05-18
Да параметром Memo1.Lines.Add() является строка, а тот массив который ты объявил (mas) имеет тип integer. Есть такая функция, IntToStr(a: integer), она переводит число в строку, также есть и обратная StrToInt(a: String), она в свою очередь переводит строку с число. Дак вот тебе нужно сделать так: Memo1.Lines.Add(IntToStr(mas[i]));




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-19
Когда я писал 1 комментарий,я писал что возможно надо использовать функцию inttostr ,но я не стал этого делать так.как подумал что мне в мемо оно будет выводить двадцать пятьдесят и тд. а не 20 50.. Напутал я) .Спасибо за помощь) и отдельное спасибо за strtoint )об этом в уроках не упоминалось как я помню.




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-19
Когда я писал 1 комментарий,я писал что возможно надо использовать функцию inttostr ,но я не стал этого делать так.как подумал что мне в мемо оно будет выводить двадцать пятьдесят и тд. а не 20 50.. Напутал я) .Спасибо за помощь) и отдельное спасибо за strtoint )об этом в уроках не упоминалось как я помню.




аватар Добавил(а): Asyanya [Новичок] Дата: 2013-06-06
Так и не поняла, как выполнить задание с помощью цикла for...




аватар Добавил(а): Tuxuman [Новичок] Дата: 2013-09-29
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) btn1: TButton; mmo1: TMemo; lbl1: TLabel; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); var mas: array[1..100] of string; i:Integer; begin mas[1]:=IntToStr(20); mas[2]:=IntToStr(50); mas[3]:=IntToStr(70); for i:=1 to 1 do mmo1.Lines.add(mas[1]); mmo1.Lines.add(mas[2]); mmo1.Lines.add(mas[3]); end; end. мб так?




аватар Добавил(а): adex348 [Новичок] Дата: 2013-10-22
Ты походу не правильно понял функцию цикла for, он запускает код внутри цикла с начальным значением которое ты задал и прибавляя по 1 каждый раз запускает его заново, до тех пор пока не достигнется конечное значение(которое тоже нужно задать). Цикл по заданию должен выглядеть примерно так: for i:=1 to 100 do begin mas[i]:=i;if (mas[i]=20) or (mas[i]=50) or (mas[i]=70) then Memo1.Lines.add(InttoStr(mas[i]); else continue; end;




аватар Добавил(а): Shik007 [Новичок] Дата: 2013-10-29
Cделал вторую кнопку к этой программе с кодом для очистки содержимого компонента Memo после завершения работы цикла. Выглядит это так: procedure TForm1.Button2Click(Sender: TObject); begin memo1.Lines.Clear; end;




аватар Добавил: sema- 2014 [Новичок] Дата: 2013-12-05
А я, что то вообще ничего не понял... зачем нужно было открыть редактор? ,чтоб стереть надпись Memo1? Всё перемешалось в голове и вошёл в ступор, еле, еле с циклами разобрался, а тут массив... в общем наступление остановлено, отброшен снова к началу, в голове каша, запутался окончательно.... может как то по подробней, без спешки?




аватар Добавил: hess2222 [Новичок] Дата: 2015-05-14
Я не понял этого задания, хоть убейте(((




аватар Добавил: hess2222 [Новичок] Дата: 2015-05-14
Разберите пожалуйста!!!!




аватар Добавил(а): Aleksandr-Slah [Новичок] Дата: 2015-07-06
http://s019.radikal.ru/i634/1507/fd/3b5376d7dcac.png Вот сделал!




аватар Добавил: Nester_Novopolotsk [Новичок] Дата: 2016-03-11
задачка на закрепление хорошая. не очень и сложная. немножко мозгами нужно пошевелить




аватар Добавил(а): Lawren [Новичок] Дата: 2016-04-04
Очень хорошие уроки, большое спасибо автору. Давно искал что то подобное. Задания сначала стараюсь сделать сам, потом смотрю как делали другие. В этом создал два цикла for..do, в первом заполняю массив из 100 элементов через IntToStr, во втором произвожу выборку элементов по условию. for i := 1 to 100 do mas[i] := IntToStr(i); for i := 1 to 100 do if (i = 20) or (i = 50) or (i = 75) then Memo1.Lines.Add(mas[i]);