Oto szablony zajmuj±ce siê w obs³ug± liczb rzymskich - zmiana z i na arabskie.

Na pocz±tek zmiana liczby rzymskiej na arabsk±. Algorytm jest nastêpuj±cy - je¶li cyfra (rzymska) po prawej jest wiêksza lub równa cyfrze sprawdzanej, dodajemy sprawdzan± do ca³o¶ci, je¶li mniejsza - odejmujemy.

MCMXCVII=1000-100+1000-10+100+5+1+1=1997.

Zaimplementowa³em go w szablonie 'ra'. Szablon nale¿y dodaæ do szablonów podrêcznych. Jego nazwa jest wa¿na, je¶li pragniecie go zmieniæ, nie zapomnijcie o zmianie odwo³añ do niej w makrze %QINCLUDE.

Uwaga - ¼ród³em liczby rzymskiej jest makro %InputBox (otwiera siê okienko, w którym nale¿y wpisaæ liczbê), które to makro jest czê¶ci± wtyczki MyMacros. Mo¿na je zast±piæ innym makrem (np. %CLIPBOARD), ale funkcjonalno¶æ takiego rozwi±zania jest niewielka.

Szablon nie sprawdza, czy liczba rzymska jest poprawna. Dzia³a przez ca³y tekst wpisany do okienka %InputBox, wyszukuj±c rzymskich cyfr (M,D,C,L,X,V,I), dlatego wpisuj±c jakie¶ s³owa mo¿emy otrzymaæ dziwne rezultaty (przyk³adowo: "Internet dla mas!"->1449). Mo¿na zaimplementowaæ mechanizm sprawdzania poprawno¶ci liczby rzymskiej, ale nie ma takiej potrzeby. Wystarczy u¿ywaæ go z g³ow±, a w razie w±tpliwo¶ci wykorzystaæ szablon zmieniaj±cy liczbê arabsk± w rzymsk± i porównaæ wyniki.

Zmiana liczby arabskiej w rzymsk± to spory problem. Liczby rzymskie przekraczaj±ce 4000 zmieniaj± swoj± formê (nad liter± pojawia siê kreska), co jest praktycznie niemo¿liwe do uzyskania w trybie tekstowym - tekst musia³by zamieniaæ siê w asciiart. Podszed³em do problemu na dwa sposoby - jeden dla wszystkich, drugi dla u¿ytkowników wtyczki MyMacros. Oba szablony nie dzia³aj± dobrze dla liczb wiêkszych ni¿ 3999, choæ pierwszy (a2r) tworzy "zastêpcze" - niew³a¶ciwe, ale zrozumia³e - wyniki do liczby 9999. Na przyk³ad: 5555 -&gt MMMMMDLV.

Szablon 'a2r' jest prób± stworzenia szablonu zmieniaj±cego cyfrê arabsk± na rzymsk± bez korzystania z wtyczki MyMacros. Jego nazwa jest nieistotna, mo¿na byæ dowolna. Jak mo¿na zauwa¿yæ, szablon najpierw sprawdza, czy zmienna %_arab jest pusta, dopiero je¶li tak jest, to otwiera okienko %InputBox (które wymaga wtyczki). Zmienna %_arab ma zawieraæ liczbê przeznaczon± do zmiany. W ten sposób mo¿na wkomponowaæ szablon na przyk³ad we wrotkê, na przyk³ad tak:

Roku Pañskiego %_arab="%ODATE='yyyy'"%QINCLUDE(a2r), dnia %- %ODATE='d'.%_arab="%ODATE='mm'"%QINCLUDE(a2r), napisa³:

nie musimy mieæ wtyczki, a i tak w rezultacie odpowiadaj±c na list z 27.03.2004r. otrzymamy:

Roku Pañskiego MMIV, dnia 27.III, napisa³:

Kolejny szablon - 'ar' - podobnie jak poprzedni (a2r) zmienia liczbê arabsk± na rzymsk±, ale ten wykorzystuje ca³e bogactwo makr wtyczki MyMacros. Podobnie jak poprzedni, najpierw sprawdza, czy zmienna %_arab nie jest pusta, wiêc mo¿na go u¿ywaæ do modyfikowania wrotki wed³ug powy¿ej przedstawionego schematu. W tym szablonie musia³em wprowadziæ zabezpieczenie, je¶li liczba poddawana zmianie jest wiêksza od 3999 szablon zg³asza b³±d i przestaje dzia³aæ. Jest to konieczne ze wzglêdu na zasady przedstawiania du¿ych liczb rzymskich oraz mechanizm dzia³ania szablonu. Nazwa szablonu jest wa¿na, jej zmiana musi poci±gaæ za sob± zmianê wszystkich odwo³añ do niej w makrze %QINCLUDE.

Szablon ar - zobacz szablon

Szablon a2r - zobacz szablon

Szablon ra - zobacz szablon

Konrad Szkudlarczyk <mode5@poczta.gazeta.pl> 28.03.2004r.

Dotychczasowa ocena artyku³u: -28. Podoba ci siê ten artyku³? [tak/nie]