Forum Delphi.cz

Delphi => Obecné => Téma založeno: KarelHorky 27-01-2021, 12:41:17

Název: Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: KarelHorky 27-01-2021, 12:41:17
Zdravím všechny!
Narazil jsem na problém s přidáním formuláře do projektu (dpr) v Delphi XE6. Před přidáním formuláře šel projekt bez chyb zkompilovat a spustit. Pak jsem přidal jeden úplně prázdný form a při kompilaci se objeví chyby E2029, E2026, E2066, viz. obrázek. Formulář odeberu z projektu a zase jde bez chyb zkompilovat. Zkusil jsem přidat i úplně jiný formulář a zase stejné chyby kompilace.
Mám takovou teorii, že řádek v projektu, který obsahuje všechny formuláře a unity (začíná uses nahoře a končí středníkem po posledním formuláři), je příliš dlouhý. Při načtení se část na konci odřízne a pak tam chybí středník atd.
Setkal jste se s tím někdo? Co s tím?
Projekt je rozsáhlý, uses končí na řádku 413, je tam 197 formulářů, 4 frame a zbytek jsou unity.
K.
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: Stanislav Hruška 27-01-2021, 13:13:19
Aby si mohol skontrolovať svoju teóriu: Skopíruj si to do Wordu a pozri sa na počet znakov. Posúdiť -> Počet slov. Hranica pre string je 65 xxx znakov. xxx - nepamätám si hodnotu.
Zaujímavá je prvá chyba. Ďalšie už nie.
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: Radek Červinka 27-01-2021, 13:40:51
Projekt je rozsáhlý, uses končí na řádku 413, je tam 197 formulářů, 4 frame a zbytek jsou unity.
Mam tu projekt kde uses v dpr konci na radku 690.

Spise bych vzal CTRL+A, zkopiroval do schranky, smazal z editoru, vlozil do notepadu, vybrat vse, zkopirovat a vlozit, zpet.
Nebo proste dpr otevri v notepadu a podivej se zda mas spravne konce radku, tj. zda uses konci taky na radku 413, resp. udelej malou zmenu a v tom notepadu to uloz.
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: pepak 27-01-2021, 13:44:37
Každopádně 197 není žádný velký počet formulářů. Mám v projektu víc než 900 formulářů a poradí si s tím i staré Delphi 5. V modernějších Delphi mám projekty s 800+ formuláři a fungují bez problémů.
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: JaroB 27-01-2021, 14:09:05
V některých případech dochází k poškození DPR souboru (např. shoda jmen dvou formulářů).
Někdy je nutné projekt v IDE zavřít a formulář vložit ručně přes extrení editor/notepad (mám v projektu asi 800 formulářů a funguje to)
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: KarelHorky 27-01-2021, 14:15:51
Takže 200 formů není moc. To je dobrá informace.
Ale problém trvá. Zavřel jsem projekt v Delphi. Otevřel jsem dpr v PSPadu, drobně změnil, uložil. Pak otevřel projekt v Delphi, ale kompilace končí chybou. Zase zavřel v Delphi, otevřel v Notepadu, změnil, uložil. Kompilace v Delphi zase chyba.
Když zapoznámkuju řádky, kde je chyba, tak se chyba objeví až na následujících řádcích. Třeba až na Application.Initialize; A to už zapoznámkovat nejde.
K.
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: Stanislav Hruška 27-01-2021, 14:34:38
Tak vymaž všetky súbory, ktoré sa môžu, kde je dpr. Najprv si ich zálohuj. Okrem *.dpr, *.dproj a *.res všetky.
Už mi to pomohlo. Bol to problém práve s dpr.
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: JaroB 27-01-2021, 15:28:27
Je možná potřeba nahlédnout do seznamu formulářů v souboru dproj a vymazat ho. Tam občas bývaly problémy.
Název: Vyřešeno - Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: KarelHorky 27-01-2021, 15:30:47
Problém je vyřešený, i když je to nepochopitelné.
Vytvořil jsem úplně nový texťák dpr, do něj přes schránku zkopíroval obsah starého. Kompilace stále chyba. Zkoušel jsem zapoznámkovat všechno, až na to nejnutnější (Application.*). A až když jsem zapoznámkoval ty konstanty a direktivu kompilátoru SetPEFlags, najednou to zkompilovat šlo. Postupně jsem odpoznámkovával a nakonec byla nějaká chyba v té direktivě. Když jsem direktivu "narovnal" na jeden řádek, kompilace prošla bez chyb. A to jsem se nejdřív díval v PSPadu, jestli tam nemám nějaké netisknutelné znaky. Teď jsem se díval ještě v Hexa na zálohu a je tam jen CRLF.
Díky všem za rady!
K.
Název: Re:Vyřešeno - Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: Jirka 27-01-2021, 21:43:39
Vytvořil jsem úplně nový texťák dpr, do něj přes schránku zkopíroval obsah starého.

Použítím pouze schránky nemuselo dojít k odstranění "závadných" znaků
IMHO spolehlivější by bylo  vložit do poznámkového bloku  a pak CTRL+A a CTLR-C
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: KarelHorky 28-01-2021, 08:48:22
Díval jsem se v Hexa editoru na dpr, který jsem si před čachry zazálohoval, a nejsou tam žádné podivné znaky. Jen CRLF. Proto mi přijde nepochopitelné, proč projekt se 196 formy jde zkompilovat a po přidání libovolného dalšího formu už nejde. A po odebrání nového formu zase jde zkompilovat bez chyb. A pak stačí direktivu zalomenou na 2 řádky narovnat do 1 řádku a už jde kompilace i s přidaným formem.
Ale už to považuji za uzavřené.
K.
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: František 28-01-2021, 10:57:06
nemá na to vplyv uloženie v ANSI vs. UTF-8?
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: pf1957 28-01-2021, 11:40:52
pak stačí direktivu zalomenou na 2 řádky narovnat do 1 řádku a už jde kompilace i s přidaným formem.
Ja bych videl problem v tom zalomeni direktivy na vice radku - to by me nikdy nenapadlo udelat a buh vi, jak to presne ma prekladac nadefinovane - BNF se mi nikde nepodarilo najit.
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: JaroB 28-01-2021, 14:26:40
Vyzkoušel jsem něco podobného v Seattle a tam prošlo rozdělení na víc řádků.
použil jsem direktivy
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP or IMAGE_FILE_NET_RUN_FROM_SWAP}
{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}

ale i tak je DPR citlivý na chyby při psaní.
Pokud píšu kód rovnou do DPR a udělám syntaktickou chybu, nebo mi něco nepodstatného ve výrazu chybí, dojde k chybě a DPR se poškodí (chybí první sloupec, slejou se řádky, zmatou středníky nebo vypadne uses). Nestává se to vždycky. Myslím si, že to nejčastěji nastává po chybě uvolňování paměti, kdy i podle správce prostředků IDE dosáhne na pomyslný paměťový strop a vypadnou určité funkce, např. nejde v textu přepsat vybraný text textem ze schránky, nebo nelze myší správně vybrat sloupec (aspoň mně se tak stává).
V tomto případě je nejlepší uložit rozdělanou práci a restartovat IDE.
U Delphi 2007 navíc manipulace s uses v případě ručního editování či dopisování ještě neexistujících unit nebo unit, které obsahují (nějakou) chybu, zaneřádí DPROJ xml soubor výpisem zkracujících se názvů souborů. DPROJ se musí opravit ručně, z IDE to nejde.
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: KarelHorky 28-01-2021, 15:06:02
Vyzkoušel jsem něco podobného v Seattle a tam prošlo rozdělení na víc řádků.
použil jsem direktivy
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP or IMAGE_FILE_NET_RUN_FROM_SWAP}
Direktivu mám stejnou.
Mám ještě několik projektů, kde to je zalomené a nedělá to problém. Ani v postiženém projektu to do včera nedělalo problém. Je to tam minimálně několik let. A po odstranění přidaného formu to taky nedělalo problém. Proto je mi to nepochopitelné.
K.
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: PetrB0 28-01-2021, 17:59:01
Mě občas udělá doplňování kódu to, že mi sice vytvoří např. definici funkce v objektu, ale narve ji do části jiné funkce, čímž to celé totálně domrší. Nemám přesně vysledované kdy se to stane, ale už jsem to několikrát viděl. A bylo jedno, jestli byla unita původně syntakticky správně nebo ne.
Třeba to je něco podobného.

Pb
Název: Re:Delphi XE6 - je omezení počtu formulářů v projektu?
Přispěvatel: JaroB 28-01-2021, 20:44:24
Tento problém nastává, je-li kód určen pro různé verze Delphi a je zaneřáděný velkým množstvím direktiv kompilátoru. IDE je zmatené a přidává kód různě. Stejně blbě se chová i codefolding, pokud jsou namixovány direktivy s regiony. Stává se mi to taky, já to řeším ručním přidáním kódu.