Lazarus
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 |