Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "KOL";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.036 c
1-1120372028
Ванечка
2005-07-03 10:27
2005.07.18
События


14-1119432614
TohaNik
2005-06-22 13:30
2005.07.18
Полетит или нет? :)


5-1090683370
Yaral
2004-07-24 19:36
2005.07.18
Наследование форм


1-1120393211
kyro
2005-07-03 16:20
2005.07.18
События на клавиатуру


1-1120204747
kyn66
2005-07-01 11:59
2005.07.18
Как подставить путь к имени таблицы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский