2進数をもとめる関数でのバグ

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 2進数をもとめる関数でのバグ

by konisi » 2006年9月06日(水) 00:02

どうやら、Mid$から抜ける時、String型の開放のために呼んだHeapFree関数が、C=18の時にエラーを起こしているようです。
ところで、jの値が途中から増えなくなっていますが、String型とメモリの競合でも起こしているのでしょうか?

という事で試してみると

コード: 全て選択

#console
dim temp$ as String

        temp$="0001011010001010100010011"
        temp$=Bin2Dec(temp$)
print temp$
end


'**************************************************
Function Bin2Dec(ByVal data As String) As String
Dim data2 As Qword          
dim c as Dword
dim temp$ as String
dim j as Dword
dim dum$(9) As String
'もっと色々な数で試してみたが、こちらの環境では初期化0のものが最低で10個必要だった。

data2=0
j=0

c=Len(data)

        Do  
            j=j+1
            c=c-1
            temp$=Mid$(data,j,1)

            data2=data2+(1 << c)*Val(temp$)
            
        Loop Until c=0
Bin2Dec = Str$(data2)
debug'Mid$、Str$でアクセス違反にならなければここまで来るはず
End Function
で、debugの位置まで来たのですが今度は抜ける時にエラーです。Main部分のtemp$の宣言の直後に

コード: 全て選択

dim dum2$(10000) As String
等と入れてみましたが、やはり関数を抜ける時にエラー。リリースコンパイル時に大丈夫ならいいやと思いF6っと。
それでもうまくいかないのでお手上げです。

ちなみに、リリースコンパイル時のdum2$1万飛んで1個入りの実行ファイルサイズは、900キロ弱(896KB)でした。

by ゲスト » 2006年9月05日(火) 22:52

度々ですみません。
訂正があります。

コンパイルは通るのですが,実行がされません。

2進数をもとめる関数でのバグ

by faro » 2006年9月05日(火) 22:41

以前このフォーラムで2進数の関数を表すものがを利用させていただいておりますが,
その関数がVer5CP2では通りません。

コード: 全て選択


#console
dim temp$ as String

		temp$="0001011010001010100010011"
		temp$=Bin2Dec(temp$)
print temp$

end


'**************************************************
Function Bin2Dec(ByVal data As String) As String

Dim data2 As Qword          
dim c as Dword
dim temp$ as String
dim j as Dword

data2=0
j=0

c=Len(data)

		Do  

			j=j+1
			c=c-1
			temp$=Mid$(data,j,1)

			data2=data2+(1 << c)*Val(temp$)
			
	    Loop Until c=0

Bin2Dec = Str$(data2)
End Function

なぜなのでしょうか?
ご報告させていただきます。

ページトップ