Вопрос № 102921: Хай всем я тут первый раз и про вас наслышен, ну да ладно к делу.
Где можно найти учебник к Делфи ?
Дайте сылку или прогу...Вопрос № 102958: как сделать сравнение 2 чисел, например:
есть Label1.Caption:= '123.0234
и есть spinedit1.Value:=13
и получается так, что условие
if Label1.Caption > inttostr(spinedit1.Value) then
showmessage('123.0234>13')
else<...
Вопрос № 102.921
Хай всем я тут первый раз и про вас наслышен, ну да ладно к делу.
Где можно найти учебник к Делфи ?
Дайте сылку или прогу
Отвечает: Gh0stik
Здравствуйте, Мокроусов Алексей Сергеевич!
Поскольку Вы начинающий, рекомендую Вам воспользоваться такими книгами:
Виктор Пестриков, Артур Маслобоев. Delphi на примерах
Валерий Фаронов. Delphi 2005. Разработка приложений для баз данных и интернета
В. В. Фаронов. Delphi 6. Учебный курс
С.П.Кандзюба. Delphi 6/7. Базы данных и приложэения. Лекции и упражнения
А. Архангельский. Приемы программирования в Delphi на основе VCL
И. Ю. Баженова. Delphi 7. Самоучитель программиста
Шпак Ю. А. Delphi 7 на примерах
Стивенс. Delphi. Готовые алгоритмы
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 21.09.2007, 19:59
Вопрос № 102.958
как сделать сравнение 2 чисел, например:
есть Label1.Caption:= '123.0234
и есть spinedit1.Value:=13
и получается так, что условие
if Label1.Caption > inttostr(spinedit1.Value) then
showmessage('123.0234>13')
else
showmessage('123.0234<13') //<- почему выдает эту строку?
end;
И получается что всегда будет showmessage('123.0234<13'), как будто считает по первым числам... Что я неправильно сделал?
Отправлен: 22.09.2007, 01:25
Вопрос задал: Gers (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: Алексей Акишин
Здравствуйте, Gers!
В вашем случает идет сравнение двух строк. Для сравнения чисел измените код как в приложении.
Приложение:
--------- Что бы ни делать - лишь бы ничего не делать!
Ответ отправил: Алексей Акишин (статус: 3-ий класс)
Ответ отправлен: 22.09.2007, 01:41
Отвечает: Gh0stik
Здравствуйте, Gers!
Все очень просто - Вы же сравниваете строковые велечины (типа string) , в следствии этого и получаете такой результат - верный результат исходя из Ваших данных.
Сравнение двух строк выполняется посимвольно слева направо в соответствии с их лексикографической упорядоченностью в таблице кодов ASCII. Эта упорядоченность предполагает, что "1"<"2", "a"<"b", "B"<"C" и т.д. Как только в процессе попарных сравнений символов с одинаковой порядковой позицией обнаруживается больший по коду ASCII символ, данный процесс прекращается, и считается, что строка с этим символом соответственно больше другой строки. Если строки
имеют разную длину и их символы совпадают до последнего знака, то считается, что более короткая строка меньше.
В Вашем случае было бы правильнее изначально текст перевести в число и числовые значения сравнивать, например так:
...
if StrToFloat(Label1.Caption) > spinedit1.Value
then showmessage('123.0234>13')
else showmessage('123.0234<13');
...
Единственное не забывайте проверять верно ли делается преобразование из строки в число, для этого можно использовать защищенный блок try ... except ... end;
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 22.09.2007, 01:51 Оценка за ответ: 5
Отвечает: Djec
Здравствуйте, Gers!
Вы сравниваете не числа, а набор симвлолов - строки.
If StrToInt( Label1.Caption ) > spinedit1.Value then
showmessage('123.0234>13')
else
showmessage('123.0234<13')
Должно работать.
--------- Никогда не сдавайся, даже если боишься проиграть
Ответ отправил: Djec (статус: 2-ой класс)
Ответ отправлен: 22.09.2007, 16:58
Отвечает: Permyak
Здравствуйте, Gers!
Вы в данном случае сравниваете строки, которые сравниваются посимвольно начиная с первого ( '2'<'3' => '123.0234'<'13'). В вашем случае нужно наоборот перевести строку в число. А так как число у вас вещественное, то нужно использовать функцию StrToFloat.
Приложение:
Ответ отправил: Permyak (статус: 1-ый класс)
Ответ отправлен: 24.09.2007, 12:57
Отвечает: Лукьянчиков Дмитрий Сергеевич
Здравствуйте, Gers!
Думаю надо
if float(Label1.Caption) > inttostr(spinedit1.Value) then