-
Поправил ошибку в StrLComp_NoCase2. IndexOfName работает. 3.00.Y+
-
Если что, в kol.zip и mck.zip теперь лежит версия koldef.inc, учитывающая версию XE (VER220, символы _DXE и _DXEorHigher). Заодно немного поправил символы для _D2005.._D2010.
-
> Потом, кому на протяжении 20 лет могло в голову прийти писать > умножение на размер оф чар, если он всегда = 1 ?
Ну тут как бы не всё однозначно :) Сегодня он 1 байт, завтра 2, послезавтра 3. Тут просто нужно сразу писать с учетом будущего роста размерностей. Идеально конечно не напишешь, но свести к минимуму будущий геморрой - можно.
> Кто теперь будет просматривать миллионы строк старого кода
Тут тоже палка о двух концах. Старый код с миллионами строк конечно нет смысла тащить на новую платформу просто потому что потому. Но с другой стороны либо иде и компилятор полностью поддерживают юникод, либо нет. Это такая особенность дельфей. Нет у теперешней команды разработчиков оной достаточно ресурсов чтобы делать идеальные продукты. Я не углублялся, но говорят что борланд с кодгиром очень и очень сильно запустили дельфи, и теперь новой команде с ограниченными ресурсами надо не только наверстать технологические отставания (юникод, 64 бита, кросс-платформенность (линукс, мак), поддержка новых осей), но и исправить тысячи багов, которые тянулись издревле, но в погоне за выручкой на их решение закрывали глаза. Появился у них интересный продукт - RadPHP. Мне очень понравился. Очень сыроват еще, но начало сделано очень хорошее. Поэтому тут всем не угодишь. А новые проекты начинать на юникоде - вполне нормально и удобно.
В 2010, кстати, вернули прежнюю палитру компонентов :)
> на висту/семерку/восьмерку никто здесь переходить не планирует > до 2020 года точно
Для некоторых это наоборот, критично )
> А если будут переходить, то уже не на delphi точно. C#, > J#
Не панацея. С этими фреймворками тоже не всё так просто. 4-й уже до 400 мбайт распух. Причем, при установке без спросу лезет в интернет и чего-то там качает. да, у микрософта больше возможностей по поддржке и развитию. Но нет ничего такого сверхъестественного с их продуктах чтобы прям стремиться туда. Да и дельфи к 2020 году может уже стать серьезным продуктом, избавившись от лихорадки наследственных проблем )
-
> Да и дельфи к 2020 году может уже стать серьезным продуктом, > избавившись от лихорадки наследственных проблем ) >
Супер, надо записать цитату "к 2020 году может уже стать". Прошу прощения за офтоп.
-
Предлагаю в koldef.inc добавить для д2010 и выше вот такие строки: {$WEAKLINKRTTI ON} {$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])} Это говорит компилятору не компилировать в бинарник новое rtti. Бинарник от этого пухнет очень заметно при использовании классов.
-
и возможно не только классов
-
Обновил KOL.zip и MCK.zip до 3.00.Z.
-
StrList.Values не работает. Похоже, что сравнивается только первый символ Name. program Project1;
uses
kol;
var sl: PStrList;
begin
sl := NewStrList;
try
sl.SetText('001=a'#13'002=b'#13'003=c', false);
msgok(sl.Values['002'] + #13#10 + sl.Values['015']);
finally
sl.Free;
end;
end.
-
The following result is incorrect - it worked in v3.00w: if StrLComp_NoCase('01', '02', MaxInt) = 0 then MsgOK('EQUAL');
-
In Z, there ir no message. It was fixed with Y+.
-
Definitely using KOL VERSION 3.00.Z KOL.pas 2,212,205 bytes 02/11/2010 22:27
program Test;
uses KOL;
begin
if StrLComp_NoCase('11', '12', MaxInt) = 0 then MsgOK('EQUAL');
end.
No conditional defines used. D7, WinXP.
-
Sorry. You are right. I incorrectly tested another function. And still it worked I decided that StrLComp_NoCase is fixed (still I remember that there was a fix for it in Y+). This is another fix uploaded, v3.00.Z1.
-
2 бага в версии Z. 1. procedure TDirList.Sort(Rules: array of TSortDirRules);
begin
if FListPositions = nil then Exit;
SortDirData.CaseSensitive := false; J := 0; Иначе sdrCaseSensitive не работает. 2. При использовании USE_OLD_FLAGS и тем, в асм-версии не работает OnLeave. Вот проект: http://zalil.ru/29914948
-
Sorry, but it's still not working correctly:
program Test;
uses KOL;
const
x: PAnsiChar = '001';
y: PAnsiChar = '002';
begin
if StrLComp_NoCase(x, y, 1) = 0 then MsgOK('EQUAL: 1 char');
if StrLComp_NoCase(x, y, 2) = 0 then MsgOK('EQUAL: 2 char');
if StrLComp_NoCase(x, y, 3) = 0 then MsgOK('EQUAL: 3 char');
if StrLComp_NoCase(x, y, MaxInt) = 0 then MsgOK('EQUAL: Max char');
end.
Last working version was v2.912 - broken in v2.921 with introduction of StrLComp_NoCase2
-
3.00.Z2, fixes for StrLComp_NoCase, DirList.Sort
2MTsvDn: в вашем проекте нет нигде OnLeave. Когда я добавил на кнопку и чекбокс, работает. С темами, с USE_OLD_FLAGS.
-
function TStrList.GetLineName(Idx: Integer): AnsiString;
var s: AnsiString;
Q: PAnsiChar;
begin
s := ItemPtrs[ Idx ];
Q := StrScan( PAnsiChar(s), fNameDelim );
if Assigned(Q) then Q^ := #0;
Result := PAnsiChar(s);
end;
Код для проверки:
list := newstrlist;
list.Add('name');
msgok(list.LineName[0]);
-
3.00.Z3
+Некоторые исправления visual_xp_styles.inc: были глюки с отображением текста.
-
2 Кладов В проект ничего не надо. Вот директивы: KOL_MCK;GRAPHCTL_XPSTYLES;UNICODE_CTRLS;USE_OLD_FLAGS;nil_events Наводишь курсор на уже существующий чекбокс он "загорается" (состояние hot), отводишь курсор все остается так же. В пас-версии все работает нормально.
-
Ну, и еще один вопрос. Вот код: NewForm2(Form2, Applet);
Form2.Form.ShowModal;
Free_And_Nil(Form2.Form); Form2 в первый вызов NewForm2 равно nil, а во второй нет. Разве не должно уничтожаться всё? Т.к.у меня в рабочем проекте при втором вызове создания дочерней формы все уже создано, nil равно только Form. Если так задумано, то как правильно уничтожать форму, чтобы всё уничтожалось?
-
3.00.Z4 на сайте. Неправильно использовалась команда BTR. Правильно уничтожать с обнулением так: Form2.Form.Free; Form2 := nil; Free_And_Nil нужен для многопоточности при работе с объектами. Да и он не панацея, еще корректнее защищать объекты семафорами или крит. секциями. Если не лень, можно в каждую форму добавлять метод для безопасного уничтожения, псевдокод: TmyForm.FreeNil( var F: PMyForm );
var tmp: PMyForm;
begin
tmp := F;
F := nil;
tmp.Form.Free;
end; Что-то такое.
|