Autor Téma: Delphi 10 Seattle upgrade 1 a balíčky  (Přečteno 7457 krát)

Offline bohdan

  • Mladík
  • **
  • Příspěvků: 65
  • Karma: 2
    • Verze Delphi: 10.4.
Delphi 10 Seattle upgrade 1 a balíčky
« kdy: 03-12-2015, 14:31:56 »
Nově kompiluji program z Delphi XE6 na Delphi 10, který má balíčky a vyskytl se problém u kterého si nejsem jist jak řešit.
Při kompilaci to křičelo, že to vyžaduje bdertl. Prolezl jsem veškeré zdrojáky a nikde bdertl nebyl. Na internetu jsem se dočetl, že když se vyhodí z balíčků vcldbx, tak to přestane vyžadovat.
Opravdu to funguje, ale v helpu je, že součástí balíčku je  TDBLookupCombo, TPopupGrid, etc., kde je Vcl.StdCtrls.pas, kde je toho mnohem více.
Když tedy vcldbx vyhodím, tak mi všechny dll, exe bude obsahovat vcl.stdctrls.pas.
Napadají mě 3 řešení. 1vykašlat se na to a nechat to v těch exe(to se mi nelíbí) >:(,
                                  2.vyrobit si vlastní balíček, ve kterém vynechám dbertl (moc nelíbí, ale když lepší varianta není) :(
                                  3.stáhnu bde, pokud to ještě jde (to se mi nelíbí vůbec, protože ho nepotřebuji)  >:(
                                  4.stáhnu si lepší vcldbx bez bde, ale to jsem nikde neobjevil.  :-[
nebo  je ještě jiné řešení?

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3466
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #1 kdy: 03-12-2015, 14:36:51 »
Preklad svoji aplikace bez balicku vcldbx? Tj. unity ktere to normalne obsahuje v balicku se zacleni do EXE primo?

Melo by to byt Project Option - Packages - Runtime Packages, a tam jen napsat ktere balicky to ma pouzivat.

Aspon myslim.
Embarcadero MVP - Czech republic

Offline bohdan

  • Mladík
  • **
  • Příspěvků: 65
  • Karma: 2
    • Verze Delphi: 10.4.
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #2 kdy: 03-12-2015, 14:58:23 »
Podíval jsem se do Project analyzer a objevil, že stdctrls.pas se nachází v vcl230, takže je to v pořádku. Zbytečně jsem otravoval, ale podle helpu jsem to pochopil, že je tento pas v vcldbx.bpl, který nelze nyní použít.

Díky Radku za pomoc.

Offline Daniel_Andrascik

  • Guru
  • *****
  • Příspěvků: 575
  • Karma: 20
    • Verze Delphi: D2007, D10.4
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #3 kdy: 03-12-2015, 15:21:46 »
Svojho casu som sa tiez snazil pouzivat aplikaciu s runtime balickami. Vtedy sme este pouzivali vzdialenu spravu cez dialup linky s rychlostou okolo 18kbs a vtedy bolo zmansenie exe suboru vpodstate velkym prinosom. Ale postupne ako isiel cas ma vsetky tie zavislosti medzi balickami, ich verziami zacali skor unavovat (hlavne ked sme tu aplikaciu mali nasadenu kade tade po technologiach v celom ceskoslovensku, nedaj boze nieco aktualizovat, to potom sa furt spustila aj plejada aktualizacii balikov). Prinos s nastupom rychleho internetu vlastne uz nebol badatelny a tak som to zrusil.

Pouzivas baliky aj rozdelenie tvojho aplikacneho kodu do exe a viacerych bpl balikov, alebo to mas podelene len na exe a original "delphiacke" bpl baliky? Ak je tvoj ten druhy pripad, tak by som sa na to vykaslal. Baliky podla mna maju zmysel len ak chces rozdelit svoj valstny aplikacny kod do viacerych modulov. Otazka je ale na co? Koli aktualizaciam? S tym je oproti dll u balikov drobny problem. Vacsinou rekompilacia jedneho balika vyvola kaskadovu potrebu prekompilovat aj dalsie baliky a nezriedka aj samotne exe. Akonahle s v hociakej unite v baliku zmeni interface cast tak kompatibilita baliku skoncila pre vsetky ostaten baliky pripadne exac ktory tento balik vyuziva. Cize s tymto si robotu rozhodne nusetris skor presne naopak skomplikujes.

Z tohto pohladu su lepsie dll kniznice. U nich dokonca nie je problem pouzivat exe a dll kniznice skompilovane v uplne inych verziach delphi nehovriac o tom ze mozu byt skompilovane v uplne inych jazykoch. Jedine na co sa dll nehodia je praca s VCL. Ak sa chces vyhnut problemom je najlepsie mat VCL len v exaci a v dll mat len rozne ostatne rutiny a algoritmy nesuvisiace s VCL a celkovo s "user interface". Cize najlepsie je ak dll neobsahuju untiy Forms, StdCtrls a pod. Ja som sa po mnohych utrapach nakoniec rozhodol baliky zavriet a pouzivat full exace a pripadne sem tam dll kniznice obsahujuce len rozne funkcie s navratovymi hodnotami alebo ulohami nesuvisiacimi so vzhladom aplikacie

Offline bohdan

  • Mladík
  • **
  • Příspěvků: 65
  • Karma: 2
    • Verze Delphi: 10.4.
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #4 kdy: 03-12-2015, 16:21:29 »

Mám to tak, že balíčky od delphi vcl.bpl atd.  máme originál. Komponenty 3 stran mám ve vlastním balíčku s vlastním jedním společným balíčkem. Pak máme dll podle modulů, které jsou napojeny přímo na tyto balíčky a hlavní exe. Těch dll modulů je asi 30. Máš pravdu, že udržovat ty balíčky je trochu komplikované, ale mám napsaný vlastní kompilaci, takže před distribucí se všechno automaticky překompiluje. Na to máme i vlastní instalačku, která zajistí, že je nová verze všechno vymění. Umím měnit i jednotlivé dll, pokud je potřeba. Dneska bych to asi taky navrhl trochu jinak, ale tohle vznikalo v 1998 a tenkrát to vypadalo jako nejlepší řešení. Je to modulární, takže i zákazník si občas udělá svůj modul dll nebo exe. Máme dll závislé na balíčkách, takže pokud změníme bpl musíme překompilovat i dll na to navázané.I tak dneska nám dělají bpl,dll a exe cca 300 MB.

Offline Daniel_Andrascik

  • Guru
  • *****
  • Příspěvků: 575
  • Karma: 20
    • Verze Delphi: D2007, D10.4
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #5 kdy: 04-12-2015, 10:53:16 »
noo, tak to je hodne pekna aplikacia  ;) . Takto velku aplikaciu by som tiez delil do viacerych modulov, ale baliky by som asi koli tym zavislostiam vynechal. Ono ale je to trosku ine pokial sa aplikacii venujes zrejme ako hlavnej naplni tvojej prace. Tak ako hovoris tak si tie kompilacne procesy proste naskryptujes, rovnako aj tvorbu instalacky, pripadne aj tvorbu aktualizacnych balikov. V mojom pripade bola situacia taka ze som aplikaciu mal nasadenu asi na 15tich technologiach po ceskoslovensku (nasadzovane postupne niekolko rokov), ale inac sme sa danej aplikacii intenzivne nevenovali. S casu na cas prisla poziadavka na nove nasadenie pripadne na nejaky update, zmenu atd. Tak sme ju museli urobit a samozrejme ze sme potom neobisli vsetkych 15 technologii aby sme to zjednotili. Uz len preto pretoze ani tie technologie samotne neboli zjednotene, takze sa to ani vlastne nedalo. A tak nam po case vznikol taky speltenec. A pri kazdom servisnom zasahu mi kolidovali tie zavislosti tych balikov tak som to proste zrusil a uz som sa nikdy k balikom nevratil.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3466
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #6 kdy: 04-12-2015, 12:46:26 »
noo, tak to je hodne pekna aplikacia  ;) . Takto velku aplikaciu by som tiez delil do viacerych modulov, ale baliky by som asi koli tym zavislostiam vynechal.

Ja bych urcite nechal aspon zakladni balicky (vcl a tak) z Delphi. Ty se nemeni.

Mimochodem, zajimalo by mne delka buildu. Tj. pokud je to mozne tak cca počet řádku, čas a procesor (přepokládám že máš SSD).

Embarcadero MVP - Czech republic

Offline bohdan

  • Mladík
  • **
  • Příspěvků: 65
  • Karma: 2
    • Verze Delphi: 10.4.
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #7 kdy: 08-12-2015, 10:13:40 »
Mimochodem, zajimalo by mne delka buildu. Tj. pokud je to mozne tak cca počet řádku, čas a procesor (přepokládám že máš SSD).

Ty časy s počty dodám, buildy děláme na ssd diskách, ve virtuálních XP na Hyper-V, který má Intel I7 2.67 GHz.XP necháváme 670 MB RAM.Delphi stejně více při kompilaci nevyužijí.Máme virtualizované 3 procesory, protože úloha na vytvoření instalačky je ve vláknech. Nedělá se při tom jenom build delphi, ale vytváří se reinstalační databáze a help pro instalaci, ale to nemá na časy buildu delphi žádný vliv, protože je to jen spouštění SQL příkazů na SQL serveru, který je jinde.

Používám vcl balíčky, potom mám 1 balíček pro komponenty 3 stran a jeden vlastní balíček pro sdílení a potom jeden exe a zbytek jsou dll, které využívají všechny balíčky.

Offline bohdan

  • Mladík
  • **
  • Příspěvků: 65
  • Karma: 2
    • Verze Delphi: 10.4.
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #8 kdy: 16-12-2015, 14:17:43 »
Mimochodem, zajimalo by mne delka buildu. Tj. pokud je to mozne tak cca počet řádku, čas a procesor (přepokládám že máš SSD).

V příloze jsou slíbené časy buildu jednotlivých dll a exe.



Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7392
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #9 kdy: 16-12-2015, 15:09:31 »
V rámci relaxu som to opticky upravil :) 
Win11 64b, Delphi 11.3.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3466
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #10 kdy: 16-12-2015, 16:01:38 »
Jako je to zajimave. Mne to zajimalo z hlediska porovnani.

Muj momentalni hlavni projekt ma 941597 řádků a build je za 17s.
Fušuji do projektu který má 4,4M řádků a build trvá 2,5minuty  (vše na iCore 5, mimochodem upgradem z iCore3 jsem to stáhnul z 3.5 minuty).

Vím, že délka překladu je závislá mimo jiné na množství kruhových referencí v jednotkách a že není úměrná počtu řádků - viz i tvůje příklady. Já mám první příklad navržený celkem pěkně odspodu, minimum kruhových referencí, takže ten překlad je opravdu slušně rychlý IMHO.

A tak právě protože mne zarazil ten nepoměr, tak jsem se ptal na orientační časy u někoho jiného.

A navíc můj projekt je v Delphi XE, ten větší v D2007 (a myslel jsem, že D2007 je i o něco rychlejší).
Embarcadero MVP - Czech republic

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #11 kdy: 16-12-2015, 16:22:49 »
Muj momentalni hlavni projekt ma 941597 řádků a build je za 17s.
Fušuji do projektu který má 4,4M řádků a build trvá 2,5minuty  (vše na iCore 5, mimochodem upgradem z iCore3 jsem to stáhnul z 3.5 minuty).
To me prijde nejak silene dlouho...
Mam tu stary VCL projekt, ktery pravdepodobne nema vubec zadne circular reference, nepouziva balicky, ksicht hodne vnorenych/dedenych framu.  Sklada ze 3. casti a radkovy prekladac D2007 na Core i5 @ 3.5 GHz se 16 GB RAM, zdrojovky na substitutnutem HD,
to preklada:

service548 884 radku2.09 s
VCL console k service816 458 radku2.77 s
VCL desktop client979 5423.47 s


Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3466
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #12 kdy: 16-12-2015, 16:33:51 »

service548 884 radku2.09 s
VCL console k service816 458 radku2.77 s
VCL desktop client979 5423.47 s


To jako build  nebo compile? Jestli build, tak to je teda rachot.
Embarcadero MVP - Czech republic

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #13 kdy: 16-12-2015, 16:59:33 »
To jako build  nebo compile? Jestli build, tak to je teda rachot.
Build, desktop klient treba s timhle nastavenim:

/B
/CG
/GD
/E..\..\DBG\BIN
/I..\..\INC;..\..\LIB\PAS\OWN\SOAP;..\..\LIB\PAS\3RD\ABBREVIA\SOURCE;..\..\LIB\PAS\3RD\JCL\SOURCE;..\..\LIB\PAS\3RD\JCL\SOURCE\INCLUDE;..\..\LIB\PAS\3RD\JCL\SOURCE\COMMON;..\..\LIB\PAS\3RD\JCL\SOURCE\WINDOWS;..\..\LIB\PAS\3RD\DEC\SOURCE;..\..\LIB\PAS\3RD\BALDWIN\HTMV\Package;..\..\LIB\PAS\3RD\REGEXPR\Source;..\..\LIB\PAS\3RD\SYNAPSE\SOURCE\LIB;..\..\LIB\PAS\3RD\GETOPT;..\..\LIB\PAS\3RD\DAUD_PNGImage;..\..\LIB\PAS\3RD\DAUD_PngImage;..\..\LIB\DLL\3RD\ZIP;..\..\LIB\PAS\3RD\VIRTUALTREE\SOURCE;..\..\LIB\DLL\3RD\ODBCE\SOURCE;..\..\LIB\DLL\3RD\ZEOS\SRC\core;..\..\LIB\DLL\3RD\ZEOS\SRC\component;..\..\LIB\DLL\3RD\ZEOS\SRC\dbc;..\..\LIB\DLL\3RD\ZEOS\SRC\parsesql;..\..\LIB\DLL\3RD\ZEOS\SRC\plain
/L
/NV:\TMP
/O
/Q
/U..\..\LIB\PAS\OWN\SOAP;..\..\LIB\PAS\3RD\ABBREVIA\SOURCE;..\..\LIB\PAS\3RD\JCL\SOURCE;..\..\LIB\PAS\3RD\JCL\SOURCE\INCLUDE;..\..\LIB\PAS\3RD\JCL\SOURCE\COMMON;..\..\LIB\PAS\3RD\JCL\SOURCE\WINDOWS;..\..\LIB\PAS\3RD\DEC\SOURCE;..\..\LIB\PAS\3RD\BALDWIN\HTMV\Package;..\..\LIB\PAS\3RD\REGEXPR\Source;..\..\LIB\PAS\3RD\SYNAPSE\SOURCE\LIB;..\..\LIB\PAS\3RD\GETOPT;..\..\LIB\PAS\3RD\DAUD_PNGImage;..\..\LIB\PAS\3RD\DAUD_PngImage;..\..\LIB\DLL\3RD\ZIP;..\..\LIB\PAS\3RD\VIRTUALTREE\SOURCE;..\..\LIB\DLL\3RD\ODBCE\SOURCE;..\..\LIB\DLL\3RD\ZEOS\SRC\core;..\..\LIB\DLL\3RD\ZEOS\SRC\component;..\..\LIB\DLL\3RD\ZEOS\SRC\dbc;..\..\LIB\DLL\3RD\ZEOS\SRC\parsesql;..\..\LIB\DLL\3RD\ZEOS\SRC\plain
/RRES;..\..\LIB\PAS\OWN\SOAP;..\..\LIB\PAS\3RD\ABBREVIA\SOURCE;..\..\LIB\PAS\3RD\JCL\SOURCE;..\..\LIB\PAS\3RD\JCL\SOURCE\INCLUDE;..\..\LIB\PAS\3RD\JCL\SOURCE\COMMON;..\..\LIB\PAS\3RD\JCL\SOURCE\WINDOWS;..\..\LIB\PAS\3RD\DEC\SOURCE;..\..\LIB\PAS\3RD\BALDWIN\HTMV\Package;..\..\LIB\PAS\3RD\REGEXPR\Source;..\..\LIB\PAS\3RD\SYNAPSE\SOURCE\LIB;..\..\LIB\PAS\3RD\GETOPT;..\..\LIB\PAS\3RD\DAUD_PNGImage;..\..\LIB\PAS\3RD\DAUD_PngImage;..\..\LIB\DLL\3RD\ZIP;..\..\LIB\PAS\3RD\VIRTUALTREE\SOURCE;..\..\LIB\DLL\3RD\ODBCE\SOURCE;..\..\LIB\DLL\3RD\ZEOS\SRC\core;..\..\LIB\DLL\3RD\ZEOS\SRC\component;..\..\LIB\DLL\3RD\ZEOS\SRC\dbc;..\..\LIB\DLL\3RD\ZEOS\SRC\parsesql;..\..\LIB\DLL\3RD\ZEOS\SRC\plain

A napr. rozdil, jestli tomu smazu vsechny *.dcu z temporary folderu nebo je tam necham je minimalni. A to je ten temporary folder pro *.dcu na substitutnutem HD. Docela by bylo zajimave, jak by se to chovalo, kdyby to bylo vsechno na SDD...

Jinak jeste jednu charakteristiku to ma: vsechny vlastni zdrojovky jsou v .dpr v uses vypsany soubor po souboru vcetne relativni cesty k nim - krome par knihoven 3. stran to zadne soubory na cestach nehleda. To by taky mohlo vliv na rychlost, ale tezkou rict, jaky...

Offline bohdan

  • Mladík
  • **
  • Příspěvků: 65
  • Karma: 2
    • Verze Delphi: 10.4.
Re:Delphi 10 Seattle upgrade 1 a balíčky
« Odpověď #14 kdy: 17-12-2015, 09:39:27 »
Muj momentalni hlavni projekt ma 941597 řádků a build je za 17s.
Fušuji do projektu který má 4,4M řádků a build trvá 2,5minuty  (vše na iCore 5, mimochodem upgradem z iCore3 jsem to stáhnul z 3.5 minuty).

Vím, že délka překladu je závislá mimo jiné na množství kruhových referencí v jednotkách a že není úměrná počtu řádků - viz i tvůje příklady. Já mám první příklad navržený celkem pěkně odspodu, minimum kruhových referencí, takže ten překlad je opravdu slušně rychlý IMHO.

A navíc můj projekt je v Delphi XE, ten větší v D2007 (a myslel jsem, že D2007 je i o něco rychlejší).
Asi před 4 roky, když jsem přecházel z delphi5 na delphixe, tak jsem překládal jedny zdrojáky v obou verzích a delphi5 bylo minimálně o 1/3 rychlejší.(komponenty 3. stran byly sice v balíčkách, ale pro nové delphi skoro 2x větší, takže to porovnání není úplně přesné).
Ano ve zdrojácích jsou kruhové reference. U balíčku mám všechny uses v dpk u jednotlivých dll to někde neplatí.
Musím uznat, že skoro milion za 17s je velice slušné.

Je třeba k tomu dodat, že kompilace se dělá na zvláštním počítači, kde se veškeré zdrojáky před kompilací vymažou a celé se to nakopíruje z jiného počítače, bez dcu a dcp.

service548 884 radku2.09 s
VCL console k service816 458 radku2.77 s
VCL desktop client979 5423.47 s



To by mě zajímala velikost výsledného souboru, který to dokáže vytvořit za 3.47 s. na obyčejných discích.
Schválně jsem si udělal jeden build v IDE Delphi 10 na malém prográmku, kde je 1 jednoduchý devexpress grid a na 624559 řádků to trvá 16 s. Většina řádků je devexpress a 4 s není možné dosáhnout.
Podle mě jestli v tom nehraje roli taky počet pas souborů, jinak si to nedovedu vysvětlit.