Aktualizováno 15.07.10 11:02:31
*******************************
**************
14.07.2010
U UT položek dopracovány funkce rp, pa, ce, up, lo a cu.
Na webu je www.redap.cz/dokchm.zip obsahující jakýsi pokus převést DOK56.XHL
do DOK56.CHM. Po vybalení nastartovat
start dok56.chm
Největší problém přestavoval žertík v hhw.exe kdy chodící sekce:
<li> <object type="text/sitemap">
<param name="Name" value="Vznik a charakteristika REDAPu">
<param name="Local" value="dok56.htm#104">
</object></li>
se promění v nechodící po grafické úpravě:
<li>
<object type="text/sitemap">
<param name="Name" value="Vznik a charakteristika REDAPu">
<param name="Local" value="dok56.htm#104">
</object>
</li>
Kvůli tomu jsem se málem pověsil!
V příručce mám ještě (kromě jiného) problém s tabulkami v textu. Jde mně tedy nyní o to,
zda v tom vidíte přínos pro Vaši práci. V podstatě je to jakási reakce
na školení v Plzni, kdy se diskutovala možnost podpory generování elektronických
příruček kromě typu XHL i typu CHM.
**************
04.07.2010
Na webu 1. verze dokumentace k WR56. Je nutno si stáhnout i poslední stav WR56, jinak
se bude stale odkazovat na DOK55.xhl
**************
Na základě námětu ze školení je doplněno zadavání UTF znaků ještě o:
<Pause>+<písmeno velké/malé>
objeví se menu s nabídkou všech modifikací daného písmene - uživatel zvolí, jakou diakritiku
chce u písmene mít.
**************
28.06.2010
Problém převodu položky UT -> RE v aritmentice řešen tak, že UTF znaky, které nejsou v KOI
se převedou jako "odčeštěné". Např. z s tečkou jako pouhé z.
**************
18.06.2010
Při vytažení jednpho souboru ze zálohy .zpp
pip c:\tmp\\old\pers.txt=p.zpp/dc
se pokušel PIP rozbalit pers.txt do adresáře c:\tmp\old\. Nyní ve wr56 po kritice jednoho
uživatele do adresáře c:\tmp\. Protože se jedná o hrubou nekompatibilitu na předchozí
stav, prosím, ozvěte se, pokud Vám to vadí. Zatím se mně zdálo, že to nikdo nepoužívá.
**************
16.06.2010
Minulý pátek na mne padla žaludeční chřipka a nemohu se z ní vyhrabat. Každý
den přicházím o 1 kg váhy. Proto prosím o strpení s řešením Vašich připomínek.
**************
Příspěvek od ing. Petráše
Dobrý den,
narazil jsem na popis hodnot pro přepínač /A u AcrobatReaderu, kterým se
dá ovlivňovat co má Acrobat zobrazovat.
Třeba se to může někomu hodit.
http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf#page=5
Příklad:
"c:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe" /A
"page=2&zoom=25&toolbar=0&navpanes=0" d:\klient\tratec\ht\test.pdf
Se srdečným pozdravem
Petr Petráš
**************
PRO odjakživa pro TT fonty ignorovalo výplňový znak. Pro ekvidistantní
fonty (Courier) to nebylo nutné. Proto jsem to připustil a rozchodil ve WR55.
Nicméně se ozvali uživatelé, kterým tato inovace vadila. Proto je nyní
výplňový znak u TT ekvidistantních na nový přepínač vz.
**************
08.06.2010
Na školení v Plzni zanělo přání na plastické rámečky u příkazů typu .xyzr
a .vsn. To je dlouhodobě splněno, pouze v dokumentaci vypadl režim _mode r3.
Přidal jsem řezim _mode ro:x - řadkový ofset navýšit o x pixelů u nově
vytvářených oken.
Potom:
_mode rm:1,r3,ro:10.
.win1(10,10,4,60,'$c06','$c07',"Nahoře","Dole")
.xyzr abc,20,1,1,"nazdar"
.vsn 2,1,"Pozdrav: ",abc,10n
.read $key
řádkuje v okně s ofsetem výška fontu+10 pixelů.
**************
07.06.2010
Upravena funkce Sift+Home nebo End v editaci řádku, tak aby i v případě
prázdného bloku, označila text od kurzoru do konce resp. začátku řádku.
**************
06.06.2010
Na základě školení v Plzni vytvořena funkce HTM(<Sprom>) nebo HTM(<Memo>),
která nahrazuje znaky <>'"&€ odpovídajícím transkripcemi v htm - <>...
Dále v TBN přepínač EX kromě možnosti EX:1 přidána i možnost EX:2, kdy
se provádí jakoby funkce HTM() na všechny položky typu RE, RV a TX.
**************
02.06.2010
Zprovozněny dynamické fonty v TBN i pro výstup do PDF - WR55 a WR56.
**************
Podařilo se v nápovědě protlačit ukládání označeného bloků do clipboardu
i přes <Ctrl C> (dosud <Ctrl K>).
**************
Ukládání do clipboardu ve WR56 nefungovalo ve vztahu k EDI, protože
se neukládalo v UTF kódu. Opraveno.
**************
Příkaz .define rozšířen na:
.define <Seznam> platí <Seznam>
.define+ <Seznam> platí předchozí a <Seznam>
.define- <Seznam> platí předchozí po vypuštění <Seznam>
Pokud některý prvek <Seznam> v předchozím seznamu neexistuje,
nepovažuje se to za chybu.
Původní licence, že se seznam po návratu ze zanořeného CMD uvede
do původního stavu se ruší.
**************
01.06.2010
Na základě závěru ze školení v Plzni provedena revize příkazů
#ifdef/#else/#endif
Povinnost symbolického vyznačení vyznačení hierarchie zanoření se ruší.
Nutnost použití příkazu #define ke spuštění vyhodnocování #ifdef se ruší.
Místo #ifdef !UCTO se píše #ifndef UCTO. Původní příklad:
.define NEDEF,MZDY
#ifdef !NEDEF
;Tak tohle ne
#ifdef !NEDEF/UCTO
;Tak tohle ne
#else !NEDEF/!UCTO
;Tak tohle ne
#endif !NEDEF/!UCTO
#else NEDEF
;Tohle ano
#ifdef NEDEF/!MZDY
;Tak tohle ne
#else NEDEF/MZDY
;Tohle ano
#endif NEDEF/MZDY
;Tohle ano
#endif NEDEF
;koncime NEDEF
Je nyní ve tvaru:
.define NEDEF,MZDY
#ifndef NEDEF
;Tak tohle ne
#ifdef UCTO
;Tak tohle ne
#else
;Tak tohle ne
#endif
#else
;Tohle ano
#ifndef MZDY
;Tak tohle ne
#else
;Tohle ano
#endif
;Tohle ano
#endif
;koncime NEDEF
Dále se zavádí nový prvek #if(<Lvýraz>)/#else/#endif a #ifnot(<Lvýraz>)/#else/#endif
n=2
#if(n && n==2)
;Pravda
#else
;Nepravda
#endif
#ifnot(n && n==2)
;Nepravda
#else
;Pravda
#endif
Tj. <Lvýraz> je nějaký logický výraz REDAPu.
Příkazy #ifdef/#indef/#if/#ifnot se mohou do sebe vnořovat.
**************
Správně nefungoval singulární případ nového nápovědného menu v případě
RDA o jediné větě - plocha MR.
Na základě závěrů školení v Plzni <Ctrl F> v editoru rozšířeno i na
dvojice
" "
[ ]
< >
.btb .etb
.bpl .epl
#ifdef #else
#ifndef #else
#if #else
#ifnot #else
#else #endif
**************
31.05.2010
**************
27.05.2010
Vyskytl se problém zdánlivě související s antivirem ESET. Od jistého okamžiku
všechny soubory vznikající ve WR byly read_only. Po konzultaci se zástupci
ESETu se ukázalo, že se driver tiskárny pere se spoolerem stále dokola a
nefunkčnost souborového systému nastala až při prvním obrácení na síťovou
tiskárnu Sharp (bez originálního driveru). Navíc při tisku na jinou tiskárnu
v síti se nic nepokazilo.
Napadlo mně uvolnit směrník na vybranou tiskárnu po dokončení jakéhokoliv
tisku. Původní koncepce ing. Rytycha byla, otevřít vybranou tiskárnu
při náběhu WR. Po několika letech, když nastal problém se systémy
bez jakékoliv tiskárny, jsem změnil koncepci tak, že se tiskárna otevřela
při prvním použití.
Uzavření tiskárny po každém tisku problém na základě zprávy od ing. Polidy
z Ekosoftu Krásná Hora problém odstranilo. Zrealizováno ve WR56.
Včera mně ing. Jirsa poslal nefunkční prográmek ATP s memopoložkami v relaci.
Ukázalo se, že nejde
rel1.memo@=rel1.memo+rel0.ret|"||"
odjakživa funguje pouze
rel1.memo@=rel1.memo+"'rel0.ret'"
a operace vynechání koncových mezer memo | nebyla zrealizována vůbec.
Nefungovalo správně ani .test rel1.memo - vracelo vždy původní délku
z věty na disku - chybělo návrácení rozpracované délky memo
Vše jsem ve WR56 rozchodil.
**************
20.05.2010
Pracovní postup na domácí chléb typu WR56 prezentovaný na školení
najdete na www.redap.cz/chleb.zip
**************
12.05.2010
Pro různé systémové cesty Windows je nyní k dispozici příkaz:
.get_syspath <Sprom>,<Literál>
kde literál může být:
.get_syspath cesta,"temp"
;temp='cesta'
.get_syspath cesta,"programs"
;programs='cesta'
.get_syspath cesta,"desktop"
;desktop='cesta'
.get_syspath cesta,"favorites"
;favorites='cesta'
.get_syspath cesta,"fonts"
;fonts='cesta'
.get_syspath cesta,"personal"
;personal='cesta'
.get_syspath cesta,"program_files"
;program_files='cesta'
.get_syspath cesta,"startup"
;startup='cesta'
.get_syspath cesta,"windows"
;windows='cesta'
.get_syspath cesta,"21"
;Šablony='cesta'
U mne to dá:
;temp=E:\Documents and Settings\Jan Santl\Temp
;programs=E:\Documents and Settings\Jan Santl\Nabídka Start\Programy
;desktop=E:\Documents and Settings\Jan Santl\Plocha
;favorites=E:\Documents and Settings\Jan Santl\Oblíbené položky
;fonts=E:\WINDOWS\Fonts
;personal=E:\Documents and Settings\Jan Santl\Dokumenty
;program_files=E:\Program Files
;startup=E:\Documents and Settings\Jan Santl\Nabídka Start\Programy
;windows=E:\WINDOWS
;Šablony=E:\Documents and Settings\Jan Santl\Šablony
Poslední možnost s číslem je možno použít pro obecné volání
API funkce, kde smysluplné je volání 0-60.
Interval hodnot není spojitý, tj. ne každé číslo má nějaký význam.
U mne to dává:
;0=E:\Documents and Settings\Jan Santl\Plocha
;2=E:\Documents and Settings\Jan Santl\Nabídka Start\Programy
;5=E:\Documents and Settings\Jan Santl\Dokumenty
;6=E:\Documents and Settings\Jan Santl\Oblíbené položky
;7=E:\Documents and Settings\Jan Santl\Nabídka Start\Programy\Po spuštění
;8=E:\Documents and Settings\Jan Santl\Recent
;9=E:\Documents and Settings\Jan Santl\SendTo
;11=E:\Documents and Settings\Jan Santl\Nabídka Start
;13=E:\Documents and Settings\Jan Santl\Dokumenty\Hudba
;14=E:\Documents and Settings\Jan Santl\Dokumenty\Filmy
;16=E:\Documents and Settings\Jan Santl\Plocha
;19=E:\Documents and Settings\Jan Santl\Okolní síť
;20=E:\WINDOWS\Fonts
;21=E:\Documents and Settings\Jan Santl\Šablony
;22=E:\Documents and Settings\All Users\Nabídka Start
;23=E:\Documents and Settings\All Users\Nabídka Start\Programy
;24=E:\Documents and Settings\All Users\Nabídka Start\Programy\Po spuštění
;25=E:\Documents and Settings\All Users\Plocha
;26=E:\Documents and Settings\Jan Santl\Data aplikací
;27=E:\Documents and Settings\Jan Santl\Okolní tiskárny
;28=E:\Documents and Settings\Jan Santl\Temp
;31=E:\Documents and Settings\All Users\Oblíbené položky
;32=E:\Documents and Settings\Jan Santl\Local Settings\Temporary Internet Files
;33=E:\Documents and Settings\Jan Santl\Cookies
;34=E:\Documents and Settings\Jan Santl\Local Settings\History
;35=E:\Documents and Settings\All Users\Data aplikací
;36=E:\WINDOWS
;37=E:\WINDOWS\system32
;38=E:\Program Files
;39=E:\Documents and Settings\Jan Santl\Dokumenty\Obrázky
;40=E:\Documents and Settings\Jan Santl
;41=E:\WINDOWS\system32
;43=E:\Program Files\Common Files
;45=E:\Documents and Settings\All Users\Šablony
;46=E:\Documents and Settings\All Users\Dokumenty
;47=E:\Documents and Settings\All Users\Nabídka Start\Programy\Nástroje pro správu
;48=E:\Documents and Settings\Jan Santl\Nabídka Start\Programy\Nástroje pro správu
;53=E:\Documents and Settings\All Users\Dokumenty\Hudba
;54=E:\Documents and Settings\All Users\Dokumenty\Obrázky
;55=E:\Documents and Settings\All Users\Dokumenty\Filmy
;56=E:\WINDOWS\resources
;59=E:\Documents and Settings\Jan Santl\Local Settings\Data aplikací\Microsoft\Zápis na CD
**************
10.05.2010
Problém návratu na položky ve VST je řešen pomocí globálního nebo lokálního LF.
Pokud bychom chtěli připustit návrat např. na všechny položky s výjimkou
jediné, nelze použít globální LF a je nutno použít mnohokrát lokální LF.
Proto je nyní možno použít globální LF a u položek, na které se nelze vracet
použijeme lokální lf:2 - což je shození lf pouze pro tuto položku.
**************
07.05.2010
Kromě běžné údržby wr53-wr55 pokračuji ve zpřesňování užití UTF znaků ve WR56.
Ukázalo se např., že tabulka ofsetů pro 1250 a PDF není pro některé znaky správná,
takže jsem v 8 sadách musil upravit experimentálně šířku vždy cca 12 znaků.
Nechodil .put $key pro UTF znaky, EDK pro UT položku atd. atd. Pravděpodobně
toho bude ještě více. Snažím se to pomocí příkladů na školení co nejvíce
trápit, abych našel místa, kde je třeba ještě něco řešit.
**************
25.04.2010
Opravena řada problémů souvisejících se zavedením unikódu.
Do editoru přidána inteligence, že když je soubor v UTF16 (začíná 0xff,0xfe),
pak po editaci se uloží rovněž v UTF16. Zároveň .openr a .openr16 jsou
nyní ekvivalentní, pokud soubor má standardní začátek.
**************
19.04.2010
Na www.redap.cz/datum.zip najdete příkládek na volbu data z vizivig kalendáře.
Pokud se domníváte, že by to byla užitečná možnost ve VST, lze to dotáhnout
do přívětivější polohy - integrace do WR a umístění u položky.
Ještě upozornění! Příkladek chodí od wr55 výše.
**************
18.04.2010
Dokončil jsem znakovou sadu Windows 1250 + Windows 1252 v PDF, tím je zahrnuto:
Windows-1250 chorvatština, čeština, maďarština, polština, rumunština, slovenština,
slovinština
Windows-1252 afrikáns, albánština, baskičtina, katalánština, dánština, holandština,
angličtina, faerština, finština, francouzština, keltština, němčina, islandština,
irština, italština, norština, portugalština, skotština, španělština, švédština
Sada znaků v PDF viz www.redap.cz/unipdf.zip
Podařilo se v editoru zprovoznit korekční klávesu F6 i na mezinárodní sadu
znaků.
**************
17.04.2010
Dal jsem se do výstupu do PDF. Záležitost, kteru jsem řešil před 3.5 roky
ohledně integrovaných TT fontů je nutno zcela předělat. Po dvou dnech práce
a hledání po disku se mně ručně podařilo zprovoznit Courier Bold s cca
60 znaky Unikódu. Záležitost je to pracná a s ohledem na možný vývoj
znakové sady jsem se rozhodl věc zautomatizovat. Znamená to ovšem vložit
značnou inteligenci do programů v ATP, které pak nádenickou práci vykonají
na "zmáčknutí jednoho tlačítka".
**************
15.04.2010
POZOR!! Dnes jsem řešil problém proč v TBN podmínka
abcd:=""
....
.if([abcd] "BLEBLE")
je splněna. Je to dáno tím, že zadaný vzor se čte pouze do délky proměnné,
což je většinou položka relace, která má nenulovou délku. V tomto případě
se pro externí proměnnou nic nenačte a "prázdno" se rovná "prázdno".
Z toho vyplývá, že proměnná abcd by měla být místo prázdno naplněna nějakou
hodnotou, která nemůže v jiných případech nastat - např. zde by stačila
jedna mezera.
**************
14.04.2010
Podřetězce ve výrazech fungují. Dále přidány příkazy
.openr8
.openr16
.open8
.open16
.opena8
.opena16
které mají shodnou syntaxi s .openr,.open a .opena. Jediný rozdíl je v tom,
že pro 8 se předpokladá vstup/výstup v UTF8 a pro 16 v UTF16.
**************
13.04.2010
Podařilo se zvládnout v ATP .if(ret1[==|~=|~~]ret2) a substituci s proměnnými
obsahující UTF znaky.
pip koi.txt=utf8.txt/q5:81
převede co jde do KOI a před zbývající znaky uloží:
0x02+0xfd+<dolní bajt>+<horní bajt znaku>
S touto licencí učím WR56 postupně pracovat. Např. editor si to nasaje, převede
na UTF16 a po ukončení editace to zase zapíše v tomto pseudo KOI.
Teď je nutno dále zvládnout řetězcové výrazy s podřetězci ret1[n:m]. Problém
je, s ohledem na výše uvedenou licenci, že např. 4. znak může začínat až na 12.
bajtu!
*******************
10.04.2010
Prefixy pro Unikod doplněny a upraveny na
znaky až na uvozovky a zavináč bez Shift:
[ = čárka
; = kroužek
' = kulatý háček
uvozovky = dvě čárky nad
, = obrácená čárka nad
\ = stříška nad
= = vlnovka nad
. = tečka nad
- = vodorovná čárka nad
@ = čárka+kroužek nad
/ = škrnuté písmeno
] = ocásek pod písmenem
*******************
09.04.2010
Zdá se, že 16 bitový editor funguje, takže jsem wr56 s novým editorem
dal na web. Jakýsi užitečný, ale nepředpokládaný důsledek mojí činnosti
spočívá v tom, že do obyčejných memopoložek lze zadávat a ukládat unikódové
znaky, přirozeně bez zpětné kompatibility na předchozí verze.
Teď je nutno s unikódem naučit pracovat i ATP.
Dosud bylo pro unikód zrealizováno:
Relační položka UT
Zobrazování vybrané množiny znaků na obrazovce
Vkládání unikódových znaků zatím přes prefix <Pause>
Tisk na tiskárně
Editace řádku textu s unikódem
Editor s unikódem
Memo položka i s unikódem
******************
08.04.2010
16. bitový editor se pomalu chýlí ke konci. Příjemné např. bude,
že při zápisu do clipboardu se používá Unikód, takže se žadné
znaky nezkomolí. To platí i naopak pro příjem z jiných software.
Tento text s drobnými problémy je napsán novým editorem.
******************
04.04.2010
Podařilo ze zprovoznit vstup příkazového řádku z klávesnice s UTF znaky.
Můžete např. dialogově
s:="<utf znaky>"
;'s'
se správně zobrazí při substituci.
Bez editoru akceptujícího UTF znaky, je to ale zatím pouze další krok
ke konečnému cíli. Ještě větším problémem bude převod výstupu do PDF.
******************
01.04.2010
Zprůchodněn tisk na LPT a TT:2 s Unikódem. Viz TBN.CMD ve
www.redap.cz/uni.zip
*******************
31.03.2010
Rozchodil jsem editaci položky UNI textu a zatím vkládání cizích znaků
přes <Pause>+<"|,|^|~|.|-|@|'|/|]>+znak, kdy
Je zachována kompatibilita na prefix a česká/slovenská/anglická klávesnice.
Dnes se mně poprvé povedl OPT nad tabulkou UNI, výstup na tiskárnu chodí
jakž takž, ale rámečkové znaky ze sady UNIkódu jsou nepoužitelné z hlediska
kompatibility, takže zase musím tyto znaky převést na původní generátor
rámečkových znaků.
Na webu tato rozpracovaná verze zatím ale není!
*******************
28.03.2010
Konečně mohu alespoň částečně prezentovat určité výsledky s Unikóde
sadou. Na www.redap.cz/utf.zip najdete tabulkou s kompletní sadou
evropských znaků. Použijte přiložený font5w. a v init5w. si upravte
cesty. Funguje zatím pouze INF a umí i hledat a třídit, ale neumíme
zatím znaky zadávat.
Jinak myšlenku, že veškerý výstup bude interně v UTF16 jsem po jednom
dnu intenzivní práce opustil. Zásahy do modulů mně kynuly pod rukama
a konec byl stále více a více v nedohlednu. Proto jsem přešel k metodě
rozpoznání UTF znaků v normálním bajtovém bafru a to až při výstupu
na obrazovku nebo tiskárnu. I tak bude co dělat to ustát.
*******************
24.03.2010
Následující etapa bude dost obtížná - tiskový bafr, který je rozlezlý
do mnoha podprogramů měním z 1 bajtové reprezentace na 2 bajtovou,
takže veškerý tisk by měl být primárně již v UTF16. Zobrazování
je na to již předchozí etapou připraveno.
*******************
23.03.2010
Dokončen další krok k UTF16. Přepracované zobrazování znaků z WR55
pracuje již interně pouze s UTF16. Problém činí zejména původní
DOS fonty v kódu Kamenických, kdy pro zobrazení musím transformovat
zpětně z UTF16 znaky do kódu Kamenických.
*******************
22.03.2010
Nyní WR56 obsahuje nový generátor znaků. Ideální stav by pro mne
byl, aby to nikde nebylo vidět. Pokud se Vám zobrazení znaků někde
bude jevit jinak než dříve, prosím o zprávu. Problém zobrazování
je po těch letech velmi košatý, takže jsem na něco mohl zapomenout.
*******************
21.03.2010
Nutnost návratu ke generovaným rámečkovým znakům, šipkám ap.
mně bohužel zcela rozbilo původní filosofii. Musil jsem vymyslet a
doplnit dodatečné kódovací tabulky. Dalším problémem bylo,
že rohové značky okrajových rámečků v KOI08 neměly kódového
reprezentanta - byly pouze v Kameníkách.
Původní filosofie byla interně KOI08, fonty v kódu Kamenických. Nyní
jsem Kameníky zrušil u TT fontů a de facto jdu KOI08 -> UTF16 na
obrazovku. V důsledku toho se na řadě míst objevilo, že se některé
značky posílaly přímo v Kameníkách na obrazovku a tak se pak
na obrazovce objevily nesprávné znaky.
Nyní se zdá, že jsem z nejhoršího venku a během několika dnů budu
moci na web umístit WR56 s novým generátorem znaků s počtem
u TT fontů převyšující hranici 256 znaků. (Momentálně generuji
cca 400 znaků v každém fontu).
*******************
Mírně jsem postoupil ve studiu Unikódu a TT fontů. Rámečky na sebe moc
nenavazují a např. v Tahomě zcela chybí. Zřejmě tedy zůstanu u těchto
znaků při vlastní generaci ještě od ing. Rytycha.
*******************
19.03.2010
Kromě řešení řady problémů ještě ve WR55 se mně podařilo předělat
generátor TT znaků z původních 256 znaků (historicky v kódu Kamenických)
na generátor Unicode znaků s možností snadného doplňování dalších
znaků (momentálně generuji cca 500 znaků v rámci jednoho fontu).
Unicod nebude podporován na úrovni původních DOS fontů!
*******************
Třídění evropských znaků unikódu jsem se rozhodl řešit tabulkou,
která obsahuje všechny verze diakritiky velkých A, pak malých a,
pak velkých B a malých B atd. až do Z a z. Celkem je to 220 znaků
včetně základních 52 znaků bez diakritiky.
V rámci skupiny znaku se pak řadí první bez diakritiky, pak s čárkou,
pak s háčkem atd. dle pořadí v předchozím odstavci.
Tzn., že nebude správně tříděno ch, ale bude zatříděno v rámci c.
Je třeba si uvědomit, že jde o univerzální kód pro všechny evropské
státy s latinkou a řada z nich ch nezná.
*****************
14.03.2010
Pořizování evropských znaků v unikódu lze realizovat buď změnou
národní klávesnice ve Windows nebo pomocí nějakého příznaku,
který by řekl, že následující písmeno opatříme:
Nad písmenem:
čárkou
háčkem
kroužkem
dvěma tečkami
dvěma čárkami
obrácenou čarkou
obráceným háčkem
vlnovkou
tečkou
vodorovnou čárkou
čárkou+kroužkem
apostrofem před
Uprostřed:
vodorovné přeškrtnutí
šikmé přeškrtnutí
Pod:
ocásek
?? co se Vám zdá rozumnější?
*****************
06.03.2010
Částečně zprovozněn typ UT - UTF16. Na rozdíl od UTF8 má řetězec
pevnou délku a to dvojnásobek RE. Vyvstává několik problémů. Jak
obecný text vkládat. Dále bude nutno nějak odlišit dosavadní
literál a UTF16 literál. Zdá se, že to nepůjde normálně třídit,
pouze dle hodnot znaků. A jak UTF zobrazit (terminál) a tisknout
(tiskárna).
Zatím v prvním přiblížení pouze převádím UT <-> RE mezi sebou,
takže nevzniká žádná nová kvalita.
*****************
Ukázalo se, že je nutno při práci s ODBC drivery zaokrouhlovat
přebírané hodnoty z proměných typu float point.
*****************
04.03.2010
Zprovozněny všechny převody s .codepage 8 a 9
pip <Text UTF16>=<Text UTF8>/q5:89 - obecně
pip <Text UTF8>=<Text UTF16>/q5:98 - obecně
pip <Text KOI08>=<Text UTF16>/q5:91 - jen známé znaky
*****************
03.03.2010
Ode dneška se wr56 dá nasetovat pouze pomocí wrset56.exe.
*****************
03.03.2010
Pomocí
pip <Text UTF16>=<Text KOI08>/q5:19
převedete text v KOI08 na text UTF16 - tj. každý znak 2 bajty.
*****************
02.03.2010
Stále ještě průběžně řeším připomínky k verzi WR55.
Ve WR56 se nyní pokusím zrealizovat nový typ položky UT - což bude UTF16.
To by umožnilo ukládat do řetězců libovolný znak - třeba Japonský. To by
nebylo až tak těžké. Jádro problému spočívá v tom, jak znak do řetězce
dostat a jak ho pak správně vytisknout.
Ještě kolega Rytych postavil zobrazení TT znaků na principu DOS fontů
- t.j. nechal si vygenerovat pro každý TT znak "obrázek" (max 256)
a pak "obrázky znaků" vkládal do bitmapy. Pro UTF16 tato filosofie
přirozeně padá, i když při GB RAM by asi nebyl dnes problém, těch 65000
obrázků znaků umístit do RAM.
*****************
22.02.2010
Díky technologii C++ ve WR56 se podařilo nahradi externí program
PROGMAN nebo ve WR55 doporučený VBS script příkazem "additem" a to:
AddItem "Programs\Účetnictví","Mzdy","c:\wr55\wr55.ico","c:\wr55\wr55.exe","c:\wr5",
"mzdy {0.c:\wr5\init5w.}","Mzdy jsou úžasně jednoduché a rychlé"
AddItem "Programs\Účetnictví","Pokladna","c:\wr55\wr55.ico","c:\wr55\wr55.exe",
"c:\wr5","pokladna {0.c:\wr5\init5w.}","Pokladna j úžasně jednoduchá a rychlá"
AddItem "Desktop","Pokladna","c:\wr55\wr55.ico","c:\wr55\wr55.exe","c:\wr5",
"pokladna {0.c:\wr5\init5w.}","Pokladna j úžasně jednoduchá a rychlá"
První parametr musí začínat buď "Programs" nebo "Desktop" nebo "StartMenu"
a definuje umístění ikony v záložce Programy nebo Plocha nebo Start. V sekci
Programy může být pak pomocí lomítka ještě definován podadresář v Programy
- v PROGMAN to byla Group.
Dále následuje odkaz na ikonu, program, kde začít, parametry a popis, který
se v případě podadresáře zobrazí v bublince po najetí myší na danou volbu.
*****************
19.02.2010
Propojeny příkazy end +-<vteřiny> a příkaz exit <rutina call>. V tom
smyslu, že pokud zafunguje end a byl příkaz exit, tak se přejde do
dokončovací rutiny <rutina call>.
****************
Učiněn pokus přenést čast aparátu z jazyka C do WinREDAPu a to takto:
1. zaveden příkaz
.DEFINE <Text1>,<Text2>,...,<Textn>
Aby se aparát spustil, musí být alespoň formálně uveden jeden příkaz
.define. Např.
.define WIN2000
Pak lze psát
#ifdef WIN2000
; Jsme ve Windows 2000
#else !WIN2000
; Nejsme ve Windows 2000
#endif !WIN2000
nebo negace
#ifdef !WIN2000
; Nejsme ve Windows 2000
#else WIN2000
; Jsme ve Windows 2000
#endif WIN2000
Smyslem příkazů je jakési zdokonalené zakomentovávání úseků programu
řízené příkazem .define - pokud tam nějakou zkratku uvedeme, část
programu se spustí, jinak se ignoruje a eventuálně se uplatní část
za #else.
Protože se jedná o ignoraci na nejnižší úrovni, lze aparát použít
jak v ATP, tak v parametrech instrukcí.
Znalci vědí, že text za #else a #edif se nepožaduje a také, že pak
lze v hierarchii zanoření snadno zabloudit. Proto jako prevenci jsem
zavedl povinnost texty uvádět a jejich správnost se kontroluje.
Zanoření další úrovně pak vypadá takto:
.define NEDEF,MZDY
#ifdef !NEDEF
;Tak tohle ne
#ifdef !NEDEF/UCTO
;Tak tohle ne
#else !NEDEF/!UCTO
;Tak tohle ne
#endif !NEDEF/!UCTO
#else NEDEF
;Tohle ano
#ifdef NEDEF/!MZDY
;Tak tohle ne
#else NEDEF/MZDY
;Tohle ano
#endif NEDEF/MZDY
;Tohle ano
#endif NEDEF
;koncime NEDEF
Lze tedy snadno u každého #ifdef, #else, #endif stanovit, kdy se
kód bude interpretovat a kdy ne.
Pokud se vnoříme do dalšího CMD a použijeme tam .define, pak po
ukončení vnořeného CMD se zkratky zde definované zapomenou.
POZOR! přepracováno viz 01.06.2010
****************
15.02.2010
Na základě dotazu jednoho uživatele na téma obslužné rutiny po stisknutí
ukončovacího křížku, odkazuji na .enable toolbar 99 v nápovědě. Konkrétně
to může vypadat takto:
.enable toolbar 99
exit konec
.do()
.pause 10
.end_do
/
.konec:()
;končím
.ask u Ano
exit<*shozeni volani dokoncovaci rutiny*>
bye
.end_call
****************
12.02.2010
Poslední období jsem věnoval odstraňování různých problému ve WR55
starších i novějších, které se vyrojily při náběhu letošních systémů.
Jeden problém se vyskytl u více uživatelů, přestože pochází již z WR54.
Jde o to, že do WR53 šlo chybně při dosazování do numerických položek DBF
použít:
NUMERIC:=text
to jsem ani netušil, že to prochází.
Současně jsem úpravou syntaktické kontroly odstřelil i možnost
LOGIC:="T"
Proto po "pozdvižení na vsi" jsem k _mode if:1. přiřadil kompatibilní
chování takových výrazů i pod WR55 a výše a obnovil možnost dosazování
do logických proměnných DBF i ve WR54.
****************
03.02.2010
Snad se zadařilo bez následků vyházet ze zdrojů WR56 všechny podmíněné
překlady týkající se ještě SRxy a DOSu.
****************
30.01.20010
Po několikadením zápase se podařilo vytvořit dávkovou tvorbu WR56
v prostředí Microsoft Visual Studio 2008 a přilinkovat test
operačního systému (hlavní menu systému a .test $os). Neprovádí
se tedy nadále externě přes script, což činilo potíže při spouštění
WR55 instalovaném na serveru. Přibyl typ operačního systému 32/64 bit.
.test $os u mne v proměnné $os vrací:
Systém Microsoft Windows XP Professional|5.1.2600|32 bit OS|2|
Poslední dvojka označuje poslední instalovaný ServicePack.
****************
26.01.2010
Zadařilo se původní koncepci testu operačního systému přes script VBS
zaintegrovat do WR56 díky implementaci v C++. Navíc po delším hledání
jsem nalezl i způsob jak detekovat 32 bitový nebo 64 bitový systém.
*************
26.01.2010
Dnes se ukázalo, že i antivir:
ESET NOD32 Antivirus 3.0.684.0
se chová jako původní verze AVG 9.0. Tedy vrhá se na vytvářené
soubory, zde převážně v instrukci IND a znemožní tak její správnou
funkci. Pomohlo spuštění čekací smyčky (viz 18.11.2009 novinky).
V síti při zapnuté čekací smyčce ale původní doporučení uvedené
ve www.redap.cz/lock.zip je třeba modifikovat na:
.; Založení souboru sekce1.lck, pokud by neexistoval
.openl #9,"sekce1.lck" prom;
.close #9;
.; Testování stavu souboru - čeká eventuálně 10 sekund
.onerr #; .openr #9,"sekce1.lck"
.if(error) "Běží zpracování, zkuste to později"; .exit
.; Pořizovací rutina
%vst
!
uziv
.pr(xt "Číslo:";pc r;)
/
.pr()
%
.close #9
.; Dokončovací rutina
.openl #9,"sekce1.lck" prm;
.if($filerr==2) "Někdo ještě pořizuje nebo doknčuje"; .exit;
%tri
uziv
pc.
%
.close #9
a pak v případě zpracování závěrečných taktů .openr čeká těch 10 s. Pokud to
mezitím skončí, pokračuje, jinak vydá tu chybovou hlášku.
*************
26.01.2010
Ing. Novák objevil 1. nekompatibilitu ve Windows 7 a to příkaz
odbcadd
který hlásí chybu "Nelze zapsat do registru". Zkoušel jsem si
celý disk jako uživatel přivlastnit včetně Win adresářů. To se
podařilo, ale chyba nezmizela. Při vyvolání odbcad32.exe to
ručně mohu udělat, programově ne. Pomůže pouze spuštění WR
v režimu administrátora (tedy ne jako adminástrátor - to nestačí).
*************
21.01.2010
Na základě Vásich připomínek (za které touto cestou děkuji) jsem
dosud napravil:
Zcela nefunkční práci s ODBC driverem
Špatně končící spouštění cizích úloh napr. WAIT
Nefungující funkční procedury (.call a return(x))
*************
20.01.2010
Protože se mně WR56 sestavený pod C++ chová vcelku mravně (jsou to
pouze upravené zdroje WR55) dal jsem ho na WEB. Pokud budete mít
náladu a chuť, zkuste to na svých aplikacích a v případě nějakých
anomalií, prosím o zprávu.
Na wr56 se zatím aplikuje wrset55.exe.
*************
19.01.2010
Zadařilo se upravit zdroje pro read a write JPG a kompresi PDF tak,
ze překlad prošel a moduly jsou funkční. Pokračuje testování WR56
přeloženého a sestaveného pod C++.
Největším problémem byl globální převod char na unsigned char, protože
znaménko občas mělo význam. Zatím odhaleny čtyři problémy a jeden,
který mně dal zabrat, když jsem při přetypování zapomněl kolem výrazu
dát závorky.
*************
18.01.2010
WR56 přeložen a sestaven pod C++ a prochází po několika korekcích demo.
Zůstává ale doposud nedotčené čtení JPG a vytvoření JPG - shareware.
V těchto modulech jsou dosud stovky chyb.
Takže moje úsilí, zdá se, nepadlo zatím v niveč.
*************
17.01.2010
V poslední době řeším několik problémů denně. Týkají se většinou WR55
i když řada problémů je tam "odjakživa". Např. dnes jem měl na stole
nefunkčnost zobrazení BMP formuláře, protože měl 0.25 GB. Interní
bafry byly na takový obrázek malé. Po připumpování bafrů to jede.
*************
10.01.2010
Konečně jsem dnes ráno dosáhl kýženého okamžiku, kdy jsem ve zdrojích
WR56 odstranil všechny tvrdé chyby. Přišlo ale drsné probuzení v podobě
800 chyb při sestavení a po drobných globálních úpravách to padlo na
300 chyb kvůli různým prohřeškům, které se dost obtížně detekují.
Po celodenní práci jsem se dnes dostal na "pouhých" 207 chyb při sestavení.
*************
03.01.2010
V současné době stále neopouštím myšlenku dostat WR do světa C++
z dosavadního světa pouhého C. Začal jsem tedy překládat stávjící
moduly WR55 pod C++. Problémem je, že většina varování kompilátoru
jazyka C (které jsem doposud pomíjel) se stala tvrdými chybami
v jazyku C++. Z 550 modulů jich neprošla ani stovka a chyb bylo
několik tisíc. Různými formálními změnami a pilnou prací se podařilo
umravnit dodnes cca 400 modulů a zbývá asi 2000 chyb.
Zatím ani nevím, zda je tato myšlenka převodu schůdná, nicméně
formální úpravy jsou ke prospěchu věci i pro jazyk C a navíc přísnější
kompilace odhaluje i řadu možných problémů v dosavadním kódu WR.