Lazarus

Z ZděchovNET
Skočit na navigaci Skočit na vyhledávání

Tipy

  • Převod UTF-8 řetězců na WideString pro volání WinAPI funkcí

Prostředí Lazarus a knihovny LCL využívají řetězce kódované do UTF-8. Před jejich použitím v WinAPI funkcí je potřeba je nejdříve převést na WideString. Pokud i samotný editor využívá UTF-8, je nutné převést také konstantní řetězce.

TFileStream.Create(UTF8Decode('ěščřžýáí.txt', fmOpenRead));

Více informací: LCL Unicode Support

Křížová kompilace z Windows pro ARM

  • Stáhněte balík CodeTyphon
  • Rozbalte jej a nainstalujte
  • Pokud požadujeme verzi rozhraní eabi verze 5, tak je nutno nastavit parametry kompilace. Stáhněte Soubor:Aswrapper arm linux as.zip. Soubor arm-linux-as.exe přejmenujte na arm-linux-asa.exe ve složce c:\codetyphon\bin\bincross\win32-arm-linux\ a zkopírujte do ní soubory arm-linux-as.exe a arm-linux-as.ini do složky c:\codetyphon\bin\bincross\win32-arm-linux\ se staženého zip archívu. Tento krok zajistí kompilaci s parametry dle ini souboru konkrétně -meabi=5 -mfpu=vfp3 -mfloat-abi=softfp
  • Spusťte codetyphon centrum a v menu Cross-build - FreePascal 32bit - FPC32 Build cross element arm-linux. Tím dojde k sestavení FPC pro arm-linux.
  • Dále sestavte FPC pro win32-i386 a Lazarus pro win32-i386.

Problémy vývoje s Free Pascalem a Lazarusem

Nevýhody

  • Oddělený projekt od Free Pascalu - release cyklus je odlišný, neladí spolu plně
  • Design time balíčky Lazarusu rozbíjejí prostředí - pokud různé aplikace obsahují různé verze stejného balíku, tak Lazarus přestává fungovat s chybou řešení závislostí
  • Chybějící ukotvení oken - stále už mnoho let nemá ukotvení oken jako Delphi či jiná moderní vývojová prostředí
  • Chybějící podpora moderních API - chybí podpora GUI pro GTK 5+ a Qt 5+ a další.
  • Chybějící podpora pro skupiny projektů - project group známý z Delphi stále není dostupný, díky tomu se nehodí pro vývoj větších projektů
  • Slabá podpora pro vysoké DPI (high DPI, DPI scaling) - FCL se snaží být VCL kompatibilní a nepodporuje plně moderní souřadnicový systém nezávislý na DPI
  • Chybějící podpora pro mobilní operační systémy Android a iOS
  • Nelze změnit výchozí jazyk projektů z Free Pascal na Delphi - do nových jednotek se neustále vkládá {$mode fpc}{$H+}, i když je jazyk znám z nastavení projektu
  • Chybí novější schopnosti Delphi - chybí syntaxe jazyka, není podporování FMX
  • Chybí podpora pro Subversion - přejmenování souborů nutno provádět dvakrát
  • Při sestavení se vypisuje plno varování a hlášek z FCL a LCL - zahlcuje okno zpráv, pro vývojáře nezajímavé
  • Strom v inspektor projektu se stále zavírá - nedrží si svůj stav, např. při přejmenování souborů
  • Neumí analyzovat syntaxi během úprav - ukáže chyby až po kompilaci
  • Neumí překládat do virtuálního kódu - neumí měnit kód za běhu při ladění bez nutnosti znovu přeložení
  • Problematické automatické uvolňování paměti - sice podporuje počítání referencí pro rozhraní, ale pro standardní třídy paměť automaticky neuvolňuje a nutné volat Destroy/Free/FreeAndNil.

Výhody

  • Podpora Windows, Linux, OSX
  • Free & open source
  • Přeloženo do češtiny - díky otevřenému kódu lze překládat do češtiny
  • Silně typový jazyk pascal - mnoho chyb lze zjistit už v době překladu
  • Generické typy jako v Delphi - nejsou plně podporovány Lazarusem

Prefixy názvů

Prefix Význam Příklad
A parametry funkcí/procedůr pokud kolidují s jiným názvem AValue
F pole (field) FOnChange
E error/exception EOutOfMemory
S resource string SNotFound
T typy TObject
I rozhraní (interface) IInterface