Difference between revisions of "Code Conversion Guide/sk"

From Lazarus wiki
Jump to navigationJump to search
m
Line 1: Line 1:
 +
{{Code Conversion Guide}}
 +
 
Konverzia a prenos zdrojového kódu Delphi pre Lazarus
 
Konverzia a prenos zdrojového kódu Delphi pre Lazarus
  

Revision as of 18:00, 11 April 2006

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) português (pt) русский (ru) slovenčina (sk)

Konverzia a prenos zdrojového kódu Delphi pre Lazarus

About

Tento článok je o konverzii existujúceho zdrojového kódu Delphi tak, aby pracoval s prekladačom Free Pascal Compiler a IDE Lazarus. Keďže Lazarus a Free Pascal majú spoločné črty s Delphi a Kylix, nejedná sa o klony. Existuje veľa rozdielov vo volaní knižníc a konvenčných rozdielov... a v niektorých oblastiach je Free Pascal rozšírený a môže byť viac náročný na správnu syntax. Pozrite si príručku Lazarus pre uží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.

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. Ďalšie informácie môžete nájsť na Definícii Open Source a je dobrým začiatkom. Existuje tiež niekoľko porovnaní, ktoré môžu pomôcť objasniť ako rôzne typy licencií pracujú 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

Momentálne stabilná verzia 1.0.x Free Pascalnepodporuje rozhrania, vlákna a variantné záznamy. Ak vami konvertovaný kód vyžaduje tieto konštrukcie, budete musieť použiť 1.1 vývojovú vetvu prekladača... ktorý nie vždy garantuje spoluprácu s Lazarus.

Poznámky k platforme a OS

Lazarus a Free Pascal sú nadplatformové a nadarchitektúrne vývojové nástroje. V kontraste, väčšina existujúceho kódu Delphi bola špecificky navrhnutá pre beh na rpocesore Intel a s Win32. Ak váš komponent má eľ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ť... to je pravé prekvapenie, čo Lazaruspodporuje!

Konverzia

Nastavenie IDE Lazarus pre konverziu projektu

Vytvorenie skúšobného projektu

  • Umiestnite konvertovaný kód do podadresára (napr: convertdir)
  • Vyvolajte Lazarus
  • File->Save All do adresára convertdir. Významné mená pre Project a predvolenú jednotku sú voliteľné.
  • Otvorte "základnú" konvertovanú jednotku v convertdir
  • Pridajte ju do projektu: Project->Add Active Unit to Project
  • Spusťte Tools->Quick Syntax Check alebo Run->Build All na začatie.

Na čo treba dať pozor

  • Mená súborov sú citlivé na veľkosť pri prekladačoch série 1.0.x. Ak pracujete s touto verziou, premenujte všetky súbory malými písmenami. Ak to neurobíte, ľahko dostanete chybové hlásenie File not found.

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 sapresvedčili, či daná funkcia existuje. IDE Lazarus môže analyzovať zdrojové kódy Delphi/Kylix. Na to potrebujete nastaviť niektoré cesty a nastaveniaprekladača. Jednoducho to môžete nastaviť pomocou Environment->CodeTools Defines Editor->Insert Template.

Problémy a riešenia konverzie

Konvertovanie formulárov a jednotiek Delphi do Lazarus

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. premenuje súbory .pas a .dfm malými písmenami.
  2. prekonvertuje súbor .dfm na súbor .lfm (aktuálne bez kontroly obsahu, len formát)
  3. vytvorí prázdny súbor .lrs (obsah bude pridaný neskôr)
  4. pridá direktívu
    {$mode delphi}
  5. nahradí jednotku Windows jednotkou LCLIntf
  6. ak je to potrebné, pridá jednotku LResources
  7. odoberie jednotku Variants
  8. odoberie direktívu
    {$R *.dfm}
  9. pridá sekciu
    initialization
    a direktívu
    {$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ýhody, ktoré nevyužijete na zmenu zdrojového kódu, ale i nevýhody, ktoré musia byť povedané tiež.

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

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

Ďalšie podrobnosti o módoch Free Pascal môôžete nájsť v Dokumentácii Free Pascal.

Cezplatformové poznámky

  • Zahrnutý assembler býva vždy problémom, pretože zväzuje kód s architektúrou Intel. Niektorí vývojári robia prototypy algoritmov v Pascale a pomocou ifdef vklasajú oprimizovaný assembler. Našťastie Turbo-Power toto urobil na mnohých miestach svojho kódu. Ak je toto prípad balíčka, ktorý chcete konvertovať, prepnite ho späť do Pascalu.
  • Neodkazujte na špecifické pamäťové miesto, ako dátová oblasť BIOS. Zistite čo kód potrebuje a skúste nájsť cezplatformovú alternatívu.
  • Nepoužívajte triky, ktoré sú špecifické pre procesor (ako použitie Intel TSC) bez zatvorenia svojho kódu do ifdef pre platformu potrebnú pre kód... a poskytnutia alternatívy pre prostredia, ktoré nie sú hardvérovo kompatibilné.
  • Ak potrebujete nejaký kód, špecifický pre OS, používajte IFDEF. Viz zoznam makier neskôr.

Užitočné premenné prekladača

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

{$IFDEF Name}

.

  • {$IfDef LCL}
Táto premenná je definovaná pri použití balíčka LCL a je užitočná pre písanie kódu, ktorý pracuje s LCL a Delphi.
  • {$IfDef FPC}
Táto premenná je definovaná pri použití prekladača Free Pascal a je užitočná pre písanie kódu, ktorý pracuje s Free Pascal a Delphi.
  • {$IfDef Unix}
    ,
    {$IfDef Win32}
    , ...
Tieto sú definované pre cieľový OS. Delphi definuje Linux, Win32 a MSWindows. Free Pascal beží na oveľa väčšom počte platforiem a tak je vhodné použiť oveľa všeobecnejšie položky. Napríklad Unix je definované pre Linux, FreeBSD, NetBSD a OpenBSD, na ktorých už Lazarus beží.
Použite nasledujúcu konštrukciu pre prácu v Kylix:
{$IfDef Linux}
  {$Define Unix}
{$EndIf}

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

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):

 grep -in ' tbutton =' lcl/*

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

    • Please add to this topic! **
  • Windows->LCLIntf, LCLType, LCLProc, VCLGlobals, ...)

Keďže LCL nei je špecificky Windowsová knižnica, kód, ktorý je v jednotke Windows v 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 prvky (& - && atď).

  • Messages->LMessages

TControl Messages pre spätné (callbacks) udalosti 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 typ a š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.

  • Graphics, Controls->GraphTypes, GraphMath, Graphics, Controls

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žitčné funkcie, ako TFloatPoint pre presnosť, rôzne rutiny pre spolprá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.

Point1 := Point2 + Point3

či porovnanie dvoch pravouholníkov ako

if (rect1 = rect2) then ...
  • Mask->MaskEdit

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.

  • StdCtrls->StdCtrls,Buttons

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

  • v LCL je Canvas obsahnutý v TBitmap

Syntaxové rozdiely

Please add to this topic!

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

{$Mode Delphi}

pracuje oveľa pomalšie ako Delphi. Pre tento dôvod oveľa viac vyhovujú pravidlá syntaxe

{$Mode ObjFPC}

ak je to možné, vrelo doporučujem, iba 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:

Inicializácia premenných v FPC 1.0.x

V Delphi je možné (a celkom bežné) inicializovať premennú v jej deklarácii, avšak toto nie je možné vo Free Pascal 1.0.x, namiesto toho musíte použiť konštanty, alebo vo väčšine prípadov je lepšia inicializácia niekde inde, pred použitím premennej (napr. časť

initialization

jednotky).

Napríklad:

Delphi FPC
var
MyObject: TSomeObject=
nil
;
//Nejaký kód...
implementation
//Nejaký kód...
initialization
//Nejaký kód...
end
.
var
MyObject
:
TSomeObject;
//Nejaký kód...
implementation
//Nejaký kód...
initialization
MyObject:=
nil
;
//Nejaký kód...
end
.
Pri priraďovaní obsluhy udalosti, používajte predponu "@"

Napríklad môžete manuálne priradiť obsluhu tlačítka:

Delphi FPC
begin
if not
Assigned(MyButton.OnClick)
then
MyButton.OnClick:= SomeFunction;
//@ nie je vyžadované
//Nejaký kód...
end
;
begin
if not
Assigned(MyButton.OnClick)
then
MyButton.OnClick:= @SomeFunction;
//@ je vyžadované
//Nejaký kód...
end
;
Pri volaní procedurálnej premennej používajte túto syntax
theprocname()

V Delphi nie je rozdiel medzi procedúrou a procedurálnou premennou, ale v FPC áno, takže pri volaní procedúry, hoci táto nemá parametre, musíte pripojiť zátvorky. Napríklad:

Delphi FPC
With
(SomeObject)
do begin
If
Assigned(OnMyCallback)
then
OnMyCallback;
//parenthesis not required
end
;
With
(SomeObject)
do begin
If
Assigned(OnMyCallback)
then
OnMyCallback();
//parenthesis required
end
;
Pri pristupovaní k hodnotám v ukazovateli na záznam, musíte ho najprv dereferencovať

V Delphi nie je vyžadovaná dereferencia ukazovateľa na záznam pri pristupovaní k jeho hodnotám, ten môže byť skutočnosti spracovaný ako záznam samotný alebo akýkoľvek iný objekt. V FPC musí byť najprv dereferencovaný. Napríklad:

Delphi FPC
Function
GetSomeValue(ARecord: PMyRecord)
:
Integer;
begin
If
Assigned(ARecord)
then
Result
:=
ARecord.SomeValue
else
Result:=
0
;
end
;
Function
GetSomeValue(ARecord: PMyRecord)
:
Integer;
begin
If
Assigned(ARecord)
then
Result
:=
ARecord^.SomeValue
else
Result:=
0
;
end
;
Pri pristupovaní k znakom indexovanej reťazcovej vlastnosti objektu, musí byť uzatvorený v zátvorkách

V Delphi je možné pracovať s vlastosťami presne ako s inými konštantami alebo premennými, dokonca aj pri priamom pristupovaní, napríklad, k samostatným znakom reťazca, ale toto nie je možné v FPC, hlavne v indexovaných vlastnostiach. Narozdiel od Delphi, toto musí byť uzatvorené v zátvorkách, kvôli odlíšeniu. Hoci toto nemusí byť vždy pravda, je dobrým zvykom toto vždy na to myslieť. Napríklad

Delphi FPC
Type
TSomeComponent=
class
(TComponent)
//More code...
Published
Property
MyString:
String
index
3
read
GetMyString;
//More code...
End
;
var
MyChar
:
char;
begin
If
Length(MyString)>
2
then
//no parenthesis needed
MyChar:= MyString[
3
];
//More code...
end
;
Type
TSomeComponent=
class
(TComponent)
//More code...
Published
Property
MyString:
String
index
3
read
GetMyString;
//More code...
End
;
var
MyChar
:
char;
begin
If
Length(MyString)>
2
then
//parenthesis sometimes needed
MyChar:= (MyString)[
3
];
//More code...
end
;


Ukazovatele musíte pretypovať na požadovaný typ, pri použití s premennou alebo funkciou daného typu

Sometimes in Delphi you will have a null pointer variable representing an object. While it might seem a complex situation, it is oddly quite common especially in large component packs as a method of preventing too many circular includes between objects in different units. In Delphi it is then possible to send this null pointer to a function expecting that object, without bothering to typecast to actual type, in fpc you must typecast.

For example -

Delphi FPC
Unit 1
Type
TSomeObject=
class
(TComponent)
//More code...
End
;
Procedure
DoSomething(Value: TSomeObject);
Function
GetSomeObject: TSomeObject;
Unit 2
Type
TSomeComponent=
class
(TComponent)
//More code...
Published
SomeObject: Pointer
;
//More code...
End
;
Application
var
MyComponent: TSomeComponent
;
begin
MyComponent.SomeObject
:=
GetSomeObject;
//More code...
DoSomething(MyComponent.SomeObject)
;
end
;
Unit 1
Type
TSomeObject=
class
(TComponent)
//More code...
End
;
Procedure
DoSomething(Value: TSomeObject);
Function
GetSomeObject: TSomeObject;
Unit 2
Type
TSomeComponent=
class
(TComponent)
//More code...
Published
SomeObject: Pointer
;
//More code...
End
;
Application
var
MyComponent: TSomeComponent
;
begin
MyComponent.SomeObject
:=
Pointer(GetSomeObject);
//More code...
DoSomething(TSomeObject(MyComponent.SomeObject))
;
end
;

Resources

Súbory zdrojov Delphi sú špecifické pre win32 a nie sú kompatibilné s Lazarus, tzakž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

To add a resource to your application:

lazres myresource.lrs mypix.xpm anotherpix.xpm
pridajte jednotku LResources do príkazu Uses
zahrňte vami vytvorený súbor .lrs do bloku initialization

Example:

function
TForm1.LoadGlyph(
const
GlyphName:
String
): TBitMap;
begin
Result:= TPixmap.Create
;
Result.LoadFromLazarusResource(GlyphName)
;
end
;
//More code...
begin
Speedbutton1.glyph:= LoadGlyph('mypix')
;
//More code...
end
;
initialization
{$I unit1.lrs}
{$I myresource.lrs}
end
.

Získanie nápovedy

Ak sa počas konverzie stretnete sproblémom, ktorý neviete vyriešiť, sú široké možnosti ako získať pomoc:

  • Pre čisto Object Pascal a FPC problémy, jen ajlepšie začať s Dokumentáciou Free Pascal od Michaël Van Canneyt a Florian Klämpfl.
  • Pre problémy viac orientované na Lazarus, hľadajte aj v [Main Page | Dokumentácii projektu Lazarus].
  • Nakoniec môžete poslať otázku do maillistov FPC alebo FPC forums, kde je prihlásených veľa expertov.

Môžete tiež skúsiť nevybavené hľadanie a online vedomostnú bázu, ktoré môže tiež významne pomôcť s učením sa nových techník a riešenia problémov. Tamarack Associates uácza rýchly vyhľadávač so zameraním na archívy Borland usenet. Mer Systems Inc. poskytuje podobný vyhľadávač. Iné zdroje informácií spolu s vyhľadávacou schopnosťou sú v Earl F. Glynn's Computer Lab and Reference Library.

Packaging and Releasing your component

Creating a Lazarus package for your component(s)

Creating a package makes installing the code you've converted a much easier process... especially if you're providing more then one component. Mattias Gärtner has written an overview of Lazarus Packages that should be read before beginning this process.

Documentation

The purpose of this site and the wiki format is to make the generation of professional documentation an easy and quick process. The wiki also makes it possible to see the results of your posting immediately and make any changes you'd like in real time.

Using the Lazarus-CCR wiki to create nice looking documentation is very easy. If you've never used wiki markup before, you can get familiar with it in the Sand Box practice area.

Creating a Code Release Page

The Code Release Page contains vital information about your component that a potential downloader will need to know, such as license, intended platform, status (alpha, beta, stable...), where to download it, who wrote it, is support available... etc.

The following procedure will let you create a Code Release Page with your browser:

  • Edit the Components and Code examples page and add a project name wiki link entry for your component in the "Released Components" section. Save the modified page.
  • Go to the Component Release Template, select all and copy. Hit the back button on your browser to return to the Components and Code examples page.
  • Click on your new wiki component name entry and paste the release template into the blank edit box.
  • Edit the template accordingly and hit save.
  • Do edit-saves until your document looks the way you want it to.

Creating a Comment Page for your component

When your component is posted to the Sourceforge File Release System, the Lazarus-CCR admins will lock your code release page to prevent the unlikely event of someone changing your license, name or other release info.

While you're building your code release page, you have the option to create another wiki link to a "news and comments" page for your component that will always be writable. This is called a ComponentCommentTemplate. The link to it should be added to the bottom of the code release template where there's a topic heading and a brief howto. The wiki name link should be your wiki component name with a Comments suffix like EpikTimer Comments or JpegLazarus Comments . The comments page will remain writable to collect feedback from users and for you to post updated information.

A comment page can be added like this:

  • Edit your component release page and add the wiki comment link (in the format described above). Save the modified page.
  • Go to the Component Comment Template , select all and copy. Hit the back button on your browser to return to your component release page.
  • Click on the comment entry entry you created and paste the comment template into the edit box.
  • Edit the template accordingly and hit save.
  • Do edit-saves until your comment page looks the way you want it to.

While the Lazarus-CCR admins initially lock code release pages, any member of the project can use their shell acount to unlock, edit and re-lock their pages.


Submitting the component

If you're a release technician on the project, upload your component to the SourceForge File Release System and add it to the list of release packages. Otherwise send it to one of the project administrators and we'll add it to the repository. We'll also put it into CVS so you'll continue to have access to it.

Contributors and Changes

This page has been converted from the epikwiki version.

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