Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.113.197] |
|
Сообщ.
#1
,
|
|
|
Пытаюсь сделать добавление в массив с помощью Edit1, полученный результат выводится в Memo. В итоге последний элемент массива не тот который я добавила последним, а другой который создается автоматически. Поэтому у меня вконце выводится совершенно разные цифры то 18, то 26, то 542, то восьмизначное значение как исправить, чтобы выводилось только мой список добавленный через Edit1? Вот код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Button2: TButton; Memo1: TMemo; Button3: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; len: Integer; mas: array of integer;//динамический массив res: Integer = 0; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var im1,i:Integer; begin res:= Length(mas); SetLength(mas, res+1); im1:=StrToInt(Edit1.Text); mas[res] := im1; Memo1.Clear; for i := 1 to Length(mas) do begin Memo1.Lines.Add('Элемент массива [' + IntToStr(i) + ']: ' + IntToStr(mas[i])); end; end; end. |
Сообщ.
#2
,
|
|
|
Массив начинается с 0 элемента
for i := 0 to Length(mas)-1 do |
Сообщ.
#3
,
|
|
|
Спасибо, помогло. Я не много изменила код и создала двухмерны массив где второй значение массива, это цифры минимум и максимум. Теперь через поля можно указывать минимальные и максимальные числа. Однако в поля можно вписать все что угодно например слова из-за чего будет появлятся ошибка, можно установить ограничения на ввод в поля только цифр?
Код: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Button2: TButton; Memo1: TMemo; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; len: Integer; mas: array of array of integer;//динамический массив res: Integer = 0; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var im1,im2,i:Integer; begin res:= Length(mas); SetLength(mas, res+1,2); im1:=StrToInt(Edit1.Text); im2:=StrToInt(Edit2.Text); mas[res,0] := im1; mas[res,1] := im2; end; procedure TForm1.Button2Click(Sender: TObject); var i:Integer; begin Memo1.Clear; for i := 0 to Length(mas)-1 do begin Memo1.Lines.Add('Элемент массива [' + IntToStr(i) + ']: Мин:' + IntToStr(mas[i,0])+' Макс:'+ IntToStr(mas[i,1])); end; end; end. |
Сообщ.
#4
,
|
|
|
Я бы проверял через
If trystrtoint(edit1.text) then ... |
Сообщ.
#5
,
|
|
|
Только цифры =)
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (Key in ['0'..'9',#8]) = False then Key:=Chr(0); end; procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin if (Key in ['0'..'9',#8]) = False then Key:=Chr(0); end; |
Сообщ.
#6
,
|
|
|
Можно другой компонент взять для ввода , TMaskEdit.
Маску поставить типа MaskEdit1.EditMask := '00000;1;_'; Или TSpinEdit, там в принципе только числовые значения вводятся. |