Sign in Join
Wiki copytemporary

Code Conversion Guide/sk

Deutsch · English · Español · Français · Português · Slovenčina · Русский · 日本語

Cieľom tejto príručky je zdokumentovať niektoré zo špecifických rozdielov , ktoré sa najčastejšie vyskytujú pri konverii počas prekladu existujúceho kódu z Delphi do Lazarus.

Tento článok je o konverzii existujúceho zdrojového kódu Delphi alebo Kylix tak, aby pracoval s prekladačom Free Pascal a IDE Lazarus. Hoci majú Lazarus a Free Pascal spoločné črty s Delphi a Kylix, nejedná sa o ich klony. Existuje veľa rozdielov vo volaní knižníc a konvencii... a v niektorých oblastiach je Free Pascal rozšírený a môže byť náročnejší na správnu syntax. Pozrite si príručku Lazarus pre používateľov Delphi, v ktorej nájdete popis niektorých funkčných rozdielov.

Cieľom tejto príručky je zdokumentovať niektoré zo špecifických rozdielov, s ktorými sa často stretnete počas procesu konverzie kódu pri prekladaní existujúceho kódu z Delphi na Lazarus.

Tento dokument bol umiestnený na Wiki aby mohol byť jednoducho rozšírený každým, kto sa stretol s unikátnym problémom a zverejní ho aj pre ostatných.

Contents

Výber komponentov alebo knižnice pre konverziu

Kde hľadať kód na konverziu

Na nete je dostupného veľa kódu, ktorý môže byť konvertovaný pre použitie s FreePascal a Lazarus. Tu je Stránka kódov, ktorá je dobrým začiatkom. Prosím vás, pridajte na do nej, ak poznáte nejaký iný dobrý odkaz. Turbo-Power Software uvoľnil ich celú ponuku pod MPL. Zoznam dostupných balíčkov môžete nájsť na Sourceforge.

Aby sme predišli duplicitným snahám, balíčky, ktoré už sú konvertované sú vypísané na stránke Components and Code examples. Ak ste prekonvertovali balíček alebo na nejakom pracujete, pridajteprosím poznámku na stránku [Current Projects].

Licencovanie

Licencie existujúceho kódu siahajú od freeware/public domain po reštriktívne verzie, ktoré bránia modifikácii, redistribúcii a komerčnému použitiu. Pred konverziou každého balíčka, je dobré preskúmať jeho licenciu a zaistiť, že je kompatibilná s Lazarus a Free Pascal. Výber licencie je veľmi dôležitý pri komponentoch, pretože umiestnenie jedného na formulár môže navodiť nechcenú alebo nekompatibilnú licenciu na celú aplikáciu.

Keď konvertujete komponenty, rešopektujte prosím elanie pôvodného autora a ponechajte všetky copyrighty a licenčné hlavičky spolu s emailovou adresou a url. Je slušné a často i užitočné informovať autora, že jeho komponent je konvertovaný... hlavne ak je komponent pod obmedzujúcou licenciou. Nový záujem o staré alebo zabudnuté komponenty môže často podnietiť autora na revíziu originálu a zmeniť reštriktívnu licenciu.

Vo všeobecnosti, Public Domain (freeware) a LGPL/MPL sú najprispôsobiteľnejšie pre distribúciu komponentov. Dobrým začiatkom pre nájdenie ďalších informácií môže byť definícia Open Source. Existuje niekoľko porovnaní, ktoré môžu pomôcť objasniť ako pracujú rôzne typy licencií a aký budú mať dosah na kód, ku ktorému patria. Hľadajte "open source license comparison".

Závislosti

Ďalším krokom pred začatím práce na konverzii je overiť si, že kód nie je závislý na na iných balíčkoch, ktoré možno nemáte alebo predstavujú veľkú výzvu pre konverziu. Niektoré ponuky freeware sú obmedzené alebo rozšírené vlastnené balíčky, ktoré často nie sú dostupné alebo prichádzajú s nevhodnou licenciou.

Poznámky k prekladaču

Viz:

Poznámky k platforme a OS

Lazarus a Free Pascal sú nadplatformové a nadarchitektúrne vývojové nástroje. Naopak, väčšina existujúceho kódu Delphi bola špecificky navrhnutá pre beh na procesore Intel a s Win32. Ak má Váš komponent veľa špecifického kódu Win32, bude možno múdrejšie skúsiť nájsť alternatívu, ktorá je menej závislá na platforme. Ale nenechajte sa tým zastaviť... je naozaj prekvapujúce čo všetko LCL podporuje!

Konverzia

Nastavenie IDE Lazarus pre konverziu projektu

Vytvorenie skúšobného projektu

Na čo treba dať pozor

Zdrojové kódy Delphi VCL a Kylix CLX v Lazarus

Pri konverzii zdrojových kódov Delphi/Kylix, je často užitočné použiť Find declaration , aby ste sa presvedčili, či daná funkcia funguje. IDE Lazarus môže analyzovať zdrojové kódy Delphi/Kylix. Na to potrebujete nastaviť niektoré cesty a nastavenia prekladača. Jednoducho to môžete nastaviť pomocou Environment- >CodeTools Defines Editor->Insert Template.

Problémy konverzie a ich riešenie

Ekvivalenty Delphi/Kylix súborov v Lazarus

Delphi / Kylix Popis Lazarus Popis
.pas .dfm/.xfm, .dcu/.dpu, .dpr(main project file), .res, .dof/.kof --- --- --- súbor zdrojového kódu Delphi, formulár Delphi, preložená jednotka Delphi, projekt Delphi, Resource súbor Windows, súbor volieb Delphi .pas, .pp .lfm, .o, .lpr --- --- .lrs, .lpi(hlavný súbor projketu), .ppu súbor jednotky Pascal, dátový súbor formulára, súbor preloženej jednotky, súbor projektu, Resource súbor, súbor volieb projektu, Resource súbor Lazarus, informačný súbor projektu Lazarus, popisný súbor jednotky FPC

Teda súbor Delphi .dcu zhruba korenšponduje so súbormi FPC .o a .ppu spolu v jednom súbore. Súbor .PPU je prevažne hlavičková (interface) časť, the .o prevažne časť implementation. Hlavnou výnimkou sú inlined funkcie, ktoré vo forme to-be-inlined v .ppu.

Konverzia projektov/formulárov/jednotiek Delphi do Lazarus

Premenujte alebo prekopírujte súbor .dpr na súbor .lpr. Zakomentujte alebo odstráňte direktívu

pascal
{$R *.res}

a pridajte direktívu

pascal
{$mode delphi}{$H+}

alebo

pascal
{$mode objfpc}{$H+}

do súboru .lpr.

S touto konverziou Vám môže pomôcť Lazarus IDE prostredníctvom položky menu Tools menu >Convert Delphi Project to Lazarus Project. Vyžiada si zadanie súboru .dpr (projekt Delphi) a skonvertuje ho na .lpr, ďalej vytvorí súbor .lpi a skonveruje všetky jednotky.

Mnoho existujúcich formulárov Delphi môžete konvertovať pomocou IDE Lazarus pomocou zabudovaného konvertora formulárov DFM na LFM. Nájdete ho v menu Tools- >Convert DFM file to LFM. Vyvolajte súborový dialóg, vyberte *.dfm a konvertor urobí zvyšok.

Ak potrebujete konvertovať celú jednotku (s alebo bez formulára), Lazarus má tiež zabudovaný nástroj: Convert Delphi unit to Lazarus unit , ktorý urobí nasledujúce:

  1. upraví veľkosť písmen v sekciách uses a iclude.
  2. konvertuje súbory .dfm na súbory .lfm (bez kontroly obsahu, len formát)
  3. vytvorí prázdny súbor .lrs (obsah bude pridaný neskôr)
  4. pridá direktívu
pascal
{$mode delphi}
  1. nahradí jednotku Windows jednotkou LCLIntf
  2. ak je to potrebné, pridá jednotku LResources
  3. odoberie jednotku Variants
  4. odoberie direktívu
pascal
{$R *.dfm}
  1. pridá do sekcie initialization direktívu
pascal
{$i unit.lrs}

Toto umožní rýchlu a ľahkú konverziu väčšiny jednotiek z formátu Delphi do formátu Lazarus. Tento nástroj nevykonáva žiadnu kontrolu platnosti alebo automatické zmeny syntaxe, tak všetky potrebné zmeny syntaxe, dodatočné zmeny jednotiek, alebo zmeny dfm/pas pre rozdiely v prvkoch/komponentoch, musíte urobiť manuálne, pomocou niekoľkých sprievodcov, ktorý vám pomôžu niektoré kroky, hlavne opravovanie konvertovaných formulárov (lfm).

Výber správneho módu prekladača

Prekladač Free Pascal podporuje 5 rôznych módov Pascalu. Napríklad TP pre Turbo Pascal, vám dovolí prekladať jednotky Turbo Pascal. Má i mód pre kompatibilitu s DELPHI, ktorý môžete nastaviť na uľahčenie konverzie kódu. Lazarus preferuje mód OBJFPC, ktorý je skoro ako mód DELPHI, ale bez mnohoznačnosti syntaxe Delphi. Tu sú dôležité body:

Mód môže byť zvolený na príkazovom riadku alebo na začiatku zdrojového kódu. Použitie príkazového riadku má výhodu, že nemusíte meniť zdrojový kód, ale i nevýhody, ktoré musia vysvetliť iní.

Väčšinu jednotiek Delphi môžete jednoducho preložiť pomocou Free Pascal pridaním tejto konštrukcie, hneď za meno jednotky

pascal
{$IFDEF FPC}
      {$MODE DELPHI}
    {$ENDIF}

Ďalšie podrobnosti o módoch Free Pascal nájdete v dokumentácii Free Pascal.

Viac-platformové poznámky

Užitočné premenné prekladača

Pre písanie kódu, ktorý sa má správať na rôznych systémoch rôzne, môžete použiť direktívy

pascal
{$IFDEF Name}

Pričom Name môže byť

pascal
{$IfDef LCL}
pascal
{$IfDef FPC}
pascal
{$IfDef LCLGtk}
    {$IfDef LCLWin32}
    {$IfDef LCLQt}
    ...
pascal
{$IfDef Unix}
    {$IfDef Win32}
    ...
pascal
Pre pr??cu v Kylix pou??ite nasleduj??cu kon??trukciu:
pascal
{$IfDef Linux}
      {$Define Unix}
    {$EndIf}
pascal
{$IfDef ENDIAN_BIG}

Ďalšie podrobnosti nájdete v dokumentácii Free Pascal.

Podpora 32bit/64bit

Ukazovatele pod 64bit potrebujú 8 bajtov namiesto 4 na 32bit. Typ 'Integer' zostáva pre kompatibilitu s 32bit. To znamená, že už nepotrebujete pretypovanie ukazovatele na integer a naopak. FPC definuje dva nové typy:

Pre kód, ktorý má pracovať s Delphi a FPC použite:

pascal
{$IFNDEF FPC}
     type
       PtrInt = integer;
       PtrUInt = cardinal;
     {$ENDIF}

Nahrďte všetky

pascal
integer(SomePointerOrObject)

týmto

pascal
PtrInt(SomePointerOrObject)

Hľadanie chýbajúcich identifikátorov

V organizácii LCL, v porovnaní s Delphi VCL, sú rozdiely. Ak sa stretnete s chybovým hlásením prekladača not found pri významných triedach alebo identifikátoroch, je veľká šanca, že je v inej jednotke. Úplný rížový odkaz môžete nájsť pomocou programu grep na lazarus/docs/xml alebo na podadresár lcl.

Napríklad bežne používaný TButton vyvoláva v kóde Delphi chybu, pretože je umiestnený v jednotke buttons.pp. Tento príkaz nájde správnu jednotku veľmi rýchlo (v adresári zdrojového kódu Lazarus):

pascal
grep -in ' tbutton =' lcl/*

Rozdiely v dôležitých jednotkách Lazarus a Delphi

Prosím dopĺňajte túto časť!;

Keďže LCL nie je špecificky Windowsová knižnica, kód, ktorý je v jednotke Windows z Delphi pre priamy prístup k Win32 API je abstrahovaný do samostatných rozhraní, do ktorých môžete pristupovať z jednotky LCLIntf. Majte na pamäti, že Lazarus neemuluje Win32, tak veľa funkcií cýba a niektoré nepracujú ako ich Win32 náprotivky. Tieto funkcie existujú len pre kompatibiltu s Delphi a sú určené len pre rýchly a (s)prostý prenos. LCL tiež tiež nemá mnoho z typov, tak je často potrebná jednotka LCLType a niekedy aj VCLGlobals. LCLProc tiež obsahuje niekoľko funkcií, ktoré môžu byť užitočné pre najnižšiu úroveň obslúh ako FreeThenNil , DeleteAmpersands na odstránenie dodatočných ampersandov z reťazcov pre ovládacie prvky (& - && atď).

Jednotka Interfaces musí byť zahrnutá v súbore .lpr file pre správnu inicializáciu príslušného WidgetSet.

Správy TControl pre spätné volania (callbacks) udalostí Win32 vo formáte WM_CALLBACK a ich príslušná štruktúra je väčšinou umiestnená v jednotke Messages v Delphi. V LCL tieto typy správ a ich štruktúry zvyčajne nájdete v LMessages, zvyčajne premenované z WM_ na LM_, tak sa napríklad WM_MOUSEENTER stáva LM_MOUSEENTER , a TWMMouse sa stáva TLMMouse.

Na zjednodušenie niektorých vecí a prerušenie zložitosti krúženia medzi jednotkami, sú abstrahované niektoré typy do zdieľanej jednotky, zvanej GraphType, ktorá zahŕňa potreby, ktoré sú v Delphi umiestnené v jednotkách Graphics alebo Controls. Tak ju niekedy budete potrebovať zahrnúť, rovnako ako jednotku GraphMath , ktorá, hoci nekompatibilne s Delphi, pridáva ďalšie užitočné funkcie, ako TFloatPoint pre presnosť, užitožné rutiny pre spoluprácu s bezériovými krivkami, čiarami a oblúkmi, ako aj perťažené operátory pre použitie s typmi TPoints a TRect, ako napr.

pascal
Point1??:= Point2 + Point3

či porovnanie dvoch pravouholníkov ako

pascal
if (rect1 = rect2) then ...

Kvôli inteligentnejšej názvovej úvahe, je jednotka pre TMaskEdit nazvaná [Mask Edit] na rozdiel od tochu nešikovného Mask , ako tomu je v mnohých verziách Delphi.

V mnohých verziách Delphi je TButton umiestnený v StdCtrls , zatiaľ čo TSpeedButton a TBitBtn sú v Buttons. Pre zjednodušenie vkladá LCL všetky tlačítka do Buttons , čo môže niekedy sťažiť konverziu, preto je vhodné túto jednotku vždy zahrnúť.

Rozdiely vo vlastnostiach a metódach Delphi -> FPC/LCL

Sémantické rozdiely

Poradie vyhodnocovania parametrov

Delphi garantuje, že všetky parametre sú vyhodnocované z ľava do prava. FPC takúto garanciu neposkytuje a môže vyhodnocovať parametre v ľubovoľnom poradí, kvôli generovaniu optimálneho kódu.

Vnorené procedúry/funkcie sú procedurálne premenné

Delphi posiela framepointer rodičovskej procedúry vždy do zásobníka a vždy volá ich opätovné odstránenie. To znamená, že ak pokiaľ nepristupujute k premenným rodičovskej procedúry, môžete poslať adresu vnorenej procedúry do inej funkcie, ktorá ich potom môže volať ako každú procedurálnu premennú.

FPC vždy posiela framepointer rodičovskej procedúry ako skrytý prvý parameter, podľa aktuálnej konvecie volania, čiže ak voláte vnorenú procedúru ako bežnú procedurálnu premennú, všetky parametre budú posunuté o jednu pozíciu.

Inými slovami, nevolajte vnorené procedúry pomocou procedurálnych premenných.

Syntaktické rozdiely

Prosím dopĺňajte túto kapitolu!

Kvôli zdedenej prísnosti FPC, budú potrebné niektoré syntaktické zmeny, napriek direktíve

pascal
{$Mode Delphi}

pracuje oveľa pomalšie ako Delphi. Kvôli tomu oveľa viac vyhovujú pravidlá syntaxe {$Mode ObjFPC} ak je to možné, vrelo doporučujem, dokonca i keď bude kód zdieľaný medzi Delphi a LCL.

Niektoré z týchto sú jednoducho lepšie praktiky kódovania a niekedy pretože mód Delphi nie je celkom presný, alebo v niektorých prípadoch kód akceptovaný Delphi nefunguje podľa očakávania s Free Pascal, hoci môže byť preložený. Tkže nakoniec nie všetky sú presne vyžadované, nasledujúci zoznam zmien vždy zvážte:

Pri priraďovaní vstupného bodu obsluhy udalosti, pridajte predponu "@"

Napríklad, môžete manuálne priradiť udalosť tlačítka

Delphi OBJFPC
```
begin
pascal
if not Assigned(MyButton.OnClick) then 
  MyButton.OnClick:= SomeFunction;
  //@ nie je vyžadované
  //ďalší kód...
pascal
end;
pascal
  
|

begin if not Assigned(MyButton.OnClick) then MyButton.OnClick:= @SomeFunction; //@ je vyžadované //ďalší kód... end;

pascal
  
##### Pri volan?? procedur??lnej premennej pou????vajte t??to syntax: theprocname()

V Delphi nie je rozdiel medzi v??sledkom funkcie a premennou, ale v FPC je. Preto volanie function, hoci aj nem?? parametre, mus?? obsahova?? z??tvorky. Napr??klad 

Delphi | OBJFPC   
---|---

With (SomeObject) do begin If Assigned(OnMyCallback) then OnMyCallback; //zátvorky nie sú vyžadované end;

pascal
  
|

With (SomeObject) do begin If Assigned(OnMyCallback) then OnMyCallback(); //zátvorky sú vyžadované end;

pascal
  
##### Pri pristupovan?? k hodnot??m v ukazovateli na z??znam ho mus??te najprv dereferencova??

V Delphi nie je nutn?? dereferencova?? ukazovate?? na z??znam pre pr??stup k hodnot??m v ??om, m????e by?? spracovan?? presne ako z??znam samotn??, ??i in?? objekt. 

V FPC mus?? by?? najprv dereferencovan??, napr??klad: 

Delphi | OBJFPC   
---|---

Function GetSomeValue(ARecord: PMyRecord):Integer; begin If Assigned(ARecord) then Result:=ARecord.SomeValue else Result:=0; end;

pascal
  
|

Function GetSomeValue(ARecord: PMyRecord):Integer; begin If Assigned(ARecord) then Result:=ARecord^.SomeValue else Result:=0; end;

pascal
  
##### Pri pristupovan?? znakov indexovan??ho re??azca Vlastnosti objektu, mus?? by?? najprv uzatvoren?? v z??tvork??ch

V Delphi je mo??n?? spracova?? Vlastnos?? priamo ako ka??d?? in?? kon??tantu alebo premenn??, dokonca i pre pr??stup k jednotliv??m znakom re??azca priamo. 

V FPC toto nie je mo??n??, hlavne pre indexovan?? vlastnosti. Namiesto toho to mus?? by?? uzatvoren?? v z??tvork??ch , kv??li jednozna??nosti. Hoci to nie je v??dypravda, je to dobr?? zvyk na zv????enie. Napr??klad 

Delphi | OBJFPC   
---|---

Type TSomeComponent=class(TComponent) //Ďalší kód... Published Property MyString:String index 3 read GetMyString; //Ďalší kód... End;

pascal
var
  MyChar:char;
begin
  If Length(MyString)>2 then
    //nie sú potrebné zátvorky
    MyChar:= MyString[3];
    //Ďalší kód...
end;
pascal
  
|

Type TSomeComponent=class(TComponent) //Ďalší kód... Published Property MyString:String index 3 read GetMyString; //Ďalší kód... End;

pascal
var
  MyChar:char;
begin
  If Length(MyString)>2 then
    //niekedy sú potrebné zátvorky
    MyChar:= (MyString)[3];
    //Ďalší kód...
end;
pascal
  
##### Pri pou??it?? ukazovate??ov s premenn??mi alebo funkciami, mus??te ich najprv pretypova?? na pr??slu??n?? typ

Niekedy m??te v Delphi pr??zdnu ukazovate??ov?? premenn?? , reprezentuj??cu objekt. Hoci to mo??no vyzer?? ako komplexn?? situ??cia, je to nezvy??ajne be??n??, najm?? vo ve??k??ch komponentov??ch bal????koch, ako met??da predcdh??dzaj??ca mnoh??m kruhov??m includes medzi objektmi v r??znych jednotk??ch. 

V Delphi je potom mo??n?? pola?? tento pr??zdny ukazovate?? do funkcie o??ak??vaj??cej objekt, bez tr??penia sa nad jeho aktu??lnym typom, v FPC ho mus??te najprv pretypova??. Napr??klad 

Delphi | OBJFPC   
---|---

Unit 1 Type TSomeObject=class(TComponent) //Ďalší kód... End;

pascal
Procedure DoSomething(Value: TSomeObject);
Function GetSomeObject: TSomeObject;
pascal
Unit 2
  Type 
    TSomeComponent=class(TComponent)
    //Ďalší kód...
    Published SomeObject: Pointer;
    //Ďalší kód...
  End;
pascal
Application
var 
  MyComponent: TSomeComponent;
begin
  MyComponent.SomeObject:=GetSomeObject;
  //Ďalší kód...
  DoSomething(MyComponent.SomeObject);
end;
pascal
  
|

Unit 1 Type TSomeObject=class(TComponent) //Ďalší kód... End;

pascal
Procedure DoSomething(Value: TSomeObject);
Function GetSomeObject: TSomeObject;
pascal
Unit 2
  Type
    TSomeComponent=class(TComponent)
    //Ďalší kód...
    Published SomeObject: Pointer;
    //Ďalší kód...
  End;
pascal
Application
var 
  MyComponent: TSomeComponent;
begin
  MyComponent.SomeObject:=Pointer(GetSomeObject);
  //Ďalší kód...
  DoSomething(TSomeObject(MyComponent.SomeObject));
end;
pascal
  
#### Resources

S??bory zdrojov Delphi s?? ??pecifick?? pre Win32 a nie s?? kompatibiln?? s Lazarus, tak??e ich budete musie?? znova vytvori?? a prelo??i?? pomocou **lazres**. **Lazres** n??jdete v podadres??ri lazarus/tools. Ak m??te stiahnut?? zdrojov?? k??d Lazarus, najprv ho mus??te prelo??i??:

cd lazarus/tools make install

pascal

Pre pridanie resource do svojej aplik??cie spus??te:

lazres myresource.lrs mypix.xpm anotherpix.xpm

pascal

A potom 

  * pridajte jednotku **LResources** do sekcie **Uses**
  * zahr??te vami vytvoren?? s??bor .lrs do bloku _initialization_

Pr??klad

function TForm1.LoadGlyph(const GlyphName: String): TBitMap; begin Result:= TPixmap.Create; Result.LoadFromLazarusResource(GlyphName); end; //Ďalší kód... begin Speedbutton1.glyph:= LoadGlyph('mypix'); //Ďalší kód... end

pascal
initialization
  {$I unit1.lrs}
  {$I myresource.lrs}
end.
pascal

### In?? met??da konverzie projektu Delphi/Kylix do Lazarus

  * premenujte alebo prekop??rujte v??etky s??bory .dfm alebo .xfm na .lfm (skor??ie verzie Delphi neposkytovali textov?? s??bor .dfm, konverzn?? n??stroj, by mal by?? v adres??ri \bin a mo??no ho pou??i?? na konverziu .dfm)
  * premeujte s??bor .dpr na **.lpr**
  * urobte potrebn?? zmeny s??boru **.lpr** :

  1. pridajte direkt??vy **{$mode delphi}{$H+}** alebo **{$mode objfpc}{H+}**
  2. pridajte jednotku **Interfaces** do sekcie uses
  3. zakomentujte alebo zma??te direkt??vu {$R *.res}

  * urobte potrebn?? zmeny vo v??etk??ch s??boroch jednotiek **.pas** :

  1. pridajte direkt??vu **{$mode delphi}{$H+}** alebo **{$mode objfpc}{H+}**
  2. pridajte **LResources** a, ak m?? formul??r tla????tka, aj **Buttons** do sekcie uses
  3. zakomentujte alebo zma??te direkt??vu {$R *.dfm} alebo {$R *.xfm}
  4. pridajte sekciu **Initialization** nakoniec ka??d??ho s??boru jednotky a pridajte do nej direkt??vu **{$I unitname.lrs}**

  * vyberte **Project- >New Project from file**
  * zvo??te s??bor **.lpr**
  * v okne 'Create a new project' zvo??te 'Application'
  * vybudujte projekt a zaistite ??al??ie potrebn?? opravy, v tomto okam??iku je automaticky vygenerovan?? s??bor .lpi. 
    * M????ete sa stretn???? so spr??vou 'Error reading Form', ak to nastane kliknite na 'Continue Loading'
  * v??etko ulo??te a m??te projekt Lazarus :-)

## Z??skanie n??povedy

Ak sa po??as konverzie stretnete sprobl??mom, ktor?? neviete vyrie??i??, s?? ??irok?? mo??nosti ako z??ska?? pomoc: 

### Documentation

  * Pre ??isto Object Pascal a FPC probl??my, jen ajlep??ie za??a?? s [Dokument??ciou Free Pascal](<http://www.freepascal.org/docs-html/>) od Michaëla Van Canneyta a Floriana Klämpfla.
  * Pre probl??my viac orientovan?? na Lazarus, h??adajte aj v [Dokument??cii projektu Lazarus](/wiki/Main_Page).

### Partnersk?? podpora

  * Mailing listy - ot??zky m????ete posiela?? do niektor??ho z [mailing listov pre Free Pascal Compiler](<http://www.freepascal.org/maillist.html>) alebo [FPC fór](<http://community.freepascal.org:10000/bboard/>), kde je prihlásených veľa odborníkov.
  * IRC - na irc.freenode.net: [[#fpc](/p/fpc)](<irc://irc.freenode.net/fpc>) rpe FPC alebo [#lazarus-ide](<irc://irc.freenode.net/lazarus-ide>) pre Lazarus

### Vedomostn?? b??zy

Existuj?? aj online vyh??ad??vacie a vedomostn?? b??zy, ktor?? tie?? m????u poskytn???? v??znamn?? pomoc pre u??en?? sa nov??ch techn??k a rie??en?? probl??mov: 

  * Tamarack Associates poskytuej r??chly [vyh??ad??vac??](<http://codenewsfast.com/>) stroj špecifické pre archívy Borland usenet.
  * Mer Systems Inc. poskytuje podobn?? vyh??ad??vac?? [stroj](<http://www.mers.com/searchsite.html>).
  * ??al??ie zdroje inform??ci?? spolu s s mo??nos??ou [h??adania](<http://www.efg2.com/Lab/search.htm>) je Earl F. Glynn's Computer Lab and Reference [knižnica](<http://www.efg2.com/>).

## Bal????kovanie a Uvo????ovanie komponentov

### Vytvorenie Lazarus bal????ka s va??im komponentom

Vytvorenie bal????ka v??razne zjednodu??uje in??tal??ciu Vymi skonvertovan??ho k??du... hlavne ak poskytujete viac ako jeden komponent. Mattias G??rtner m?? nap??san?? preh??ad [Bal????ky Lazarus](/wiki/Lazarus_Packages/sk), ktor?? si mus??te pre????ta?? najprv. 

### Dokument??cia

Cie??om tejto str??nky a form??tu wiki je vytvori?? profesion??lnu dokument??ciu ??ahko a r??chlo. wiki tie?? umo????uje ihne?? vidie?? v??sledok Va??ich pr??spevkov a robi?? zmeny v re??lnom ??ase. 

Pou??itie Lazarus wiki pre vytv??ranie vzh??adnej dokument??cie je ve??mi jednoduch??. Ak ste e??te wiki nepou????vali, obozn??mte sa s ??ou pomocou [pieskoviska](/wiki/Sand_Box/sk) \- cvi??nej oblasti. 

### Tvorba Code Release str??nky

Str??nka Code Release obsahuje inform??cie o va??om komponente, ktor?? m?? pr??padn?? s??ahova?? vedie??, ako licencia, zam??????an?? polatforma, stav (alpha, beta, stable...), odkia?? s??ahova??, kto ho nap??sal, ??i je odstupn?? podpora, at??. 

Pre vytvorenie svojej str??nky Code Release vo svojom prehliada??i: 

  * prejdite na [Release new component](/wiki/Release_new_component)
  * nap????te meno komponentu do edita??n??ho po??a a kliknite na _Create Article_
  * vypl??te ??abl??nu a stla??te ulo??i??.
  * upravte str??nku [Components and Code examples](/wiki/Components_and_Code_examples) pridan??m odkazu na svoju novo vytvoren?? str??nku do sekcie "Uvo??nen?? komponenty" a ulo??e upraven?? str??nku.

### Poslanie komponentu

Ak ste technik uvo????ovania (_release technician_) projektu, uploadnite svoj komponent do SourceForge File Release System a pridajte ho na zoznam uvo??nen??ch bal????kov. Inak ho po??lite niektor??mu z administr??torov projektu ([Tom Lisjac](</User:Tom> "User:Tom") alebo [Vincent Snijders](</User:Vincent> "User:Vincent")) a budep ridan?? do ??lo??iska. Pred uploadom do SourceForge, majte vytvoren?? _str??nku Code Release_ s popisom komponentu, pod??a predch??dzaj??ceho popisu. 

Ak si mysl??te, ??e potrebujete pokra??ova?? s v??vojom komponentu, m????eme ho tie?? ulo??i?? do SVN, aby ste k nemu mali st??le pr??stup. Ak n??s unavia ??pravy z poslan??ch patcheov, poskytneme V??m pr??stup so z??pisom do SVN, aby ste mohli odovzd??va?? svoje patche sami. Detaily n??jdete v [Pou??itie SVN ??lo??iska Lazarus](/wiki/Using_the_Lazarus-ccr_SVN_repository). 

## Contributors and Changes

This page has been converted from the epikwiki [version](<http://lazarus-ccr.sourceforge.net/index.php?wiki=CodeConversionGuide>). 

  * Initial version by Tom Lisjac and Mattias G??rtner - 9/22/2003 [ VlxAdmin](</User:Tom> "User:Tom")
  * Moved Getting help from the main page. T. Lisjac - 9/24/2003 [ VlxAdmin](</User:Tom> "User:Tom")
  * Added documentation templates, procedure and links. 9/25/2003 [ VlxAdmin](</User:Tom> "User:Tom")
  * LCLLinux was renamed to LCLIntf, [ Jesus Reyes](</User:Jesusrmx> "User:Jesusrmx"), 9/27/2003
  * added more information on Unit changes, [AndrewJohnson](<http://lazarus-ccr.sourceforge.net/index.php?wiki=AndrewJohnson>) 9/27/2003
  * Updated Syntax differences, including some examples, [AndrewJohnson](<http://lazarus-ccr.sourceforge.net/index.php?wiki=AndrewJohnson>) 9/27/2003
  * FPC 1.0.x doesn't support interfaces, [ Vincent Snijders](</User:Vincent> "User:Vincent") 9/28/2003
  * Fixed some of the examples per new WikiWord definition, 9/28/2003 [ VlxAdmin](</User:Tom> "User:Tom")
  * Made code more consistant to remove last accidental Pascal WikiWord definitions, [AndrewJohnson](<http://lazarus-ccr.sourceforge.net/index.php?wiki=AndrewJohnson>) 9/27/2003
  * Use tables for code examples for nice blocks, and easy side by side view of Delphi->FPC differences, [AndrewJohnson](<http://lazarus-ccr.sourceforge.net/index.php?wiki=AndrewJohnson>) 10/17/2003
  * Use pascal stylesheet to make example code more readable, [AndrewJohnson](<http://lazarus-ccr.sourceforge.net/index.php?wiki=AndrewJohnson>) 10/18/2003

---
*From the Free Pascal wiki, page "Code Conversion Guide/sk", as the Internet Archive kept it on 2022-01-24, last changed on 2020-02-11. Copyright stays with the author who wrote it, according to the old wiki's [Licensing](/wiki/Licensing) page. If you have concerns about this material, [message the admin](/wiki-contact).*

Revision 3, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.