Comment detail

文字変換表に基く文字列の変換 (Nested Flatten)
前から HSPの黒魔術であるVRAMでテキスト処理をする方法をどう書く?orgのお題で使えないかなーと思っていたのですが、ようやく使うときがきました。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#module
#defcfunc tr str _text, str _tr1, str _tr2
    text = _text
    len = strlen( text )
    osel = ginfo_sel
    buffer 29, len, 1, 1
    mref vram, 66
    memcpy vram, text, len
    tr1 = _tr1 : tr2 = _tr2
    tr_len = strlen( tr1 )
    repeat tr_len
        c = peek(tr1, cnt)
        palette peek(tr2,cnt), c, c, c, cnt==(tr_len-1)
    loop
    buffer 30, len, 1, 1
    repeat 256
        palette cnt, cnt, cnt, cnt, cnt==255
    loop
    gmode 0, len, 1
    gcopy 29
    mref vram, 66
    memcpy text, vram, len
    gsel osel
    return text
#global

mes tr( "Hello world!!", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz" )
引数の順序は逆の方がよいですね。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
--- doukaku148.hsp.orig    Sat Feb 02 22:11:44 2008
+++ doukaku148.hsp    Sat Feb 02 22:11:29 2008
@@ -9,8 +9,8 @@
     tr1 = _tr1 : tr2 = _tr2
     tr_len = strlen( tr1 )
     repeat tr_len
-        c = peek(tr1, cnt)
-        palette peek(tr2,cnt), c, c, c, cnt==(tr_len-1)
+        c = peek(tr2, cnt)
+        palette peek(tr1,cnt), c, c, c, cnt==(tr_len-1)
     loop
     buffer 30, len, 1, 1
     repeat 256
@@ -24,4 +24,4 @@
     return text
 #global
 
-mes tr( "Hello world!!", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz" )
\ No newline at end of file
+mes tr( "Hello world!!", "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ" )
\ No newline at end of file

Index

Feed

Other

Link

Pathtraq

loading...