1

Téma: Kompatibilita s verzí 4.3

Dobrý den,
bohužel jsem se znovu setkal s problémem při ukládání desky z Formiky 4.4P99 do verze 4.3.
Poslal jsem Vám soubor vytvořený ve verzi P99 a uložený jako text a z něj uložený soubor do verze 4.3.
Vysledoval jsem následující:
Po uložení desky do formátu 4.3 a  znovu otevření ve verzi P99 jsem
zjistil, že čáry ve vrstvě 17 se přesunuly do vrstvy 16.
Výsledný soubor nejde otevřít ve verzi 4.3 - hláška  "Line 341:Value out
of range".
Prosím Vás, zjistěte jestli je problém z naší strany nebo je to jiná chyba.
Děkuji.
Hezký den

Jaroslav Malíř

2

Re: Kompatibilita s verzí 4.3

Dobrý den, ukládání desek ve formátu verze 4.30 může vést k různým problémům, jejichž společnou příčinou je, že parametry verze 4.40 mají v několika směrech širší rozsah (viz též www.formica.cz/layout440.html#20).  V zásadě platí to, že desku vytvořenou ve verzi 4.30 lze otevřít ve verzi 4.40, tam zapsat zpět do formátu 4.30, a pak opět otevřít ve verzi 4.30; jakmile však ve verzi 4.40 něco přidáte, poslední z těchto kroků pochopitelně může vést k chybě.

Pokusím se shrnout, jak jsou jednotlivé body z výčtu www.formica.cz/layout440.html#20 ošetřeny:

1) Vrstvy.   Při převodu z verze 4.30 se vkládají 4 vrstvy mezi původní vrstvy 2 a 3, a další 4 mezi 12 a 13.  Ve verzi 4.40 se tudíž při zápisu do starého formátu čísla vrstev zpětně transformují dle této tabulky:

const LayerTable: array [0..MaxLayer] of integer =
  { 0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23}
  ( 0,  1,  2,  2,  2,  3,  3,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 12, 12, 13, 13, 13, 14, 15);

Např. z vrstev 16, 17 i 18 verze 4.40 se tak ve verzi 4.30 stane vrstva 12, a v případě návratu do 4.40 vrstva 16, což odpovídá výsledku, který zmiňujete.  (Při řešení zpětné kompatibility jsem měl v zásadě na výběr mezi zahozením všech objektů na vrstvách 3 až 6 a 17 až 20 nebo tímto přepočtem, jemuž jsem dal přednost jakožto méně destruktivnímu.)

2) Typy pájecích bodů a spojových čar.   Verze 4.40 má obou dvojnásobně; jakmile využijete něco z druhé poloviny jejich tabulek, dostanou se do formátu 4.30 čísla mimo povolené rozsahy.  Právě to se stalo i Vám -- k citované chybě na řádce 341 stačí mít takový typ nadefinovaný v tabulce (viz obrázek zcela dole), na desce ani nemusí být použit.

3) Počty objektů.   Ty mohou být ve verzi 4.40 až několikanásobně vyšší.  Samozřejmě při zápisu do formátu verze 4.30 těžko mohu přespočetné objekty zahodit (tím spíše ne, že verze 4.30 se prodávala v několika "velikostech").  Zde asi na problém nejčastěji narazíte u počtu prvků, který díky rozlévání mědi bývá na deskách verze 4.40 podstatně vyšší.  (Skutečně, pokud ve Vámi zaslaném souboru řádku 341 prostě smažu, ve verzi 4.30 čtení desky skončí překročením max. počtu prvků.)

4) Znakové sady.   Verze 4.30 užívá Windows 1250, verze 4.30 starobylou sadu bratří Kamenických, která obsahuje pouze češtinu, slovenštinu a němčinu.  Z toho důvodu nezbývá, než ostatní znaky při převodu nahradit podtržítkem (viz ukázka).  Totiž, kdybych si s tím byl více vyhrál, mohl jsem místo toho z písmen ostatních abeced jen odstranit diakritiku; to je ale maximum, co by šlo udělat.

http://www.formica.cz/files/forum/format430-2.png

Shrnuto, formát verze 4.30 tedy znamená opravdu jen formát.  Z podstaty věci nelze zaručit, že soubor v konkrétním programu Layout verze 4.30 opravdu půjde bezchybně otevřít.  Sice bych byl mohl při zpětném převodu (poměrně pracně) testovat všechny meze a vypisovat varování, jednodušší však zřejmě bude si soubor zapsaný do formátu verze 4.30 vždy alespoň zkusit otevřít v její stále dostupné demonstrační verzi (www.formica.cz/files/form430w.zip).

http://www.formica.cz/files/forum/format430-1.png