Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Вниз

Складование побайтно 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
5-1126297047
TStas
2005-09-10 00:17
2006.03.05
Работает в disigntime но не работает в runtime


2-1140012790
Id
2006-02-15 17:13
2006.03.05
comboBox1.Style:=csDropDownList


2-1139937747
Эля
2006-02-14 20:22
2006.03.05
Сообщение об ошибке ShellAPI


2-1140067495
Canopus
2006-02-16 08:24
2006.03.05
Как активировать компоненту


2-1140413817
nap<>
2006-02-20 08:36
2006.03.05
TEhLib





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский