Vod minule AParátnice pekelně přezbrojila. Převody teď jedou přes něco jako tabulku. To je dost - moc rychlejší a spolehlivější a při vytváření tabulek se dá užít tuna srandy.
Teď budu chvilku vokecávat jak jsem to prznil.
Takže základní fór je v tom, že AParátnice 1.1a nemá něco jako převodní algoritmus, ale voperuje se dvěma protějškovýma tabulkama pro každý kódování, který zvládá. Pak stačí v kódu místo nějakejch převodních algoritmů pouhý přiřazení podle indexu (znak:=tabulka[znak]) a k tomu se dospěje protě tak, že se do proměnný tabulka napere pointer na ten správnej protějšek, tak třeba potřebuješ převádět z KOI8 do WINDOZE ÉÉ - prostě nahodíš tabulka:={koi8ee}.
Fajn a jak dostaneš to koi8ee ? Celkem v pohodě někam v kódu nejlíp mimo funkce šlehneš - koi8ee: INCBIN 'koi8.ee'.
Mrkni na zdroják v Éčku.
Jasně. Potřebuješ ty soubory - tabulky.
Ty "protějškový" soubory (mrkni se do "bonusu/AParátnice" a bude to jasný) byly vytvořený převodem z původního ASCII-FULL výpisu danýho kódování. Prostě jsem si pro každou normu v GOLDEDu vodevřel ASCII-tabulku a zmyšnul každý zasraný písmeno|nepísmeno a to byla vysmahlá hovadina, protože ARexxem nebo menším prográmkem (viz níž) by to šlo MNOHEM pohodlnějc. Převodem za vydatný pomoci "Převodníku" a za vypnutejch úprav (CR,LF a tak..., tuším, že se ta volba jmenunuje "Nerozpoznávat kódování") jsem pak konečně dostal ty "protějškový" soubory. Stačí prostě zvolit nějaký (to potřebný výchozí) a to pro, který potřebuješ tu protějškovou tabulku a je vymalováno.
Huf, to byla smažba.
-> <-
/* Tak tohle je ten prográmek na vytvoření ASCII-výčtu-tabulky
- prostě souboru,kterej vobsahuje byty 0-$FF
neručím za to,že fakčí,nezkoušel sem to,ale mělo by
*/
PROC main()
DEF franta /* potřebnej file handl -> jestli nevíš vo co 'de
potřebuješ nutně nějakou developer guide - podvodíl DOS(.library) */
DEF ascii[255]:ARRAY OF CHAR, /* no,to je to společenství znaků */
i /* tradiční nudná a spolehlivá proměnná pro FOR cyklus */
/* Naper do do bufáče */
FOR i := 0 TO 255 -> = $FF
ascii[i]:=i
ENDFOR
IF (franta:=Open('ascii.full',NEWFILE))=FALSE /* vodevři si soubor */
WriteF('Nejde mi vodevřít soubor na uložení ! \n') /* sere se to ! */
CleanUp(15) -> shitus exitus
ENDIF
Write(franta,ascii,255) -> pro puňtičkáře 256,ale na poslední seru....
Close(franta) -> zavírej,TÁHNE !
CleanUp() -> ukliď si po sobě ty čuně !
ENDPROC
/* A to je všechno..... */
/* Nebo takhle,podle mě surově elegantněji: */
PROC main()
DEF franta
DEF i
IF (franta:=Open('ascii.full',NEWFILE))=FALSE
WriteF('Nejde mi vodevřít soubor na uložení ! Mrskni si ho. \n')
CleanUp(15)
ENDIF
Flush(franta) /* jen pro jistotu... */
FOR i := 0 TO 255
FputC(franta,i) /* OS 2.0+ stylovej bufferovanej zápis jednoho znaku */
ENDFOR
Close(franta)
CleanUp()
ENDPROC
/* NO COMMENT */
BOLDA
AMIGA E - II.díl |
Hardware | Warez | WBoviny | Kodeřina | Dema | Gfx&Muz | Pařby | Vokecávky2 |