![]() |
![]() ![]() ![]() | |
|
Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|| Форумы Здесь вы можете задать свой вопрос и наверняка получите ответ |
ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK - Компактные программы на Delphi
| ||
![]() | ||
|
Страницы: 1 2 3 4 5 6
Чтобы не потерять эту дискуссию, сделайте закладку
« предыдущая ветвь | форум | следующая ветвь »
KOL 3.23 [Delphi, Windows]
Netspirit (10.04.17 10:40) [80]Dimaxx, ты бы выложил минимальную процедурку, которая делает что надо. Может быть, где-то с указателями на буфер и размером данных напутал.
Dimaxx © (10.04.17 23:49) [81]>> а как то отладчиком реально поймать? или тулзами типа madExcept?
По идее при АВ выдается адрес исключения. Надо по нему прыгнуть в код и увидеть где произошло исключение.
>> ты бы выложил минимальную процедурку, которая делает что надо. Может быть, где-то с указателями на буфер и размером данных напутал.
Я ж говорю - дельфевый выполняет ту же операцию без проблем. Размеры файлов все известны - они в виде списка типа "имя-размер":SomeDir/SomeFile.dat 12345
Сами файлы все слиты один за одним в один огромный файл без заголовков. По сути различия только в коде со Stream. В выходные постараюсь найти код и опробовать, я уже не помню что и как делал.
PrnZ (12.04.17 05:01) [82]Насчёт Stream. Адаптировал на КОЛ библиотеки NewAC и LZMA2 - может конечно я чёто неправильно делаю - смысл такой -
type PA=^TA;
TA=object(TObj)
...
FStream:PStream;
...
// etc
end;
Ну и соответственно процедуры типа ReadLZMA(...) SeekLZMA(...) etc в соответствующей структуре.
ДАК ВОТ - пишу прогу с использованием оригинальных классов LZMA и соответственно с моим объектом. Разница - 160К. НО!!! прога с классами быстрее раз в 5. всё делал вроде бы по закону. Такое же наблюдается с адаптационными объектами NewAC (при чтении и распаковке файлов, но там возможно ДЛЛ гонит... но в классах же не гонит... хз), и не только. Некоторые адаптации с сайта (DlUCL напр.) тоже тормозят в сравнении с классом.
Делал тестовый класс/объект с рандомным потоком - вроде всё норм... хз...
Netspirit (12.04.17 14:35) [83]Не представляю что там может тормозить. Сколько там того объекта?
Может где-то в часто вызываемые процедуры объект передаётся не по ссылке, а по значению? Всё равно, разница в скорости вряд-ли была бы больше 20%, хотя зависит от кода...
Dimaxx © (12.04.17 23:07) [84]Вопрос по падение снимается. Нашел старый проект, скомпилировал - 2 гиговый файл "разложился" без проблем.
PrnZ (15.04.17 10:13) [85]to:Netspirit
Вот и я не могу понять. Оригинальный класс наследуется от TFileStream. Я же делаю объект от KOL.TObj, делаю поле Stream:PStream; делаю в конструкторе NewStream(ProcRec), где ProcRec - record ReadProc, WriteProc, SeekProc etc. end; соответственно перевожу методы из оригинального класса в функции Read,Write,Seek итд. Короче вроде всё правильно. О том что "вызываемые процедуры объект передаётся не по ссылке, а по значению" - не, я уже забыл когда на ВЦЛ писАл. Да и компилятор не позволит. ХЗ чё за фигня... Могу выложить модуль на справедливый народный суд. Модуль сколько весит - не помню, не от себя сейчас сижу. Чё-то около 2000-2500 строк.
Dimaxx © (18.04.17 20:32) [86]Шрифт в КОЛ уже реально выбешивает.
Задаешь шрифт (Tahoma, height=-11, он по умолчанию), в дизайнере все нормально. Компиляция, запуск. Какого хрена??? Шрифт, мать его, System (корявый растровый .fon), размер, мать его, 10. В unit1_1.inc про шрифт вообще ни строчки. Ничего не меняется, даже если в коде руками поставить имя шрифта (Tahoma) и высоту (-11). Ставишь -12 - шрифт Tahoma, высота -12 - все верно, но мне надо стандартный. Любое FontQuality не меняет ничего. Выставляешь fqProof - в unit1_1.inc ко всем контролам формы прописывается высота шрифта, но не та, что я задал (-11), а -13. Опять-таки WTF?? В итоге шрифт все же становится Tahoma, но размер неверный. И после возвращения FontQuality=fqDefault ничего не меняется, потому что весь unit1_1.inc испещрен FontHeight:=-13. Убрал руками все. Скомпилировал - шрифт опять System. То есть КОЛ игнорирует заданное и пихает свое. DefFont в KOL.pas установлен точно также - Tahoma, -11. Пишу руками в unit1_1.inc - FontHeight:=-11. Компилирую и все становится на свои места, но! После закрытия и открытия проекта файл unit1_1.inc перегенерируется заново и снова все через опу. Почему игнорит КОЛ - я хз. Имхо при записи кода создания формы в unit1_1.inc надо принудительно выставить параметры шрифта, либо искать где он гадит, если шрифт не задан и используется дефолтный.
Далее: в dfm объект формы стоит первым. У всех контролов в dfm Font.FontHeight = -13. Откуда??? Я не задавал -13 вообще. С какого потолка оно взято? И почему KOL берет значения свойств из TForm, а не из TKOLForm???
Помогло только принудительное создание шрифта DefFontprocedure TForm1.KOLForm1BeforeCreateWindow(Sender: PObj);
begin
DeleteObject(Form.Font.ReleaseHandle);
Form.Font.Assign(NewFont);
end;
DKOL (13.05.17 18:09) [87]Если вдруг интересно кому - то вырезал кучу старого хлама из KOL.pas (типа нерабочей Linux поддержки, "очень важной" поддержки делфи 2 и т.д).
Cкинул на свн https://sourceforge.net/projects/kolmck/
зы. возможно что отвалилось\сломалось...
Vladimir Kladov © (17.05.17 21:15) [88]http://clavier.link (язык AL-IV - АЛФОР):
18.05.2017 v0.62 Добавлена поддержка платформы Win32/Delphi/KOL (версия KOL 3.23) - на данный момент только не визуальной его части (работа продолжается).
Dimaxx © (01.07.17 19:05) [89]Столкнулся с глюком TBitmap. Гружу 24-битное, преобразовываю дизерингом в 8-битное. Затем мне надо, чтобы размеры (если они меньше заданных) были подогнаны под один и тот же размер (добавляются поля черного). Так вот после увеличения только ширины картинки изображение становится 32-битным (с какого перепугу??). Если сначала увеличить высоту, а потом ширину, то изображение остается 8-битным.
QAZ (07.07.17 19:38) [90]
> Vladimir Kladov © (17.05.17 21:15) [88]
регистрозависимость это дичь ....
нет элементарной документации аля "хеловёрд" по спецификациям начать что то писать невозможно
sheleh (21.07.17 20:02) [91]Привет спецам!
Помогите пжлст. Под андрюшу вышел бинарный транслятор x86 в ARM от программистов из Сколково, что писали нечто подобное под Эльбрус.
В общем эти ребята в Play Market выложили свое творение - wine 1.9, работающий под андройдом на любом ARM устройстве. Там они его распространяют преимущественно для запуска старых игр. Называется ExaGear.
И действительно, на нем работает куча программ. Но только не мои, написанные на delphi с применением библиотеки KOL. А так хотелось.....
Вылетает даже минимальная программа, создающая пустую форму.
Вот скрин https://s1.postimg.org/vkb1liaan/20170722_005204.jpg
Компилирую в delphi 6, запущенной в этой среде. Отладчик не ссылается ни на какой участок кода. Как узреть, что именно приводит к вылету?
L`Autour (01.08.17 10:27) [92]по функции:
function Extended2Str( E: Extended ): KOLString;
нужно кроме предвартельной проверки E на 0, еще добавить проверку на Infinity и NAN, иначе уйдет в бесконечный цикл.
Dimaxx © (28.08.17 20:25) [93]Сделал для себя новый Format для КОЛ - старый слишком убог по функционалу. Абсолютно весь функционал вводить не стал, взял только самое распространенное.
// для unicode - vswprintf_s
function vsprintf_s(Buffer: PChar; BufferSize: integer; const Fmt: PChar; Args: pointer): integer; cdecl; external 'msvcrt.dll';
function Format(const Fmt: string; Params: array of const): string;
var
VA,Tmp: PByte;
Buffer: array[0..4095] of Char;
I,A,Size: integer;
D: double;
begin
FillChar(Buffer,sizeof(Buffer),0);
if High(Params)>=0 then
begin
Size:=0;
// Считаем размер буфера для аргументов
for I:=0 to High(Params) do
with Params[I] do
case VType of
vtInteger: Inc(Size,sizeof(Integer));
vtChar: Inc(Size,sizeof(Char));
vtWideChar: Inc(Size,sizeof(WideChar));
vtPChar,vtAnsiString,vtPWideChar,vtWideString,vtPointer: Inc(Size,sizeof(Pointer));
vtExtended: Inc(Size,sizeof(Double));
end;
GetMem(VA,Size);
FillChar(VA^,Size,0);
Tmp:=VA;
for I:=0 to High(Params) do
begin
A:=sizeof(Pointer);
with Params[I] do
case VType of
vtInteger:
begin
A:=sizeof(Integer);
PInteger(Tmp)^:=VInteger;
end;
vtChar:
begin
A:=sizeof(Char);
PChar(Tmp)^:=VChar;
end;
vtPChar: PPointer(Tmp)^:=VPChar;
vtAnsiString: PPointer(Tmp)^:=VString;
vtWideChar:
begin
A:=sizeof(WideChar);
PWideChar(Tmp)^:=VWideChar;
end;
vtPWideChar: PPointer(Tmp)^:=VPWideChar;
vtWideString: PPointer(Tmp)^:=VWideString;
vtExtended:
begin
A:=sizeof(Double);
D:=VExtended^;
PDouble(Tmp)^:=D;
end;
end;
Inc(Tmp,A);
end;
I:=vsprintf_s(@Buffer[0],4096,PChar(Fmt),VA);
if I>0 then
begin
SetLength(Result,I);
Result:=Buffer;
end;
if VA<>nil then FreeMem(VA);
end;
end;
Все символы описаны в https://msdn.microsoft.com/ru-ru/library/hf4y5e3w.aspx
QAZ © (06.09.17 17:26) [94]
> L`Autour (01.08.17 10:27) [92]
> по функции:function Extended2Str( E: Extended ): KOLString;
> нужно кроме предвартельной проверки E на 0, еще добавить
> проверку на Infinity и NAN, иначе уйдет в бесконечный цикл.
>
незнай как там с проверками, но Extended2Str в 6 раз!!! медленней стандартной Str и в 4.5 раз FloatToStr из сисутилсов
DKOL (07.09.17 06:30) [95]>Сделал для себя новый Format для КОЛ - старый слишком убог по функционалу.
А в чем убогость то заключается? Вроде основное все было..
>незнай как там с проверками, но Extended2Str в 6 раз!!! медленней стандартной Str и в 4.5 раз FloatToStr из сисутилсов
Получается у Extended2Str нет никаких преимуществ перед стандартной Str?
QAZ © (07.09.17 16:56) [96]
> Получается у Extended2Str нет никаких преимуществ перед
> стандартной Str?
нету, так же как и у FloatToSt,IntToStr,Int2Str
L`Autour (08.09.17 10:24) [97]И как же KOLString, UNICODE_CTRLS?
QAZ © (08.09.17 14:22) [98]
> И как же KOLString, UNICODE_CTRLS?
а без разницы, Str в топе
Dimaxx © (08.09.17 18:02) [99]>> А в чем убогость то заключается? Вроде основное все было..
Типа старые функции небезопасны. И старый Format не поддерживает и половины возможностей. Насколько помню, плавающий формат он не переваривал. Была доработка, но она криво отображала float.
Разрешается использование тегов форматирования текста:
Страницы: 1 2 3 4 5 6 версия для печати
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)
|
![]() ![]() ![]() |