towndwarf: (Default)
[personal profile] towndwarf
У меня проект "достался по наследству". В нём дофигищща исходников.
Я 2 дня искал один баг пока не наткнулся на эту потрясающую функцию (что используется примерно раз в секунду или чаще)


double DB_ADOGeneral::FloatToDouble(float floatNum, int precision)
// DESCRIPTION: Converts namber of tupe float to double tupe,
// The precision value specifies the number of digits
// after the decimal point.
/////////////////////////////////////////////////////////////////
{
    TCHAR* tc[40];
    CString cs;
    LPTSTR endptr;
    double db = 0;
    cs.Format(_T("%.*f"),precision,floatNum);
    tc = new TCHAR[cs.GetLength()-1];
    memset(tc,'\0',sizeof(tc));
    lstrcpy(tc,cs);
    db = _tcstod(tc,&endptr);
    return db;
}

Date: 2003-09-30 04:56 am (UTC)
From: [identity profile] opora.livejournal.com
а зачем?
From: [identity profile] towndwarf.livejournal.com
"Just don't ask me, how I am"
(c) Suzane Vega
:-)

Date: 2003-09-30 05:12 am (UTC)
From: [identity profile] gerralt.livejournal.com
lol!!! %) Вот это программер...

:-)

Date: 2003-09-30 05:30 am (UTC)
From: [identity profile] towndwarf.livejournal.com
Мне было бы ещё смешнее, если бы так не было бы написано процентов 90 програмки на ~800 CPP файлов и несколько странных DLLек.

Re: :-)

Date: 2003-09-30 06:01 am (UTC)
From: [identity profile] gerralt.livejournal.com
Хорошенькое наследство...

Re: :-)

Date: 2003-09-30 06:18 am (UTC)
From: [identity profile] towndwarf.livejournal.com
Зато -работа и денежки :-)
Лучше, чем сидеть - лапу сосать и думать о былых великих днях, когда я был крут и все были передо мной сынками :-)

Re: :-)

Date: 2006-12-17 10:54 pm (UTC)
From: [identity profile] ex-hungry-sp828.livejournal.com
Я думаю, не нужно плодить лишних сущностей. Просто кто-то особо одаренный снова пришел к гениальной идее платить программистам пропорционально кол-ву строчек кода. :) Странно не наличие 800 файлов, а скорее удивительно, как это они до 1000 не дотянули...

Date: 2003-09-30 07:16 am (UTC)
From: [identity profile] danisimus.livejournal.com
cherez stringi, genial'no!!!... teper budu znat' zachem nuzhna matematika v zhizni :)

Date: 2003-09-30 07:22 am (UTC)
From: [identity profile] towndwarf.livejournal.com
Знаешь, если бы там хотя бы работало всё, так - ладно, но такие жутчайшие ошибки на 6 строк кода! это уже песня!

А я просто поставил inline, return double(floatNum) ибо точность там вообще не используется ;-)))

Date: 2003-09-30 11:49 am (UTC)
From: [identity profile] danisimus.livejournal.com
вот так же некоторые пихают о.о.п для "Hello world", а потом до потери пульса доказывают что это супер правильно так как они смотрят в будуюшее пророчащее глобальное усложнение кода... :))

Date: 2003-09-30 11:46 am (UTC)
From: [identity profile] zigmar.livejournal.com
Очень напоминает перлы из Computer Stupidities: Programming (http://rinkworks.com/stupid/cs_programming.shtml) :)

Date: 2003-10-30 04:30 am (UTC)
From: (Anonymous)
Остроумно. :)

Вот только это не могло использоваться раз в секунду. Это вообще не компилируется: tc - lvalue.

Date: 2003-10-30 04:32 am (UTC)
From: (Anonymous)
Тьфу... Не lvalue, конечно.

Date: 2003-10-30 05:26 am (UTC)
From: [identity profile] towndwarf.livejournal.com
Я не понял каким макаром, но это КОМПИЛИРОВАЛОСЬ и РАБОТАЛО!!!
Было установлено куча каких то настроек компилятора, о которых я даже и не подозревал! Я до сих пор в непонятках ПОЧЕМУ это вообще компилировалось и работало. Могу прислать исходники из Source Safe, если не веришь. Там много подобных перлов.

Так что: на свете многое есть друг Горацио, что человеку знать не положено :-|.

*.h: #define A(X) static inline void A{X}

Date: 2003-10-30 08:31 am (UTC)
From: [identity profile] d0tnet.livejournal.com
Тут вот мальчик пишет на чём-то среднем между си и асм для контроллеров (он тут на столе лежит, да лень смотреть название). И понадобились ему слова из плавающей точки. Плавающая точка тут двухбайтная. Делали поочерёдно следующие макросы и процедуры (ничего не работает):
#define LOWORD(X) (X&FFh)
#define HIWORD(X) (X shr 8)
byte loword(real* x) {return *(byte*)(void*)x;}
byte hiword(real* x) {return *++((byte*)(void*)x);}
пришлось использовать
mov ax, fp
return al;
return ah;
(как оказалось, у компиллятора нельзя отключить оптимизатор)

Re: *.h: #define A(X) static inline void A{X}

Date: 2003-10-30 08:57 am (UTC)
From: [identity profile] towndwarf.livejournal.com
AAA! Знакомо!!!
И я лет 7 назад на это напоролся :-).
Пока в ассемблер в дебаге не залез - дня 2 бошку ломал над подобным!

Date: 2003-10-30 08:34 am (UTC)
From: (Anonymous)
Но ведь tc - массив указателей, блин.

редкостный бред. я хуже видел лишь однажды, но там
совершенно шизофреничный кернельный программер наворотил, помимо прочего, несколько уровней макросов

вот, Вам повезло, - макросов нет ))

Date: 2003-10-30 08:53 am (UTC)
From: [identity profile] towndwarf.livejournal.com
А я из макросов пытаюся templates ваять :-)
Иногда помогает :-)
Но что точно - нетути у мене макросов в этом проекте :-) Тот, кто ЭТО писал видимо просто не знал что это такое :-)))

Это не програмист

Date: 2003-10-30 09:59 am (UTC)
From: [identity profile] pelman.livejournal.com
Это не програмист - философ!
From: [identity profile] d0tnet.livejournal.com
http://www.livejournal.com/community/natural_math/976.html?thread=5584#t5584

А так все ошибки распостранённые и даже не как ошибки. Такое часто бывает, когда писатели сменяются. Например char*[] могло быть зарезервировано для кеша или многозадачности, таблицы вообще. А таблицы трогать опасно.
From: [identity profile] towndwarf.livejournal.com
Heee :-)
Там ни таблиц ни кэша :-)
Там просто "программер" после 3х месячных курсов, которому дали очень ответственную работу и не проверяли его!

Profile

towndwarf: (Default)
towndwarf

June 2019

S M T W T F S
      1
2345678
9 1011121314 15
161718192021 22
2324252627 2829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 27th, 2026 05:39 am
Powered by Dreamwidth Studios