by イグトランス » 2008年6月01日(日) 11:11
私も以前やりました:
自分自身を出力するプログラム。
ただ、当時のAB5用なので、今のAB5ではできませんでした。
というわけで修正版です。
コード: 全て選択
#console
Dim s = "Print Ex'#console\r\nDim s = \q' + s + Ex'\q, t = \q' + t + Ex'\q' : Print s.Replace(Asc(t), Asc(Ex'\q'))", t = "'"
Print Ex"#console\r\nDim s = \q" + s + Ex"\q, t = \q" + t + Ex"\q" : Print s.Replace(Asc(t), Asc(Ex"\q"))
AB4は文字列置換のサブルーチンがないのがつらいです。上のコードをAB4.24に移してみましたが、まだReplaceChrサブルーチン部分を出力しない不完全な出来です。
コード: 全て選択
#console
Sub ReplaceChr(ByRef s As String, oldChar As Byte, newChar As Byte)
Dim i As Long
For i = 0 To Len(s) - 1
If s = oldChar Then s = newChar
Next
End Sub
Dim s As String, t As String
s = "Print Ex'#prompt\r\nDim s As String, t As String\r\ns = \q' + s + Ex'\q\r\nt = \q' + t + Ex'\q' : ReplaceChr(s, Asc(t), Asc(Ex'\q')) : Print s"
t = "'"
Print Ex"#prompt\r\nDim s As String, t As String\r\ns = \q" + s + Ex"\q\r\nt = \q" + t + Ex"\q" : ReplaceChr(s, Asc(t), Asc(Ex"\q")) : Print s
私も以前やりました:[url=http://dev.activebasic.com/egtra/?p=43]自分自身を出力するプログラム[/url]。
ただ、当時のAB5用なので、今のAB5ではできませんでした。
というわけで修正版です。
[code]#console
Dim s = "Print Ex'#console\r\nDim s = \q' + s + Ex'\q, t = \q' + t + Ex'\q' : Print s.Replace(Asc(t), Asc(Ex'\q'))", t = "'"
Print Ex"#console\r\nDim s = \q" + s + Ex"\q, t = \q" + t + Ex"\q" : Print s.Replace(Asc(t), Asc(Ex"\q"))[/code]
AB4は文字列置換のサブルーチンがないのがつらいです。上のコードをAB4.24に移してみましたが、まだReplaceChrサブルーチン部分を出力しない不完全な出来です。
[code]#console
Sub ReplaceChr(ByRef s As String, oldChar As Byte, newChar As Byte)
Dim i As Long
For i = 0 To Len(s) - 1
If s[i] = oldChar Then s[i] = newChar
Next
End Sub
Dim s As String, t As String
s = "Print Ex'#prompt\r\nDim s As String, t As String\r\ns = \q' + s + Ex'\q\r\nt = \q' + t + Ex'\q' : ReplaceChr(s, Asc(t), Asc(Ex'\q')) : Print s"
t = "'"
Print Ex"#prompt\r\nDim s As String, t As String\r\ns = \q" + s + Ex"\q\r\nt = \q" + t + Ex"\q" : ReplaceChr(s, Asc(t), Asc(Ex"\q")) : Print s[/code]