Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.05;
Скачать: 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 вся ветка

Текущий архив: 2006.03.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.055 c
3-1136904430
Vetas
2006-01-10 17:47
2006.03.05
Подскажите с хранимой процедурой


15-1139767047
palva
2006-02-12 20:57
2006.03.05
За что вы Ваньку-то Морозова...


2-1139812409
Irinka
2006-02-13 09:33
2006.03.05
Простой FTP - клиент


15-1139460201
DimonS
2006-02-09 07:43
2006.03.05
Кто юзал такой принтер?


2-1139892953
Bolbes
2006-02-14 07:55
2006.03.05
MS SQL