ab.com コミュニティ https://www.activebasic.com/forum/ |
|
2進数をもとめる関数でのバグ https://www.activebasic.com/forum/viewtopic.php?t=1520 |
ページ 1 / 1 |
作成者: | faro [ 2006年9月05日(火) 22:41 ] |
記事の件名: | 2進数をもとめる関数でのバグ |
以前このフォーラムで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 なぜなのでしょうか? ご報告させていただきます。 |
作成者: | ゲスト [ 2006年9月05日(火) 22:52 ] |
記事の件名: | |
度々ですみません。 訂正があります。 コンパイルは通るのですが,実行がされません。 |
作成者: | 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)でした。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |