Autor Téma: ObjectPascal na Linux a Mac OS  (Přečteno 2544 krát)

Offline drkvak

  • Příspěvků: 11
  • Karma: 0
ObjectPascal na Linux a Mac OS
« kdy: 10-03-2013, 12:41:07 »
Zdravím,
hledal jsem, jak by bylo možné projekt z Delphi 7 zkompilovat i pro jiné, než widloidní systémy. Našel jsem samozřejmně FPC a Lazarus. U Lazarusu i když pominu, že i primitivní program je obludně veliký (alespoň ten pro Linux) tak je hlavní nevýhoda to, že se mi do něj nepovedlo použitelně převést Delphi projekt (nezná většinu komponent a unitů). Nevíte někdo tedy o nějakém jiném překladači / doplňku k Delphi, který by uměl překládat Delphi projekty pro Mac OS (X) nebo Linux?

PS: Kylix a CrossKylix jsem taky testoval ale s podobnými výsledky, jako u Lazarusu.

Offline Vrtule

  • Mladík
  • **
  • Příspěvků: 54
  • Karma: 10
    • Verze Delphi: XE2
    • Jádro systému Windows
Re:ObjectPascal na Linux a Mac OS
« Odpověď #1 kdy: 10-03-2013, 13:43:37 »
Zdravím,

předně uvádím, že žádné řešení neznám, jen uvažuji.

Pokud by se jednalo o konzolovou aplikaci, možná by se ještě překlad dal zařídit tak, že byste nechal Delphi vygenerovat .obj soubory, na které by pak snad šel použít nějaký linker. O konzolové aplikaci mluvím proto, protože je zde menší pravděpodobnost, že bude závislá na čistě Windowsovských knihovnách. Tímto způsobem (.obj soubory + linker) myslím stále jde vytvářet v Delphi ovladače jádra, ač tam žádná podpora ze strany výrobce není. Ale nikdy jsem tento postup nezkoušel; přišlo mi mnohem jednodušší se naučit základně Cčko.

Pokud byste v té aplikaci používal i nějaké komponenty (třeba kvůli grafickému rozhraní), tak si myslím, že na Linuxu vám to nepoběží, protože takové komponenty budou využívat rozhraní čistě Windowsovských knihoven.A řekl bych, že pak vám to Delphi na Linuxu asi nebude stát za to, pokud nemáte nějakou složitou aplikaci, kterou se vám nevyplatí přepisovat. Já osobně Delphi používám hlavně proto, že se v něm pohodlně tvoří grafické rozhraní, které běží nativně (žádný .NET či podobné věci) a zatím jsem nic srovnatelného nenašel.

Lazarus jsem také nějakou dobu zkoušel a docela to i fungovalo (používal jsem hlavně Menu, PageControl, ListView), jen mě tam zklamala podpora prostředků pro ladění, takže jsem nakonec přešel opět na Delphi. Co se týče velikosti souborů – v Delphi 7 je to ještě v pohodě, ale třeba v Delphi XE2 už ty vytvořené soubory mají obvykle pár MB.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2842
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:ObjectPascal na Linux a Mac OS
« Odpověď #2 kdy: 10-03-2013, 15:11:28 »
hledal jsem, jak by bylo možné projekt z Delphi 7 zkompilovat i pro jiné, než widloidní systémy. Našel jsem samozřejmně FPC a Lazarus. U Lazarusu i když pominu, že i primitivní program je obludně veliký (alespoň ten pro Linux) tak je hlavní nevýhoda to, že se mi do něj nepovedlo použitelně převést Delphi projekt (nezná většinu komponent a unitů). Nevíte někdo tedy o nějakém jiném překladači / doplňku k Delphi, který by uměl překládat Delphi projekty pro Mac OS (X) nebo Linux?
Reseni neznam, ale FPC+Lazarus me docela zklamal: ve volne chvili jsem zacal v XE3 psat utilitku, ktera mi dost chybi a pak me napadlo, ze pokud bych ji chtel dat ven se zdrojovkama, tak by bylo lepsi pro nejake free prostredi. Tak jsem to zkusil prenest do FPC. Kdyz jsem se vzdal nekterych generic, tak to slo prelozit, ale v case, ktery jsem tomu mohl venovat, jsem nerozdejchal low level operace s textem na Canvasu. To se chovalo divne a v rozporu s popisem funkci.

Ale priznavam, ze to byl jen pokus. O FPC jsem se nikdy pred tim nezajimal a necetl jsem k nemu ani zadnou dokumentaci. Ale az budu mit cas, tak to zrejme napravim a dam mu jeste jednu sanci.


Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1145
  • Karma: 44
    • Verze Delphi: 7, 2010
Re:ObjectPascal na Linux a Mac OS
« Odpověď #3 kdy: 10-03-2013, 17:15:08 »
Lazarus jsem zkousel nekolikat, ale vzdy jsem se vratil k Delphi, ve kterem se o dost jednoduseji a lepe vytvari ...

co se tyce velikosti EXE, tak je to stejne, jak ty otazky o obludne velikosti XE+,
staci pohledat par veci typu "strip" a exe je srovnatelne velke

primy prenos souboru z Delphi do FPC+Lazarus neni az tak mozny, protoze Lazarus pouziva sve direktivy a nazvy unit,
myslim ale, ze existuje nejaky konverter ... a je tam i nejaky mod vetsi kompatibility s Delphi

a jeste existuje jeden balik, ktery integruje FPC, Lazarus a CrossCompiling + hafo nastaveni, ale nezpomenu si, jak se to jmenuje

Offline rob.

  • Nováček
  • *
  • Příspěvků: 39
  • Karma: 0
Re:ObjectPascal na Linux a Mac OS
« Odpověď #4 kdy: 10-03-2013, 20:16:15 »
mozna mate na mysli
http://www.crossfpc.com/

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2665
  • Karma: 104
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:ObjectPascal na Linux a Mac OS
« Odpověď #5 kdy: 10-03-2013, 21:09:06 »
Nevíte někdo tedy o nějakém jiném překladači / doplňku k Delphi, který by uměl překládat Delphi projekty pro Mac OS (X) nebo Linux?

No novější Delphi umí rozumně kompilovat pro OS X. Jinak jedině ten FPC.
Embarcadero MVP - Czech republic

Offline Jura

  • Nováček
  • *
  • Příspěvků: 25
  • Karma: 2
Re:ObjectPascal na Linux a Mac OS
« Odpověď #6 kdy: 12-03-2013, 12:30:36 »
Ta obludná velikost jde rozumně zmenšit jednak pomocí zmiňovaného "strip", nebo přímo v nastavení (viz třeba http://suloweb.html.sk/lazarus-zmensenie-programov/) - vlastně je to podobné jako konfigurace debug / release v novějších Delphi.
Jinak s Lazarusem mám ambivalentní zkušenosti - na jednoduché věci prostě funguje a je to zadarmo, ale občas se vyskytne nějaká blbost, která člověka zbytečně naštve, naposledy jsem se třeba zasekl na FileExists, která měla problém s diakritikou v názvu souboru na win XP.

Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 223
  • Karma: 16
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:ObjectPascal na Linux a Mac OS
« Odpověď #7 kdy: 12-03-2013, 17:55:32 »
Tady je hlavne zasadni problem v tom, ze vzit "nejakou Delphi aplikaci" a jen tak ji prelozit pro jinou platformu, je naivni predstava! Pokud ma byt apliakce s rozumnym usilim portovatelna, pak je na to treba myslet nejlepe od sameho zacatku. Jsou proste konstrukce, ktere portovat nejdou. Dobre predstavitelny priklad - kdyz volas primo Win32API, windows messages, atd.

Proto je treba celou aplikaci od zacatku psat s vedomim, ze ji jednou budes chtit portovat. Jako nejlepsi cesta se mi osvedcilo snazit se izolovat platformove zavisly kod na jedno misto, abys pak mel pekne pohromade vsechno, co musis pro jinou platformu prepsat. V praxi pak prijdes na to, ze vlastne musis vyuzivat jen podmnozinu moznosti nejake platformy jen proto, ze vlastne potrebujes pouzivat jen ty veci, ktere existuji na vsech zamyslenych platformach. A to je omezujici.

V pripade FPC zakonite narazis na nekompatibility s Delphi. FPC neni Delphi! Je to dano i tim, ze FPC bylo multiplatformni davno pred tim, nez se to vubec zacalo resit u Delphi. A tak se vyvojari FPC dostali do mlyskych kamenu - na jedne strane potrebovali RTL, ktere bude pekne multiplatformni, ale zaroven potrebovali byt co nejvice kompatibilni s Delphi. A to neni nic snadneho!

Coz o to, u RTL se jim to docela povedlo, ale v pripade jejich obdoby VCL se narazilo na mnoho problemu, protoze proste jine platformy opravdu Win32API nemaji, a tak se mnoho veci chova 'trosku' jinak. A pri pohem preklopeni Delphi apliakce do Lazarusu se na tyhle nekompatibility narazi.

Proto chapu to rozcarovani tech, kteri chteli prevest Delphi projekt do lazarusu, chapu, ze narazili na problemy. Neni se cemu divit! Ale nedaval bych to Freepascalu za zle.

Jinak ve FPC psat jde. Ostatne, treba takovy 64-bitovy TotalCommander je (nebo alespon byl...) psany prave ve Freepascalu. I kdyz v tomto pripade to byla pravdepodobne znouzectnost.

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:ObjectPascal na Linux a Mac OS
« Odpověď #8 kdy: 19-03-2013, 20:07:57 »
Jinak s Lazarusem mám ambivalentní zkušenosti - na jednoduché věci prostě funguje a je to zadarmo, ale občas se vyskytne nějaká blbost, která člověka zbytečně naštve, naposledy jsem se třeba zasekl na FileExists, která měla problém s diakritikou v názvu souboru na win XP.

Na to je FileExistsUTF8 z fileutil.pas
Embarcadero Technology Partner

Offline Jura

  • Nováček
  • *
  • Příspěvků: 25
  • Karma: 2
Re:ObjectPascal na Linux a Mac OS
« Odpověď #9 kdy: 20-03-2013, 18:12:27 »
Oxo: Jo, to jsem nakonec taky zjistil. Byl to jenom příklad, takových nástrah na člověka vybafne víc, ovšem uznávám, že je to dost často tím, že na problematická místa Delphi už jsem si zvyknul a umím je řešit / vyhýbám se jim (třeba i podvědomě), kdežto u Lazaru mi nějaký čas zabere googlování (a často i hledání, v čem je vůbec problém).

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:ObjectPascal na Linux a Mac OS
« Odpověď #10 kdy: 21-03-2013, 06:59:24 »
Toto konkrétně není problém v Lazarusu, nýbrž v FPC, kde se prý vytrvale bránili předělat RTL pod windows na unicode. Právě proto má Lazarus všechny možné FileExistsUTF8, CreateDirUTF8, TFileStreamUTF8 apod. Ale prý už na tom pracují. Takže snad se někdy dočkáme :)

Z vlastní zkušenosti jsem se prostě musel Lazarusu zastat :) Zatím tam šlo vždycky všechno vyřešit, i když někdy trochu jinak než v Delphi. Ale vždycky to šlo udělat. Problémem je spíš, že k Delphi člověk najde více zdrojů. Ale Lazarus má taky svoje fórum, kde se člověk může zeptat.
Embarcadero Technology Partner