![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Складование побайтно 2х чисел. [D7, XP]
The Sound © (2006-02-17 18:11:00)Привет. Реализовал тут:
[code]
endname2,endname3:string;
e2i,e3i:char;
j:byte;
et:integer;
ets:string;
<...>
endname2 := '12345678909876';
endname3 := '123456789098';
ets:='';
If Length(endname2) > Length(endname3) then
begin
j:=1;
repeat
j:=j+1;
e2i:=endname2[j];
e3i:=endname3[j];
et :=strtoint(e2i)+strtoint(e3i);
ets := ets + IntToStr(et);
until j=Length(endname2);
end;
[/code]
В краце: имеем 2 числа, например "1234" и "123".
Нужно считывать по байтно строчку, и складывать значение из 1-го числа, ко 2-му.
Результат заносить в отдельную переменную, и так, пока не закончиться строчка.
Я написал, на теории(на моей) всё должно нормально работать, в практике же, дельфя ругаеться =/ Подскажите в чём дело =/ И главное как исправить =)
Саунд (2006-02-17 19:09:00) [1]McSimm © (17.02.06 18:43) [5]
Эх, не мой сегодня день.
Есчё раз спасибо за помощ. Всё поправил.
umbra (2006-02-17 18:48:00) [2]
> Непонимаю =/
и не надо. это я сглупил
McSimm (2006-02-17 18:43:00) [3]
> вы можете выйти за пределы endname3.
Это не "мелкая" ошибка, а ошибка, которая приведет к поднятию исключения.
Вы бы текст ошибки хотя бы привели, если сами прочитать не хотите :)
> e3i:=endname3[j];
Рискну предположить, что здесь все-таки происходит таинственная ошибка.
При попытке прочитать символ строки, находящийся за ее пределами
Саунд (2006-02-17 18:38:00) [4]McSimm © (17.02.06 18:31) [3]
Delphi не ругается, а сообщает программисту о том, что он ошибся и, чаще всего, где его ошибка.
Извеняюсь, делфи выдаёт ошибку. но к сожалению, где она - не говориться.
последний символ endname2 не нужен?
вы можете выйти за пределы endname3.
начинаем со второго символа ?
Это мелкие ошибки, я на них пока внимание не обратил, т.к. не работает сам процесс =(
umbra © (17.02.06 18:30) [2]
Непонимаю =/
endname2 - строчка, [j]- символ из той строчки =/
Ошибка кстатьи вот тут:et :=strtoint(e2i)+strtoint(e3i);
McSimm (2006-02-17 18:31:00) [5]Delphi не ругается, а сообщает программисту о том, что он ошибся и, чаще всего, где его ошибка.
until j=Length(endname2);
последний символ endname2 не нужен?
Ошибка: при условии, что Length(endname2) > Length(endname3) вы можете выйти за пределы endname3.
j:=1;
repeat
j:=j+1; // начинаем со второго символа ?
umbra (2006-02-17 18:30:00) [6]
> endname2[j]
это не строка, это символ. Скорее всего, поэтому и ругается.
Fay (2006-02-17 18:14:00) [7]> дельфя ругаеться
Матом?