ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月28日(日) 01:00

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - Mid$関数で
作成者 メッセージ
  記事の件名:   引用付きで返信する
水波形さん、イグトランスさん ヒント 大変ありがとうございます。

水波形さんの方法はMicrosoftへのエラ-報告画面が出たので止めました。
イグトランスさんのGetWindowTextStr関数とCode(EditBox1に修正して)でEditBox2に指定どおりの文字列が表示されました。
投稿記事 Posted: 2012年9月30日(日) 08:49
  記事の件名:   引用付きで返信する
水波形さんの方法でうまくいきます。

このほか、エディットボックスの内容の取得の一番最後の淡幻星さんの発言のところにある拙作GetWindowTextStr関数でも可能です。
コード:
GetWindowTextStr(GetDlgItem(hMainWnd, EditBox2), Data$)
buffer$ =Mid$(Data$, 1, 2)
SetWindowText(GetDlgItem(hMainWnd, EditBox2), buffer$) 
GetWindowText関数はABのStringのことなど露知らずです。なので、水波形さん案のZeroStringにせよGetWindowTextStrにせよ、こちら側でStringとのすりあわせを行ってあげないといけないということなのです。
投稿記事 Posted: 2012年9月30日(日) 02:10
  記事の件名:   引用付きで返信する
ポインタの概念が私はまだ、完璧ではないのでそのあたりはカットして……

コード:
Data$ = ZeroString(8)
GetDlgItemText(hMainWnd, EditBox1, VarPtr(Data$), 8)
buffer$ =Mid$(Data$, 1, 2)
SetWindowText(GetDlgItem(hMainWnd, EditBox2), buffer$) 
と、するとうまくいきそうな気がします。
実験していないので定かではありませんが……
投稿記事 Posted: 2012年9月30日(日) 00:20
  記事の件名:  Mid$関数で  引用付きで返信する
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に入力した内容の指定文字列が表示されると思ったのですが、何故でしょうか?
投稿記事 Posted: 2012年9月29日(土) 09:31

全ての表示時間は UTC+09:00 です


ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean