Другие языки программирования и технологии

Delphi помощь с массивами

Здравствуйте! Никак не могу понять как юзать массивы и вообще для чего они?
Решил написать прогу чтобы разобраться, при нажатии на кнопку ее название изменяется на переменную из массива. Но прога не комплилится. Помогите?
implementation
type
TStates = array[1..50] of string;
TCoordinates = array[1..3] of Integer;
var
States: TStates; { 50 strings }
const
Coordinates: TCoordinates = (10, 20, 5); { 3 integers }

{$R *.dfm}

procedure TForm1.Memo1Click(Sender: TObject);
begin
Memo1.Text:= TCoordinates [10]
end;

end.
procedure TForm1.Memo1Click(Sender: TObject);
begin
Memo1.Text:= IntToStr(Coordinates[1])
end;

Кроме того, что пытаетесь текстовому полю Memo присвоить численное значение, вы используете имя типа вместо имени массива (TCoordinates вместо Coordinates).
К тому же массив у вас состоит из трёх элементов: 10, 20 и 5 с индексами 1, 2 и 3 соответственно, а вы запрашиваете несуществующий элемент с индексом 10. Если вы хотите получить элемент массива со значением 10, то нужно указывать его индекс (1), а не значение.

SkYneT, в Паскале точка с запятой перед end необязательна, так как операторные скобки сами по себе являются разделителями, а точка с запятой в Паскале - это всего-навсего разделитель операторов, а не символ их окончания, как например в Си.
АС
Александр Сафонов
51 590
Лучший ответ
массив - хорошая вещь, если не злоупотреблять.
допустим ListBox ComboBox Memo - вот компоненты использующие массив (одномерный массив строк)
картинка (Image) - тоже массив (например картинка 10х10 пикс - это массив.
Вот хранение массива большого объема - это уже другое.
пример использования - сделайте картинку монохромной!
Вадим Клемин
Вадим Клемин
69 178
Не компилится потому, что ты в текстовую переменную пытаешься занести числовое значение.
Нужно преобразовать из числа в строку:

Memo1.Text := IntToStr(TCoordinates [10]); // <- и точку с запятой не забывай.
Иван Поныровский Спасибо, но компилятор пишет что ожидалось закрытие скобки, а не открытие квадратной
Александр Сафонов Перед end точку с запятой ставить не обязательно, хотя в официальных правилах Borland рекомендуется всё же ставить, а в стандартном паскале напротив точка с запятой перед end запрещена.
во первых массивы объявляются в var. для чего они нужны? вот представь тебе нужно написать прогу в которой например нужно принять 50 чисел с клавы (просто так пример) . Вот тут используются массивы.

var
Form1: TForm1; a:array [1..100,1..20] of integer; i:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
for I := 0 to 500 do a:=strtoint(edit1.text); вот в этой строке масиву a с порядковым номером i присваивается какая либо переменная

end;

end.