Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 937
от 27.09.2007, 17:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 467, Экспертов: 78
В номере:Вопросов: 2, Ответов: 6


Вопрос № 102921: Хай всем я тут первый раз и про вас наслышен, ну да ладно к делу. Где можно найти учебник к Делфи ? Дайте сылку или прогу...
Вопрос № 102958: как сделать сравнение 2 чисел, например: есть Label1.Caption:= '123.0234 и есть spinedit1.Value:=13 и получается так, что условие if Label1.Caption > inttostr(spinedit1.Value) then showmessage('123.0234>13') else<...

Вопрос № 102.921
Хай всем я тут первый раз и про вас наслышен, ну да ладно к делу.
Где можно найти учебник к Делфи ?
Дайте сылку или прогу
Отправлен: 21.09.2007, 19:32
Вопрос задал: Мокроусов Алексей Сергеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: 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

---------
Программирование - вещь полезная!
Ответ отправил: Лукьянчиков Дмитрий Сергеевич (статус: 1-ый класс)
Ответ отправлен: 24.09.2007, 19:41


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.60.05 от 27.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное