Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
ВнизПодскажите код дает ощибку Найти похожие ветки
← →
R (2003-06-11 04:28) [0]Мастера что то я запутался вроде бы делал это сто раз но код дает ошибку, я заполняю массив целыми числами из мемо изначально числа вещественные я отбрасываю дробную часть
procedure TForm1.Fg;
var
I,J,FACount:Integer;
FA: array of Integer;
begin
FACount:=Memo1.Lines.Count-1;
SetLength(FA,FACount);
For I:=0 To FACount Do
begin
try
J:= Trunc(StrToFloat(Trim(Memo1.Lines[I])));
except
J:=1;
Beep;
end;
FA[I]:=J;
end;
end;
Подскажите в чем проблемма?
← →
Babay (2003-06-11 04:38) [1]Разложи свою строку на отдельные участки и найдешь свою проблему.
J:= Trunc(StrToFloat(Trim(Memo1.Lines[I])));
заменить например на
S:=Trim(Memo1.Lines[I]);
f:=StrToFloat(s);// ошибка наверное будет здесь
j:=Trunc(f);
и еще может проблема в разделителе дробной части? У тебя в винде например запятая а ты вводишь точку вот и ошибка.
да еще сразу как то просмотрел
For I:=0 To FACount Do ????
For I:=0 To FACount-1 Do !!!!!
← →
Думкин (2003-06-11 05:00) [2]Про FAcount все верно, но длина твоего массива неверна.
надо так:
SetLength(FA,FACount+1);
← →
Babay (2003-06-11 05:26) [3]To Думкин
А зачем лишний элемент в массиве?
← →
Spawn (2003-06-11 05:38) [4]Это не лищний элемент в массиве. При задании размерности массива, необходимо указывать КОЛИЧЕСТВО его элементов, т.е. отсчет начинается с 1. При обращении к элементу массива на последней итеррации будет ошибка, если не задать FACount+1, поскольку произойдет обращение к несуществующему элементу. Да и вообще FACount должен быть равен Memo1.Lines.Count в данном случае, чтобы использовать все строки Memo.
← →
Babay (2003-06-11 05:47) [5]To Spawn
Я это все прекрасно понимаю но человек задает (в силу какихто причин)размерность массива так
SetLength(FA,FACount);
следовательно ->
например длина массива FACount=6 нумерация его будет
0,1,2,3,4,5
перебор в цикле выглядеть должен так:
For I:=0 To FACount-1 Do
Вы же предлогаете сделать человеку массив на один элемент длинее... Зачем??
а насчет
-> Да и вообще FACount должен быть равен Memo1.Lines.Count в данном случае, чтобы использовать все строки Memo.
А если у человека предпологается наличие пустой строки в конце?
Тут нужно смотреть уже реализацию программы :=)
← →
Думкин (2003-06-11 06:19) [6]>
> Babay © (11.06.03 05:47)
Предполагать может бабушка.
По приведенному коду надо делать так как и описано у > Spawn © (11.06.03 05:38)
← →
Думкин (2003-06-11 06:22) [7]
> Babay © (11.06.03 05:47)
> For I:=0 To FACount-1 Do
Это откуда? Ведь чел приводит так:
> For I:=0 To FACount Do
Не надо домысливать.
← →
R (2003-06-11 06:32) [8]Всем спасибо, ошибку нашел с вашей помощью массив имел длину на единицу значений меньше, т.е. действительно надо было сделать так
SetLength(FA,FACount+1);
← →
Babay (2003-06-11 09:21) [9]Нда ...
Интересный подход.
Заводим переменную которая должна содержать кол-во элементов массива.
Делаем ее на 1 меньше чем надо бы...
Затем создаем массив всетаки на 1 ед больше...
Т.о. в массиве например 6 елементов но наша перемнная показывает 5
.... интересный подход.....
(ну я так понимаю это все таки чтобы враги недогадались)
нда ...
удачи, главное что заработало....
← →
VMcL (2003-06-11 11:42) [10]>R (11.06.03 04:28)
procedure TForm1.Fg;
var
I, J, FACount: integer;
FA: array of integer;
begin
FACount := Memo1.Lines. Count; // - 1;
SetLength(FA, FACount);
for I := 0 to FACount - 1 do
begin
try
J := Trunc(StrToFloat(Trim(Memo1.Lines[I])));
except
J := 1;
Beep;
end;
FA[I] := J;
end;
end;
>Подскажите в чем проблемма?
В ДНК.
← →
Palladin (2003-06-11 12:05) [11]Точно млин, там ошибка...
← →
VG (2003-06-11 12:16) [12]Так как каждой ячейки массива соответствует строка в Мемо то можно массив, используемый "R" записать так:
For I:=0 To High(FA) Do
begin
try
J:= Trunc(StrToFloat(Trim(Memo1.Lines[I])));
except
J:=1;
Beep;
end;
FA[I]:=J;
end;
end;
тут не будет выскакивать сообщение об ошибке, но не будут просчитываться все данные, которые были занесены в Мемо (Если использовать первоначальный вариант).
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c