by Cursol » 2006年2月20日(月) 17:41
ご指摘ありがとうございました。結局GlobalFree()を削ってもエラーが出てきた事からひょっとして変換時(A→Ala)の処理がおかしいのではと思い文字列の操作を以下のようにしたところ正常に動くようになりました。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Sub MainWnd_CommandButton1_Click()
hEdit = GetDlgItem(hMainWnd, EditBox1) 'エディットボックスのハンドルを取得
cOneLettSeq = GetWindowTextLength(hEdit) '文字列の長さを取得
'check = GetWindowText(hEdit,OneLettSeq, cOneLettSeq + 1) '文字列を取得
check = GetWindowTextStr(hEdit,OneLettSeq) '文字列をString型のまま取得
ThrLettSeq = ""
If check = 0 Then
MessageBox(0,"文字列を入力してください。","Err",MB_OK)
End If
'sOneLettSeq = MakeStr(OneLettSeq) '型変換BytePtr→String
For i = 1 to cOneLettSeq
'OneText = Mid$(sOneLettSeq,i,1)
OneText = Mid$(OneLettSeq,i,1)
Select Case OneText
Case "A","a"
ThrLettSeq = ThrLettSeq + "Ala"
Case Else
MessageBox(0,"指定のアルファベットを入れてください","Err",MB_OK)
Exit Sub
End Select
Next i
hText = GetDlgItem(hMainWnd,Static1)
SetWindowText(hText,ThrLettSeq)
End Sub
特に以下のコードの部分が問題だったのだと思われます。
コード: 全て選択
'check = GetWindowText(hEdit,OneLettSeq, cOneLettSeq + 1) '文字列を取得
check = GetWindowTextStr(hEdit,OneLettSeq) '文字列をString型のまま取得
イグトランスさんの
String型のGetWindowTextの投稿欄にあったようにGetWindowTextでメモリを確保していなかったために起こったことのように思います。(前回もメモリ確保忘れてエラーが出てここに投稿したのに…orz)
回答いただきました皆様ありがとうございました。
ご指摘ありがとうございました。結局GlobalFree()を削ってもエラーが出てきた事からひょっとして変換時(A→Ala)の処理がおかしいのではと思い文字列の操作を以下のようにしたところ正常に動くようになりました。
[hide][code]
Sub MainWnd_CommandButton1_Click()
hEdit = GetDlgItem(hMainWnd, EditBox1) 'エディットボックスのハンドルを取得
cOneLettSeq = GetWindowTextLength(hEdit) '文字列の長さを取得
'check = GetWindowText(hEdit,OneLettSeq, cOneLettSeq + 1) '文字列を取得
check = GetWindowTextStr(hEdit,OneLettSeq) '文字列をString型のまま取得
ThrLettSeq = ""
If check = 0 Then
MessageBox(0,"文字列を入力してください。","Err",MB_OK)
End If
'sOneLettSeq = MakeStr(OneLettSeq) '型変換BytePtr→String
For i = 1 to cOneLettSeq
'OneText = Mid$(sOneLettSeq,i,1)
OneText = Mid$(OneLettSeq,i,1)
Select Case OneText
Case "A","a"
ThrLettSeq = ThrLettSeq + "Ala"
Case Else
MessageBox(0,"指定のアルファベットを入れてください","Err",MB_OK)
Exit Sub
End Select
Next i
hText = GetDlgItem(hMainWnd,Static1)
SetWindowText(hText,ThrLettSeq)
End Sub
[/code][/hide]
特に以下のコードの部分が問題だったのだと思われます。
[code]
'check = GetWindowText(hEdit,OneLettSeq, cOneLettSeq + 1) '文字列を取得
check = GetWindowTextStr(hEdit,OneLettSeq) '文字列をString型のまま取得
[/code]
イグトランスさんの[b]String型のGetWindowText[/b]の投稿欄にあったようにGetWindowTextでメモリを確保していなかったために起こったことのように思います。(前回もメモリ確保忘れてエラーが出てここに投稿したのに…orz)
回答いただきました皆様ありがとうございました。