вторник, 4 октября 2016 г.

Проекты, свободные от cg32.dll

В какой-то момент один из старых проектов начал плеваться сообщениями CodeGuard, хотя сам кодгард в проекте выключен. Различные вариации параметров сборки так и не помогли избавиться от включения библиотеки cg32.dll в проект. Очень долгим и муторным путём удалось вычистить включение этой либы в проект. Что пришлось проделать:
  1. Выключаем CodeGuard в опциях проекта
  2. Выключаем CodeGuard в самом билдере: Tools -> CodeGuard Configuration
  3. Выбираем Project -> Edit Option Source и два блока делаем такими:
  4. для DLL:
        <OPTIONS>
        <IDLCFLAGS value="-I$(BCB)\include 
          -I$(BCB)\include\vcl -src_suffix cpp -boa"/>
        <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm 
             -Hc -w- -Vx -Ve -X- -a8 -4 -b- -k- -vi -c -tW 
          -tWM"/>
        <PFLAGS value="-$Y- -$L- -$D- -v -JPHNE -M"/>
        <RFLAGS value=""/>
        <AFLAGS value="/mx /w2 /zn"/>
        <LFLAGS value="-D"" -aa -Tpe -x -Gn"/>
      </OPTIONS>
      <LINKER>
        <ALLOBJ value="c0d32.obj Memmgr.Lib sysinit.obj 
                    $(OBJFILES)"/>
        <ALLRES value="$(RESFILES)"/>
        <ALLLIB value="$(LIBFILES) $(LIBRARIES)
                   import32.lib cp32mti.lib"/>
      </LINKER>
    
    а для приложения так:
      <OPTIONS>
        <IDLCFLAGS value="-I$(BCB)\Projects
             -I$(BCB)\include 
             -I$(BCB)\include\vcl -src_suffix cpp -no_tie -boa"/>
        <CFLAG1 value="-O2 -H=$(BCB)\lib\vcl50.csm 
           -Hc -w- -Vx -Ve -X- -a8 -4 -b- -k- -vi -c -tW 
          -tWM"/>
        <PFLAGS value="-$Y- -$L- -$D- -v -JPHNE -M"/>
        <RFLAGS value=""/>
        <AFLAGS value="/mx /w2 /zn"/>
        <LFLAGS value="-D"" -H:0x1000000 -Hc:0x100000 
                  -B:0x4000000 -S:0x1000000 -Sc:0x100000 -aa 
          -Tpe -x -Gn"/>
      </OPTIONS>
      <LINKER>
        <ALLOBJ value="c0w32.obj Memmgr.Lib 
             sysinit.obj $(OBJFILES)"/>
        <ALLRES value="$(RESFILES)"/>
        <ALLLIB value="$(LIBFILES) $(LIBRARIES) 
             import32.lib cp32mti.lib"/>
      </LINKER>
    
  5. Удаляем все *.obj и *.tds
  6. Делаем полный билд проекта
  7. После сборки проверяем командой
    tdump имя_проекта.exe > связи.txt

суббота, 30 июля 2016 г.

Кривой скроллинг в TAdvStringGrid 2.8

Компонент TAdvStringGrid версии 2.8 (про другие не знаю) не совсем корректно обрабатывает прокрутку таблицы. Так, если начать скроллинг в другом компоненте и там достигнуть конца прокрутки, то скроллинг "возвращается" в AdvStringGrid, даже если мышка не над этим компонентом. Поэтому лезем в исходник и добавляем такой код:
{$IFDEF DELPHI5_LVL}
function TAdvStringGrid.DoMouseWheelDown(Shift: TShiftState;
  MousePos: TPoint): Boolean;
var
  lc: Integer;
  p: TPoint;
begin
  GetCursorPos(p);
  if (not PtInRect(ClientRect, ScreenToClient(p))) then begin
    Result := false; exit; end; //Sleep(1);
  if (goRowSelect in Options) and Navigation.KeepHorizScroll then
  begin
    StartUpdate;
    lc := LeftCol;
    Result := inherited DoMouseWheelDown(Shift,MousePos);
    LeftCol := lc;
    ResetUpdate;
  end
  else
    Result := inherited DoMouseWheelDown(Shift,MousePos);
end;

function TAdvStringGrid.DoMouseWheelUp(Shift: TShiftState;
  MousePos: TPoint): Boolean;
var
  lc: Integer;
  p: TPoint;
begin
  GetCursorPos(p);
  if (not PtInRect(ClientRect, ScreenToClient(p))) then begin
    Result := false; exit; end; //Sleep(1);
  if (goRowSelect in Options) and Navigation.KeepHorizScroll then
  begin
    StartUpdate;
    lc := LeftCol;
    Result := inherited DoMouseWheelUp(Shift,MousePos);
    LeftCol := lc;
    ResetUpdate;
  end
  else
  begin
    if (Row < RowCount) and (Col < ColCount) then
      Result := inherited DoMouseWheelUp(Shift,MousePos)
    else
      Result := True;
  end;
end;
{$ENDIF}


понедельник, 1 июля 2013 г.

IJL & C++ Builder

Теперь руководство, как запустить Intel JPEG Library (IJL):
ставим в настройках компилятора галочку "treat enum types as int" и наслаждаемся :)

Несколько советов:
1. параметр JPGHeight обязательно оставляем положительным,
а вот если нужно повернуть картинку меняем параметр DIBHeight.
Тогда никаких проблем не возникнет ни у кого :)
2. используем для компрессии параметры
JPGColor = IJL_YCBCR
JPGSubsampling = IJL_NONE
jquality = 95

После нескольких тестов убедился, что таким образом получаем почти максимальное качество, но еще при нормальных размерах. При использовании
JPGColor = IJL_RGB
качество остается прежним, а вот размер резко возрастает, практически аналогичная ситуация и при
jquality = 100


взято отсюда

среда, 10 апреля 2013 г.

Как заставить работать IJL (Intel JPEG Library) на C++ Builder 5.0

Все просто! для этого достаточно в настройках проекта в разделе Compiler -> Compiling поставить флажок "Treat enum types as int" и вуаля!!!

вторник, 19 февраля 2013 г.

Multiple rendering target in OpenGL, articles

http://veelck.wordpress.com/2008/11/28/multithread-texture-loading-in-opengl/
http://www.rchoetzlein.com/theory/2010/multi-monitor-rendering-in-opengl/
http://www.codenet.ru/progr/opengl/faq/gl_024.php

[b]background rendering[/b]
http://www.songho.ca/opengl/gl_mvc.html

пятница, 11 января 2013 г.

Инструменты и фиксы для Delphi/Builder

Эксперты для Delphi/Builder

в частности, там есть эксперты от Andy (ускорение билда и пр.). Блог Andy

дальше:
http://delphi2010.ru/?p=472