Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.18;
Скачать: CL | DM;

Вниз

2 ECM: Насколько реально перепилить KOLIB под Kylix3 ?   Найти похожие ветки 

 
uuzh ©   (2004-12-10 20:03) [0]

Для меня это было бы весьма актуально, т.к. пришлось писать сервак у которого вся инфа ложится под Firebird (Linux)
Готов попытаться сам, но скорее всего не обойтись без квалифицированной помощи автора.


 
ECM ©   (2004-12-11 10:53) [1]

С удовольствием помогу... занялся бы сам - но времени сейчас ставить Linux и Kilyx нет (конец года сроки горят). Если замешься - будет огромная благодарность :)
Пиши на мыло - буду помогать...


 
Gandalf ©   (2004-12-12 00:01) [2]

Реально - могу по содействовать в развитии KOL-Kylix порта, вернее в доведении его до ума - там есть что поправить, даже на уровне консоли.


 
dmd   (2004-12-12 10:31) [3]

ждем как из печки пирога ))


 
uuzh ©   (2004-12-13 17:20) [4]

2 Gandalf ©: Да, толком GlueCut KOL под Kylix не портирует. :(
Даже чтоб портануть только PObj  и иже сним (в версии KOL 2.02) приходится править ручками. О PControl не говорю, т.к. Brush содержит HBitmap и потому QT его не понимает.
Если "маю час та надхнення" (имею время и вдохновение по-русски) то очччччень бы даже ...
Потому как чтоб портануть KOLIB желательно иметь KOL.
C признательностью за проявленное внимание и дружеское участие uuzh.


 
ECM ©   (2004-12-13 18:10) [5]

2 uuzh
В доработке KOLIB до совместимости с Linux (я бы это так назвал)
вижу пару моментов:
- доработать в первую очередь KOLIBase.pas кодом с условной компиляцией. Зачатки этого там есть - остальное по-моему не сложно (если пока не связываться с ассемблером).
- KOLIBdb.pas думаю должен пойти без изменений...
- Достаточно тесно завязан на Win - KOLIBEvents.pas. Там необходимо будет придумать какой-нибудь метод вместо IdleHandler. Но это тоже не проблема.. ИМХО..

Главное - это основа всего этого - KOL - :)


 
uuzh ©   (2004-12-13 18:33) [6]

2 ECM: 2-й день после работы бьюсь над KOL (под Kylix). Если Gandalf © что-нить присоветует то это будет резкое ускорение процесса :)


 
uuzh ©   (2004-12-13 18:36) [7]

PS: Над mirror для Kylix даже не надеюсь :)))) (по крайней мере в ближайшем обозримом будущем)


 
Gandalf ©   (2004-12-14 21:55) [8]

Так-с это у кого KOL не портиться под Kylix. С первого прохода без ручной правки - лежит на фтп - уже "отпорченый" и все что нужно. Про MCK говорить рано. Визуальность я в принципе для базовых контролов типа Button,EditBox,ListBox,ComboBox,Memo и т.п. сделал. Ini,Thread,Timer -  надо переписывать с нуля, диалоги тоже - про мульти окна не говорю - есть чем заняться - но многое пашет. Есть еще пару багов со строками. Если есть конкретные проблемы - чиркани на почту - для меня сейчас актуально KOL+Kylix + БД (правда MySQL - и их под Kylix/"KOL" я уже добыл) - как и ICS - потому движем знамя по тихоньку. Я правлю до тех пор пока мои потребности гонят :)


 
dmd   (2004-12-15 09:12) [9]

Посмотрите плиз как вот это поправить "undefined symbol: initPAnsiStrings". Возникает в тестовом проекте TestKOL.dpr после
ковертации через kylix-qt.sh


 
uuzh ©   (2004-12-15 15:09) [10]

2 Gandalf: Скачал, компилируется но...
Lst := KOL.NewStrList;
 try
   Lst.LoadFromFile("greetings.txt");
 except
   WriteLn("---Unable to load file");
 end;
 WriteLn("Lines in file:", Lst.Count);

в результате Lst.Count = 0;
Сам лист работает и если строки заносить типа:
procedure LoadList(filename:string; List:PStrList);
var
 F:Text;
 s: string;
begin
 if not Assigned(List) then exit;
 List^.Clear;
 Assign(F,filename);
 Reset(F);
 repeat
   ReadLn(F,s);
   List^.Add(s);
 until Eof(F);
 Close(F);
end;
То всё ОК. К сожалению не смог просмотреть в чём трабл т.к. отладчик отваливается при попытке входа в Lst.LoadFromFile.


 
uuzh ©   (2004-12-15 16:17) [11]

2 ECM:
Добавил в KOL (KOLKYLIX от Gandalf c его ftp) в интерфейсной части
function LoadLibrary(ModuleName: PChar): HMODULE;
function GetProcAddress(Module: HMODULE; Proc: PChar): Pointer;
function FreeLibrary(Module: HMODULE): LongBool;
Убрал фукцию Format из KOLIBase, KOLIBdb. Скомпилировал с
NO_MULTITHREAD (т.к не нашёл аналогов для InitializeCriticalSection и т.п), дошёл до TIBClientLib.IscJump:
relocation error: /usr/lib/libgds.so.0: undefined symbol: crypt


 
ECM ©   (2004-12-15 17:14) [12]

TIBClientLib.IscJump - пока можно исключить вообще.
Можно закрыть его с помощью {$IFDEF MSWINDOWS}
Далее надо перепахать все функции TIBClientLib.isc_XXXXX примерно следующим образом:
{$IFDEF MSWINDOWS}
function TIBClientLib.isc_interprete(buffer: PChar;
 status_vector: PPISC_STATUS): ISC_STATUS;
const
 fProcName: PChar = "isc_interprete"#0;
asm
       lea     edx,[eax+f_isc_interprete]
       mov     ecx,[fProcName]
       call    IscJump
       xor     eax,eax
end;
{$ENDIF}
{$IFDEF LINUX}
function TIBClientLib.isc_interprete(buffer: PChar;
 status_vector: PPISC_STATUS): ISC_STATUS;
const
 fProcName: PChar = "isc_interprete"#0;
begin
 Result := 0;
 if not Assigned(f_isc_interprete) then begin
   f_isc_interprete := GetProcAddr(fLibHandle,fProcName);
   if Assigned(f_isc_interprete) then
     Result := f_isc_interprete(buffer,status_vector);
 end;
end;
{$ENDIF}


 
Gandalf ©   (2004-12-15 17:25) [13]

А такой файл точно есть?

2uuzh

Пришли фикс...


 
uuzh ©   (2004-12-15 17:44) [14]

Попробую, Thx.


 
uuzh ©   (2004-12-15 17:47) [15]

2 Gandalf :
[uuzh@mcomm3 uuzh]$ locate libgds
/opt/interbase/lib/libgds.so.0
/opt/interbase/lib/libgds.so
/usr/lib/libgds.so
/usr/lib/libgds.so.0


 
uuzh ©   (2004-12-15 17:52) [16]

2 Gаndalf: Если имеется ввиду "greetings.txt" то в сампле ниже он работает ;) То бишь добавление строк в лист происходит.


 
ECM ©   (2004-12-15 18:01) [17]

З.Ы. Я там опечатался, конечно
Надо так
function TIBClientLib.isc_interprete(buffer: PChar;
status_vector: PPISC_STATUS): ISC_STATUS;
const
fProcName: PChar = "isc_interprete"#0;
begin
Result := 0;
if not Assigned(f_isc_interprete) then begin
  f_isc_interprete := GetProcAddr(fLibHandle,fProcName);
end;
if Assigned(f_isc_interprete) then
  Result := f_isc_interprete(buffer,status_vector);


:)


 
uuzh ©   (2004-12-15 18:20) [18]

2 Gandalf:

procedure TStrList.SetText(const S: string; Append2List: boolean);
var
 P, TheLast : PChar;
 L, I : Integer;

 procedure AddTextBuf(Src: PChar; Len: DWORD);
 var OldTextBuf, P: PChar;
     I : Integer;
 begin
   if Src <> nil then
   begin
     OldTextBuf := fTextBuf;
     GetMem( fTextBuf, fTextSiz + Len );
     if fTextSiz <> 0 then
     begin
       System.Move( OldTextBuf^, fTextBuf^, fTextSiz );
       for I := 0 to fCount - 1 do
       begin
         P := fList.fItems[ I ];
         if (DWORD( P ) >= DWORD( OldTextBuf )) and
            (DWORD( P ) < DWORD( OldTextBuf ) + fTextSiz) then
           fList.fItems[ I ] := Pointer( DWORD( P ) - DWORD( OldTextBuf ) + DWORD( fTextBuf ) );
       end;
       FreeMem( OldTextBuf );
     end;
     System.Move( Src^, fTextBuf[ fTextSiz ], Len );
     Inc( fTextSiz, Len );
   end;
 end;

begin
    if not Append2List then Clear;
    if S = "" then Exit;

    L := fTextSiz;
    AddTextBuf( PChar( S ), Length( S ) + 1 );

    P := PChar( DWORD( fTextBuf ) + DWORD( L ) );
    if fList = nil then
      fList := NewList;

    I := 0;
    TheLast := P + Length( S );
    while P^ <> #0 do
    begin
      Inc( I );
      P := StrScanLen( P, #10, TheLast - P );{ #10 - CR+LF for Unix- style OS}
      if P^ = #13 then
        Inc( P );
    end;

    Inc( fCount, I );
    if fList.fCapacity < fCount  then
       fList.Capacity := fCount;

    P := PChar( DWORD( fTextBuf ) + DWORD( L ) );
    while P^ <> #0 do
    begin
      fList.Add( P );
      P := StrScanLen( P, #10, TheLast - P );{#10 - CR+LF for Unix}
      if PChar( P - 1 )^ = #10 then
        PChar( P - 1 )^ := #0;
      if P^ = #13 then Inc(P);
    end;
end;


 
Gandalf ©   (2004-12-16 09:32) [19]

Лучше все на мыло ;)



Страницы: 1 вся ветка

Текущий архив: 2005.07.18;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.076 c
14-1119631258
Kerk
2005-06-24 20:40
2005.07.18
Флудеры - кто они?


8-1111501721
neiromantik
2005-03-22 17:28
2005.07.18
Stream Read Error


1-1119856606
Валерий
2005-06-27 11:16
2005.07.18
Полноэкранный режим при старте


1-1120131813
salexn
2005-06-30 15:43
2005.07.18
Не работает функция SaveKey или что не так делаю?


1-1119762048
Mumu
2005-06-26 09:00
2005.07.18
Color