ページ 1 / 1
指定した文字列の取得
Posted: 2006年5月26日(金) 18:06
by GTR
指定された文字列をEditBox1から取得したいのですが、関数が分かりません。
どういう関数を使えば良いでしょうか?
使用例もできれば書いていただきたいです。
Re: 指定した文字列の取得
Posted: 2006年5月26日(金) 18:22
by 7
> 指定された文字列をEditBox1から取得したいのですが、関数が分かりません。
これって、エディットボックスから取得した文字列に指定された文字列が含まれているかどうかってことですよね。
> どういう関数を使えば良いでしょうか?
InStr関数を使えば良いんじゃないでしょうか。
> 使用例もできれば書いていただきたいです。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Dim hEdit As HWND
Dim lpStr As LPSTR
Dim findStr="指定された文字列" As LPCSTR
Dim length As Long
hEdit=GetDlgItem(hMainWnd,EditBox1)
length=GetWindowTextLength(hEdit)+1
lpStr=malloc(length)
lpStr[GetWindowText(hEdit,lpStr,length)]=0
If InStr(1,lpStr,findStr)<>0 Then
MessageBox(hMainWnd,findStr,"",MB_OK)
End If
free(lpStr)
Posted: 2006年5月26日(金) 18:52
by GTR
そうではありません。
初めから取得する文字列は決まっていて、
EditBoxにも書かれていると想定してください。
説明不足でした。
Posted: 2006年5月26日(金) 20:39
by 7
> 初めから取得する文字列は決まっていて、
> EditBoxにも書かれていると想定してください。
ですから、それは「取得する文字列」を返すだけで良いんじゃないでしょうか?
EditBox1に "123456789" と入力されているとして、EditBox1の内容から「取得する文字列」 "123" だけを取得したい場合、EditBox1の内容に "123" が含まれるか判断して、含まれるなら "123" を返すだけで良いと思うんです。
さっき提示したコードはそういうつもりで書いたコードなんですけど...。
さっきのコード動かしてみましたか?
取得したい文字列は "指定された文字列" であり、EditBox1に "指定された文字列" という文字列が含まれているなら、 "指定された文字列" という文字列が表示されるんですけど。(ややこしいな)
本当にエディットボックスから指定された文字列を取得したいなら、エディットボックスの文字列を全部取得して、InStr関数で取得したい文字列が存在するか確認して、存在するなら戻り値を利用してどの位置から文字列を取得するか取得して、「取得したい文字列」の長さを取得してどこまで文字列を取得するか取得して、それらを判定してエディットボックスの内容から文字列を抜き取れば可能ですけど、これはさっきも書いたように「取得する文字列」を返すだけで同じことができるんです。
はっきりと書きますけど、エディットボックスから指定された文字列を抜き出す、っていうのは美しいやり方ではありません。
もしこれがGTRさんの望む回答じゃない場合、言葉の選び方、状況の説明、など質問の仕方を変えてください。
数学も苦手ですけど国語も得意じゃないので自分の読解力ではこういう意味にしか捉えられません。
とりえあず自分が最善だと思う、「エディットボックスから指定された文字列を取得する」っていう方法はさっき書いた通りです。