Вниз
Скачать: CL | DM;

Складование побайтно 2х чисел.   Найти похожие ветки 

← →
The Sound ©   (2006-02-17 18:11) [0]

Привет. Реализовал тут:
[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-му.
Результат заносить в отдельную переменную, и так, пока не закончиться строчка.
Я написал, на теории(на моей) всё должно нормально работать, в практике же, дельфя ругаеться =/ Подскажите в чём дело =/ И главное как исправить =)


← →
Fay ©   (2006-02-17 18:14) [1]

>  дельфя ругаеться
Матом?


← →
umbra ©   (2006-02-17 18:30) [2]


> endname2[j]

это не строка, это символ. Скорее всего, поэтому и ругается.


← →
McSimm ©   (2006-02-17 18:31) [3]

Delphi не ругается, а сообщает программисту о том, что он ошибся и, чаще всего,  где его ошибка.

until j=Length(endname2);
последний символ endname2 не нужен?

Ошибка: при условии, что Length(endname2) > Length(endname3) вы можете выйти за пределы endname3.

j:=1;
repeat
j:=j+1; // начинаем со второго символа ?


← →
Саунд   (2006-02-17 18:38) [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:43) [5]


> вы можете выйти за пределы endname3.

Это не "мелкая" ошибка, а ошибка, которая приведет к поднятию исключения.
Вы бы текст ошибки хотя бы привели, если сами прочитать не хотите :)


>  e3i:=endname3[j];

Рискну предположить, что здесь все-таки происходит таинственная ошибка.
При попытке прочитать символ строки, находящийся за ее пределами


← →
umbra ©   (2006-02-17 18:48) [6]


> Непонимаю =/

и не надо. это я сглупил


← →
Саунд   (2006-02-17 19:09) [7]

McSimm ©   (17.02.06 18:43) [5]
Эх, не мой сегодня день.
Есчё раз спасибо за помощ. Всё поправил.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
11-1120770549
Dodfr
2005-07-08 01:09
2006.03.05
Bug in Num2Bytes


2-1140079974
Daria
2006-02-16 11:52
2006.03.05
посчитать максимольное количество строк для разбивки ячейки


1-1138275877
Silver...
2006-01-26 14:44
2006.03.05
TFrame и событие "OnPaint"


3-1136760672
parovoZZ
2006-01-09 01:51
2006.03.05
Зачем связывают таблицы?


15-1139312761
_RusLAN
2006-02-07 14:46
2006.03.05
Программа для создания резервных копий проэктов




   Наверх