Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2009, 23:21   #1
MaksimSeriy
 
Регистрация: 31.03.2009
Сообщений: 8
Вопрос Массивы, ввод.вывод через TEdit/TMemo

Задание: Каждый из элементов ti массива Т(т) заменить минимальным среди первых i элементов этого массива.
при этом необходимо кол-во элементов в массиве ввести в TEdit а исходный и результативный массив вывести в TMemo, вот тут и косяк, например вот эта конструкция выдает ошибку:
Код:
var
S:array [0..9] of integer;
i,n:integer;
begin
n:= strtoint (ed_input.Text);//ввод эл-тов массива
for i:=0 to n-1 do
S[i]:= strtoint(Memo_in.Lines[i]);
Memo_out.Lines.Clear;
for i:=0 to n-1 do
Memo_out.Lines.Add(inttostr(s[i]));
end;
Суть моего вопроса как мне в этом случае совместить компонент TEdit и TMemo?

Последний раз редактировалось rpy3uH; 01.04.2009 в 19:57.
MaksimSeriy вне форума Ответить с цитированием
Старый 31.03.2009, 23:41   #2
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

если количество элементов массива нада вводить вручнуюу то нельзя использовать статические массивы:
S:array [0..9] of integer;
нужна использовать динамические
S:array of integer;
дальше после
n:= strtoint (ed_input.Text);//ввод эл-тов массива
нужно установить длинну массива:
SetLength(S, n);
и дальше уже так как у вас написано.
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 01.04.2009, 00:01   #3
MaksimSeriy
 
Регистрация: 31.03.2009
Сообщений: 8
По умолчанию

ясно, спасибо, буду пробовать, только тогда как я думаю нужно два динамических массива - один - исходный - а второй результативный и в процессе цикла их надо будет сравнивать м/д собой?
MaksimSeriy вне форума Ответить с цитированием
Старый 01.04.2009, 00:30   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Лучше используй TStringGrid. Будет лучше видно, что куда выводится, и что надо сравнивать.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 01.04.2009, 19:27   #5
MaksimSeriy
 
Регистрация: 31.03.2009
Сообщений: 8
По умолчанию

сделал все

procedure TMassive.BtndoitClick(Sender: TObject);

var

S : array of integer;
T : array of integer;
i,n:integer;

Begin
n:=strtoint(EdInput.Text);//ввод числа элементов массива
SetLength(S,i);
SetLength(T,i);
for i:= 0 to n-1 do
S[i]:=strtoint(Memo1.Lines[0]);
T[0]:= S[0];
for i:= 1 to n-1 do
if T[i-1] > S[i] then
T[i] := S[i]
else
T[i] := T[i-1];
for i:= 0 to n-1 do
Memo2.Lines.Clear;//очистка Memo2
Memo2.Lines.Add(inttostr (T[i]));
end;

в итоге вылетает ошибка "is not a valid integer Value"

Последний раз редактировалось MaksimSeriy; 01.04.2009 в 23:27.
MaksimSeriy вне форума Ответить с цитированием
Старый 02.04.2009, 01:04   #6
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от MaksimSeriy Посмотреть сообщение
сделал все
n:=strtoint(EdInput.Text);//ввод числа элементов массива
SetLength(S,i);
SetLength(T,i);
Считывается переменная N, а используется переменная I !!!
Нужно записать:
SetLength(S,n);
SetLength(T,n);


В строке
S[i]:=strtoint(Memo1.Lines[0]); логическая ошибка.
Должно быть
S[i]:=strtoint(Memo1.Lines[i]);


В коде
Код:
for i:= 0 to n-1 do
Memo2.Lines.Clear;//очистка Memo2
Memo2.Lines.Add(inttostr (T[i]));
Постоянно (в цикле) происходит очистка Мемо2, а потом в него заносится одно (непонятное) значение. Должно быть:
Код:
Memo2.Lines.Clear;//очистка Memo2 ==> выполняется перед циклом
for i:= 0 to n-1 do
  Memo2.Lines.Add(inttostr (T[i]));
Если делать отступы для строк внутри циклов, то такие ошибки сразу становятся заметными.

Последний раз редактировалось Jeni; 02.04.2009 в 01:13.
Jeni вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод и вывод Mihael-Vlz Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 18:00
задать число через TEdit )Игнат( Общие вопросы Delphi 13 22.01.2008 19:05
Форматированный вывод информации в поле ввода (TEdit или подобные) vet_coder Компоненты Delphi 3 13.12.2007 10:55