Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »
Страницы: 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???

Помогло только принудительное создание шрифта DefFont

procedure 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 версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо