| BG Development · За реклама · За контакти |
Помощ Търсене Потребители Календар Правила |
| Здравей! ( Включване | Регистриране ) |
![]() ![]() ![]() |
| sadefa |
Публикувано на: 23-03-2017, 00:13
|
|
Име: Група: Потребител Ранг: Новопостъпил Мнения: 2 Регистриран на: 23.03.17 |
Здравейте.
Преди известно време ми попадна една програмка писна на Delphi. При стартиране става лудница от error-ове - Invalid floating point.... Странното е, че програмата се е ползвала активно педи 10-тина години, но поради една или друга причина е изоставена, а сега не тръгва. Порових се по сървърите и намерих сорс кода, писан от колегите ми (аз съм електроинженер). Всичко си изглежда ОК с дефиниранията на променливите. Някакви идеи? Пробвал съм compatability mode и всякакви други начини за пускане на вече компилираното exe, включително и на 32bit PC. Ако пусна през Delphi става още по-зле. Ако някой има ентусиазъм да помогне мога да му изпратя сорса. Поздрави! |
| enf |
Публикувано на: 23-03-2017, 08:39
|
||
|
Име: Група: Потребител Ранг: Посетител Мнения: 55 Регистриран на: 01.08.14 |
Колко по-зле може да стане ? Иначе публикувай кода да го видим. Аз евентуално бих го погледнал. Това мнение е било редактирано от enf на 23-03-2017, 08:40 |
||
| ici |
Публикувано на: 23-03-2017, 09:27
|
![]() Име: Ивайло Илчев Група: VIP Ранг: Почетен член Мнения: 19077 Регистриран на: 06.06.04 |
Програмата сигурно чете през сериен канал и се опитва да използва байтовете директно като float неподравнени и се получaва NaN. Трябва байт по байт да се копира във float и тогава да се използва. - просто предполагам.
-------------------- Facebook is a bit like checking your underwear after a fart.
Most likely there's nothing new and if there is it's probably shit. |
| akrachev |
Публикувано на: 23-03-2017, 09:33
|
|
Име: акрачев Група: Потребител Ранг: Почетен член Мнения: 1216 Регистриран на: 27.11.09 |
Пратих ти лично съобщение.
Има проблем със старите програми на Delphi, трябва да се пробва да се прекомпилиран на нова версия на Delphi или Lazarus (да пусне някой vizacc HelpMaker примерно ако не вярва). А VB6 напук върви. -------------------- |
| Golden Gega |
Публикувано на: 23-03-2017, 16:41
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 2189 Регистриран на: 04.06.10 |
Един от възможните варианти е ако се подават външни текстови файлове, които да се парсват до float. И по-точно ако файловете са били ANSI, а сега например unicode.
|
| sadefa |
Публикувано на: 23-03-2017, 20:48
|
||
|
Име: Група: Потребител Ранг: Новопостъпил Мнения: 2 Регистриран на: 23.03.17 |
Това звучи като възможна причина ... Някакви идеи как да се справя с това? На поискалите на ЛС съм пуснал линкове за сваляне. Това мнение е било редактирано от sadefa на 23-03-2017, 20:49 |
||
| akrachev |
Публикувано на: 24-03-2017, 08:57
|
|
Име: акрачев Група: Потребител Ранг: Почетен член Мнения: 1216 Регистриран на: 27.11.09 |
Проблема наистина е в четенето от файла. Входните параметри са String, а в кода се използват като Double. (Под Delphi 7 не се компилира, явно някоя предишна весрия на Delhi го е приемала така)
Има две решения: - Навсякъде където имаш от тези променливи (fb, gc май бяха най често срещаните) ги слагаш в: StrToFloat(fb) - Втория вариант е, правиш ги в декларацията на Double и добавяш едни временни string, които след изчитане от файла конвертираш веднага в StrToFloat. (А и менютата трябва да се оправят -------------------- |
![]() |
![]() ![]() ![]() |