文字列の取得について

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
MAVE

文字列の取得について

#1 投稿記事 by MAVE »

はじめまして。AB初心者です。ABを使って、N88BASICで書けば、

INPUT A$
OPEN "bookcode,csv" as append #1
PRINT #1,A$
CLOSE #1

のようなことをしたいと思い、

' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Dim code As String


     ・ 

Sub MainWnd_EditBox1_Change()
  GetDlgItemText(hMainWnd,EditBox1,code,13)
End Sub
     ・
     ・ 

Sub MainWnd_CommandButton1_Click()

open "bookcode.csv" for append as #1
print #1,code
close #1

End Sub

と、エディットボックスから文字列をcodeに取得し、ファイルに書き込もうとしたのですが、デバグでcodeに該当文字列が代入されているのが確認されているのにもかかわらず、bookcode.csvに出力されてくるのはNULです。実際にはいくつかのエディットボックスから複数の文字列を取得し、CSV形式で出力しています。コンマだけしかファイルに出力されないのです。やはり書き方が間違っているのでしょうか。
yama
記事: 58
登録日時: 2005年5月31日(火) 21:11
お住まい: 新潟市
連絡する:

RE:文字列の取得について

#2 投稿記事 by yama »

以下のコードで成功しています
MAVEさんのコードは試していませんが、参考にしていろいろいじってみてください。

Dim code As String 'テキストバッファの格納用
Dim length As Long 'テキストの長さ
'本文テキスト データを格納するためのバッファ領域を確保
Dim hEdit As HWND
hEdit=GetDlgItem(hMainWnd,EditBox1) 'EditBox1のハンドル
length=GetWindowTextLength(hEdit)
code=ZeroString(length+1)
GetWindowText(hEdit, code, length+1)
'EditBox1から取得した文字列を保存しようとするとNULLが入ってしまう
'最後のNULLを取る
code=Left$(code,InStr(1,code,Chr$(0))-1)
'ファイルに追加書き込み
Open "send-log.ini" For Append As #2 '末尾に追加でひらく
'本文の書き込み
Write #2,code
close #2
MAVE

ありがとうございます

#3 投稿記事 by MAVE »

早速やってみようと思います。しばらく時間がまとまって取れないのですが、ぜひ完成させたいと思います。ありがとうございました。もしもっとアドバイスがあればよろしくお願いします。
返信する