Lazarus a Indy 10
Indy je balík desiatok komponentov pre prácu s TCP/IP sieťami. Pôvodne bol navrhnutý pre Deplhi, ale v súčasnosti na domovskej stránke poskytujú na stiahnutie aj balíky verzie 10 pre Lazarus. Tak sapozrime ako Indy nainštalovať do prostredia Lazarus.
Indy je poskytované v archíve, ktorý obsahuje dve časti:
Podadresár fpc
- obsahuje indy-core (obdoba indy-rtl): všetky triedy a veci potrebné pre kompiláciu indy-programy pomocou fpc. Táto časť nepotrebuje Lazarus a musí byť kompilovaná a nainštalovaná najprv.
Podadresár lazarus
- obsahuje design-time komponenty: všetky veci potrebné pre vytvorenie Lazarus gui-aplikácií pomocou palety komponentov Lazarus a návrhára formulára. Tieto nie sú potebné pre kompiláciu programov (GUI ani konzolové), len pre proces RAD návrhu.
Inštalácia v Linuxe
Inštalácia na Debian/Ubuntu
Balíček Indy pre Linux obsahuje pripravené pravidlá pre vytvorenie debianovského inštalačného balíčka. Ak máte FPC na Debiane nainštalovaný z inštalačného balíčka, je lepšie nainštalovať tak aj Indy. Takže
- z domovskej stránky www.indyproject.org stiahnite a rozbaľte balíček pre Linux, na tento adresár sa budem odkazovať ako na indy.
- vstúpte do podadresára fpc cd indy/fpc
- zmeňte práva súboru rules chmod +x debian/rules
- ak nemáte nainštalované fakeroot, nainštalujte ho sudo apt-get install fakeroot
- spusťte vytváranie balíčka dpkg-buildpackage -rfakeroot -uc
- balíček je vytvorený o jednu úroveň vyššie, takže cd ..
- a môžete ho nainštalovať, napríklad sudo dpkg -i *.deb
- po nainštalovaní Indy do FPC treba opäť vybudovať IDE Lazarus, aby sa premietli zmeny v FPC,
- ostáva nainštalovať vizuálnu časť, takže v Lazarus nainštalujte balíček indylaz.lpk.
- popis opravy chýb nájdete na konci článku.
Vybudovanie
Ak nepoužívate inštalačnú verziu, postupujte takto (netestované, len opísané a preložené):
- stiahnuť balíček pre Unix/Linux z www.indyproject.org
- rozbaliť a vstúpiť do indy/fpc/
- spustiť "make all"
- spustiť "make install"
- spustiť "make sourceinstall INSTALL_FPCSUBDIR=fpc/packages/extra"
- znova prebudovať Lazarus
- spustiť Lazarus
- otvoriť indy/lazarus/indylaz.lpk
- preložiť a nainštalovať ho (preloží znova IDE)
Inštalácia vo Win32
Inštalácia Indy 10 vo Windows sa skladá z dvoch krokov, a to inštalácia nevizálnych komponentov (tried, premenných, konštánt, ...) v FPC a inštalácia vizuálnych komponentov do Lazarus. Ak nechcete používať vizuálne komponenty, druhý krok nemusíte robiť. Pre samotnú inštaláciu je potrebné stiahnuť z www.indyproject.org balíček (indy-10.2.0.3) pre Windows, tento rozbaliť, napríklad do rozaliť, napríklad do C:/indy. V ďalšom sa neho budem odkazovať ako na indy.
Inštalácia nevizuálnej časti (FPC)
Inštalácia do FPC prebehla úplne bez problémov:
- vstúpiť do indy/fpc/
- nastaviť premennú prostredia SET FPCDIR=c:\lazarus\fpc\2.2.0\source
- spustiť make all (make je súčasťou FPC)
- spustiť make install INSTALL_PREFIX=c:\lazarus\fpc\2.2.0
- spustiť make sourceinstall INSTALL_PREFIX=c:\lazarus\fpc\2.2.0 INSTALL_FPCSUBDIR=packages/extra
Inštalácia vizuálnej časti (Lazarus)
Inštalácia v Lazarus už taká bezproblémová nie je, ale nakoniec aj v README sa dočítate, že vizuálne komponenty neboli testované... Popis opravy chýb nájdete na konci článku.
- spustiť Lazarus,
- prebudovať IDE Lazarus, aby sa premietli zmeny nainštalované do FPC,
- otvoriť indy/lazarus/indylaz.lpk
- preložiť a nainštalovať ho (preloží znova IDE)
Problémy prekladu
Pri inštalácii vizuálnych komponentov sa vyskytli chyby pri preklade balíčka.
Chybná definícia ResourceStrings
/usr/src/fpclaz/indy-10.2.0.3/lazarus/IdDsnResourceStrings.pas(59,28) Error: Illegal expression
Treba upraviť riadky
RSProtam = RSProt+' (am)'; RSProtnz = RSProt+' (nz)';
napríklad na
RSProtam = ' Protocols (am)'; RSProtnz = ' Protocols (nz)';
Nedefinovaná jednotka IdSocksServer
Ako ďalšia sa objavila chyba
/usr/src/fpclaz/indy-10.2.0.3/lazarus/IdRegister.pas(695,18) Error: Identifier not found "TIdSocksServer"
Stačí do klauzuly uses v sekcii implementation pridať odkaz na IdSocksServer.
Nenastavená cesta
Potom sa objavilo hlásenie, že Lazarus nemôže nájsť súbor IdWhoIsServer.pas. V okne chybovej správy je aj popísané riešenie, IdWhoIsServer.pas som našiel takto:
find / -iname idwhoisserver.pas ... /usr/share/fpcsrc/packages/extra/indy/IdWhoIsServer.pas
A túto cestu (bez mena súboru) som nastavil do cesty k ostatným jednotkám (-uF) vo vlastnostiach balíčka. Ide vlastne o cestu k zdrojovým súborom Indy.
Chýbajúci include súbor
Nasledovala posledná chyba prekladu:
/usr/share/fpcsrc/packages/extra/indy/IdGlobal.pas(554,4) Fatal: Can't open include file "IdVers.inc"
Súbor IdVers.inc nie je do zdrojového balíčka zahnrutý, takže ho treba ručne prekopírovať do cesty nájdenej v predchádzajúcej chybe. Tento súbor je v adresári indy/fpc, takže stačí:
cd indy/fpc<> cp IdVers.inc /usr/share/fpcsrc/packages/extra/indy/
Zdvojená definícia TIdCompressionIntercept
V Súbore IdRegister.pas, ktorý obsahuje registračné procedúry komponentov, je dva krát definovaná registrácia komponentu TIdCompressionIntercept. Takže nájdite túto časť
RegisterComponents(RSRegIndyIntercepts+RSProt, [ {$IFDEF USEZLIBUNIT} TIdCompressionIntercept, {$ENDIF} TIdBlockCipherIntercept, TIdCompressionIntercept, {$IFDEF USEZLIBUNIT} TIdServerCompressionIntercept, {$ENDIF} TIdServerInterceptLogEvent, TIdServerInterceptLogFile ]);
a zakomentujte druhý výskyt TIdCompressionIntercept:
RegisterComponents(RSRegIndyIntercepts+RSProt, [ {$IFDEF USEZLIBUNIT} TIdCompressionIntercept, {$ENDIF} TIdBlockCipherIntercept, //TIdCompressionIntercept, {$IFDEF USEZLIBUNIT} TIdServerCompressionIntercept, {$ENDIF} TIdServerInterceptLogEvent, TIdServerInterceptLogFile ]);
A prebudujte preinštalujte balíček, respektíve prebudujte IDE.
Záver
Po vyriešení problémov budete odmenení desiatkami sieťových komponentov.


Komentáre
Ahoj,
mam dotaz, kde si stiahol balíček (indy-10.2.0.3)? na www.indyproject.org vidim len indy-10.2.0.1...
dik
Alebo si prečítaj toto: http://cs.wikipedia.org/wiki/Wikipedie:Aktualizujte_svou_cache