ab.com コミュニティ
https://www.activebasic.com/forum/

自己表示プログラム
https://www.activebasic.com/forum/viewtopic.php?t=2396
ページ 11

作成者:  konisi [ 2008年5月31日(土) 16:59 ]
記事の件名:  自己表示プログラム

自己表示プログラムを書いてみました4.23で動作を確認しました。

どうやら定数文字列の文字数に何らかの制限がある模様で、それの回避に苦労しました。

誰かもっと短い奴か、又は異なる方法を用いた奴書いてください(メモリリークを無視するような短縮方法は遠慮してください)

作成者:  イグトランス [ 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

ページ 11 全ての表示時間は UTC+09:00 です
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/