Mid$関数で

返信する


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

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

トピックのレビュー
   

展開ビュー トピックのレビュー: Mid$関数で

by ゲスト » 2012年9月30日(日) 08:49

水波形さん、イグトランスさん ヒント 大変ありがとうございます。

水波形さんの方法はMicrosoftへのエラ-報告画面が出たので止めました。
イグトランスさんのGetWindowTextStr関数とCode(EditBox1に修正して)でEditBox2に指定どおりの文字列が表示されました。

by イグトランス » 2012年9月30日(日) 02:10

水波形さんの方法でうまくいきます。

このほか、エディットボックスの内容の取得の一番最後の淡幻星さんの発言のところにある拙作GetWindowTextStr関数でも可能です。

コード: 全て選択

GetWindowTextStr(GetDlgItem(hMainWnd, EditBox2), Data$)
buffer$ =Mid$(Data$, 1, 2)
SetWindowText(GetDlgItem(hMainWnd, EditBox2), buffer$) 
GetWindowText関数はABのStringのことなど露知らずです。なので、水波形さん案のZeroStringにせよGetWindowTextStrにせよ、こちら側でStringとのすりあわせを行ってあげないといけないということなのです。

by 水波形 » 2012年9月30日(日) 00:20

ポインタの概念が私はまだ、完璧ではないのでそのあたりはカットして……

コード: 全て選択

Data$ = ZeroString(8)
GetDlgItemText(hMainWnd, EditBox1, VarPtr(Data$), 8)
buffer$ =Mid$(Data$, 1, 2)
SetWindowText(GetDlgItem(hMainWnd, EditBox2), buffer$) 
と、するとうまくいきそうな気がします。
実験していないので定かではありませんが……

Mid$関数で

by ゲスト » 2012年9月29日(土) 09:31

Dim Data$ As String
Dim buffer$ As String
と変数を定義して、MainWnd_EditBox1_Change()イベントで、
(1)

コード: 全て選択

	GetDlgItemText(hMainWnd, EditBox1, Data$, 8)
	SetWindowText(GetDlgItem(hMainWnd, EditBox2), Data$)
とすると、EditBox1に入力した文字列がEditBox2にそのまま正常に表示されます。
又、
(2)

コード: 全て選択

	Data$ ="1234"
	buffer$ =Mid$(Data$, 1, 2)
	SetWindowText(GetDlgItem(hMainWnd, EditBox2), buffer$)
とやっても、EditBox2には文字列"12"が正常に表示されます。

ところが、
(3)

コード: 全て選択

	GetDlgItemText(hMainWnd, EditBox1, Data$, 8)
	buffer$ =Mid$(Data$, 1, 2)
	SetWindowText(GetDlgItem(hMainWnd, EditBox2), buffer$)
とすると、EditBox1に入力してもEditBox2には何も表示されません。

環境は、Windows XP SP3、ActiveBasic ver.4.24.00で起きています。
Windows Meでも同様なのでOSは関係ないと思います。
(3)は(1)と(2)の組み合わせで、EditBox2にはEditBox1に入力した内容の指定文字列が表示されると思ったのですが、何故でしょうか?

ページトップ