Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.08;
Скачать: CL | DM;

Вниз

Как сделать свой проект   Найти похожие ветки 

 
MM_ASH   (2008-04-24 00:01) [0]

Привет! Хочу спросить совета умных людей. Есть мысль сделать небольшой проект библиотеки классов для разработки ядра систем баз данных и пр. систем. Хотелось бы узнать во-первых ваше провессиональное мнение вот об этом: http://www.icore.net.ua/download/iXCore.rar, а во-вторых совета в плане что за чем делать, если это интересно, для того что бы люди смогли этим пользоваться (бесплатно конечно же ), и смогли принимать участие в дальнейшем в развитии данного проекта.
(Заранее большое спасибо и прошу не считать этот линк спамом :-) )


 
@!!ex_   (2008-04-24 00:09) [1]


> Хотелось бы узнать во-первых ваше провессиональное мнение
> вот об этом: http://www.icore.net.ua/download/iXCore.rar,

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


 
Petr V. Abramov ©   (2008-04-24 00:10) [2]

есть смысл, если есть понимание, что даже с бесплатными продуктами конкурировать будет ОЧЕНЬ сложно.


 
jack128 ©   (2008-04-24 00:43) [3]


> что это такое и зачем нужно?

ну судя по

> библиотеки классов для разработки ядра систем баз данных


это некий маппер данных БД на объекты для дельфи...


 
Котик Б   (2008-04-24 09:21) [4]

У людей, у которых есть мысль сделать небольшой проект библиотеки классов для разработки ядра систем баз данных вопросов как сделать свой проект возникать не должно ;)


 
MM_ASH   (2008-04-24 09:31) [5]

>>jack128
Нет это не мапер, это в первую очередь быстрые хеши и варианты.

>>@!!ex_
Если у кого нет делфи... то он врядле сможет понять о чем идет речь :-)

>>Petr V. Abramov
Я вовсе не намерен конкурировать, это просто бесплатная библиотека, в которой есть много, как мне кажется, интересных идей.. с кем тут конкурировать с FastMM что ли :-) ?

>>Котик Б
Да сама библиотека то есть уже.. что дальше делать вот вопрос..


 
ЮЮ ©   (2008-04-24 10:42) [6]

Если мои объекты вместо Variant-oв стAнут юзать объеты TiX_Variant, то их ещё и создавать надо бы.

Так что твой FastTest() некорректен, ибо использует всего 2 объекта на все циклы итерации, а стоит перенести
   A := iX_VInt(1);
   B := iX_VInt(2);
в цикл, и налицо «в три раза медленнее», а не «в 10 раз быстрее»


 
ЮЮ ©   (2008-04-24 11:11) [7]

function TiX_Variant_Double.IsEqual(AValue: IVar): Boolean;
begin
 Result := (AValue.VariantType() = vtDbl) and (FValue = AValue.AsDbl);
end;


А почему бы не считать равными 1.0 и 1 ?

function ix_FloatFromVar(AVariant: Variant): Double;
begin
 try
   case TVarData(AVariant).VType of
     varSingle, varDouble, varCurrency, varBoolean, varSmallInt, varInteger,
       varShortInt, varByte, varWord, varLongWord, varInt64: Result := AVariant;
     varOleStr, varString: Result := StrToFloat(StringReplace(AVariant,",",".",[]));
   else
     Result := 0;
   end
 except
   Result := 0;
 end;

end;


А такому место не в ядре, а в мусорном ведре.


 
MM_ASH   (2008-04-24 11:20) [8]

>>ЮЮ
>>Так что твой FastTest() некорректен
Тест корректен, в нем проверяется наиболее частая операция, связанная с динамическим приведением типов, создание вариантов, это уже вопрос второй :-)


> function TiX_Variant_Double.IsEqual(AValue: IVar): Boolean;
>
> begin
>  Result := (AValue.VariantType() = vtDbl) and (FValue =
> AValue.AsDbl);
> end;
>
> А почему бы не считать равными 1.0 и 1 ?


Мысль к сожалению не ясна..


>  except
>    Result := 0;
>  end;


Согласен не красиво, какие у Вас предложения по этому поводу? Поднимать эксепшин смысла как я считаю нет, потому как это простое приведение типов..

> StrToFloat(StringReplace(AVariant,",",".",[]));


можно заменить вариантом для бедных StrToFloat(AVariant) :-)


 
ЮЮ ©   (2008-04-24 11:45) [9]

> Мысль к сожалению не ясна&#133

У тебя Double единица может быть равна только Double единице, но не может быть равна ни Extended единице, ни Integer единице.


> Поднимать эксепшин смысла как я считаю нет, потому как
> это простое приведение типов

Да? А если у меня там строка "один" как то некорректро она приводит

И почему ты решил, что точка для StrToFloat роднее, чем запятая или другой разделитель целой и дробной части?


 
MM_ASH   (2008-04-24 12:00) [10]

>>ЮЮ
>У тебя Double единица может быть равна только Double единице, но не может быть равна ни Extended единице, ни Integer единице.
Все равно не понятно к чему это..

>Да? А если у меня там строка "один" как то некорректро она приводит
если там строка с неприводимыми символами то будет 0, это уже лишнее

>И почему ты решил, что точка для StrToFloat роднее, чем запятая или другой разделитель целой и дробной части?
Потому что в утилитах есть функция которая ставит точку в качестве делимитера


 
ЮЮ ©   (2008-04-24 12:16) [11]

> Потому что в утилитах есть функция которая ставит точку
> в качестве делимитера

Железная логика :)

iX_VStr(FloatToStr(3.5))  при DecimalSeparator "," создаст строку "3,5"
а «простое приведение типов» ix_FloatFromVar(iX_VStr(FloatToStr(3.5))) вернет мне 0.
Всё это явно претендует на то, чтобы стать ядром системы. :)


> Все равно не понятно к чему это&#133

Зачем мне метод IsEqual если
 X.IsEqual(Y) = true только тогла, когда типы X и Y совпадают?
 почему X.asExt = Y.asExt, но при этом X.IsEqual(Y) = false? Или IsEqual имеет какой то особый смысл?


 
MM_ASH   (2008-04-24 12:30) [12]


> iX_VStr(FloatToStr(3.5))  при DecimalSeparator "," создаст
> строку "3,5"
> а «простое приведение типов» ix_FloatFromVar(iX_VStr(FloatToStr(3.
> 5))) вернет мне 0.
> Всё это явно претендует на то, чтобы стать ядром системы.
>  :)

Это похоже на критику, но не похоже на конструктивную :-)
Что именно ты предлогаешь с этим сделать? Можно убрать все привязки к делимитерам, тогда все будет просто, но ты не контролируешь делимитер.. можно сделать фиксированный делимитер, тогда эффект будет тот же, но нужно установить его в системе... Тебе просто не нравится или ты пытаешся что-то этим сказать? :-)


> Зачем мне метод IsEqual если
>  X.IsEqual(Y) = true только тогла, когда типы X и Y совпадают?
>  
>  почему X.asExt = Y.asExt, но при этом X.IsEqual(Y) = false?
>  Или IsEqual имеет какой то особый смысл?

Это ты верно отметил :-)
Можно и так и так, смысл IsEqual в том, что бы проверить не только тип но и значение, к тому же можно проверить значения не зная типа... то, о чем ты говоришь справедливо только для чисел, и если тебе критично проверить значение Int на эквивалентность значению Dbl, то делай X.asExt = Y.asExt..


 
ЮЮ ©   (2008-04-24 12:50) [13]

> но ты не контролируешь делимитер&#133 можно сделать фиксированный
> делимитер, тогда эффект будет тот же, но нужно установить
> его в системе

Во-первых, оно вполне контролируется.
Во-вторых, не можещь контролировать и любишь точку — Val тебе в руки


 
MM_ASH   (2008-04-24 12:56) [14]

>>ЮЮ
Это все хорошо.. и большое спасибо за то что нашел спорные места в коде..
но что по сабжу то?


 
ЮЮ ©   (2008-04-25 04:47) [15]

По сабжу — ядро системы уже имеется, развивается не один год. Однако использовать класс вместо Variant — такая мысль и в голову не приходила, а учитыая [6] — и не придет. :)
 А надичие кучи наследников от TiX_Variant вообше непонятно к чему.



Страницы: 1 вся ветка

Текущий архив: 2008.06.08;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.019 c
15-1208941969
ekto
2008-04-23 13:12
2008.06.08
В MySQL 5 нет StoredProc?


2-1210768544
Patrick
2008-05-14 16:35
2008.06.08
Проверка директория


2-1211026843
Ultimate
2008-05-17 16:20
2008.06.08
Загрузка определенной строки из файла


11-1190041757
Alexeis_
2007-09-17 19:09
2008.06.08
Более подробная информация о создании зеркал


2-1210765392
Washington
2008-05-14 15:43
2008.06.08
Переименование файла