Конференция "KOL" » 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.
 
Конференция "KOL" » KOL 3.23 [Delphi, Windows]
Есть новые Нет новых   [118642   +47][b:0.001][p:0.003]