txtファイルに書かれているものを・・・

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
Mario2
記事: 205
登録日時: 2005年5月31日(火) 13:31
お住まい: 大阪市
連絡する:

txtファイルに書かれているものを・・・

#1 投稿記事 by Mario2 »

たとえば、Wドライブにfile.txtのファイルがあり、そのテキストファイルには
W:\ActiveBasic\ProjectEditor.exe
W:\ActiveBasic\BasicCompiler.exe
W:\ActiveBasic\BasicHelp.chm
と言うものが書かれていたとします。それをListBoxに追加していきたいのですが、InstrやDo~Loopを用いて自分でがんばってみましたが、自分のしたい結果にはなりませんでした。
この少し下のトピックスにTXTファイルを複数行読める関数「File_Open」もつかってみましたが、やはり自分の力不足なのか、できませんでした。

簡潔にまとめると、
「TXTファイルに書かれている内容(複数行)を、順番にListBoxに追加していきたい」
と言うことです。

簡単なサンプルでも良いので、教えてください。よろしくお願いします。
淡幻星
記事: 183
登録日時: 2005年7月19日(火) 07:02
お住まい: 宮城県
連絡する:

Re: txtファイルに書かれているものを・・・

#2 投稿記事 by 淡幻星 »

> 自分のしたい結果にはなりませんでした。
というのが、どういう状況かは分かりませんので、なんとも言えませんが。

> 簡単なサンプルでも良いので、教えてください。よろしくお願いします。
RADを使用して、MainWnd に貼り付けたリストボックスのIDをListBox1 とします。
以下の MainWnd.sbp で変更した場所は「TODO: この位置に~」と「Sub MainWnd_Create()」です。
WSLib_MacroEmuVer2.x.sbp は実践コードモジュール
http://www.discoversoft.net/forum/viewtopic.php?t=214のコードです。
まぁ、使っているのはLineInputだけですが(^^;)。

コード: 全て選択


'-----------------------------------------------------------------------------
'  イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd

' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
#include <WSLib_MacroEmuVer2.x.sbp>


'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数

Function MainWndProc(hWnd As DWord, dwMsg As DWord, wParam As DWord, lParam As DWord) As DWord
	' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。

	' イベントプロシージャの呼び出しを行います。
	MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function


'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。

Sub MainWnd_Destroy()
	TestWnd_DestroyObjects()
	PostQuitMessage(0)
End Sub

Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
	Dim strBuf As String
	Dim strFile As String
	Dim retAns As Long
	Dim hList As Long

	'読み取るファイルの絶対パスを指定して下さい。
	strFile = "***\ActiveBasic3.x\project\TestWnd\file.txt"

	'リストボックスのハンドルを得る。
    hList = GetDlgItem( hMainWnd, ListBox1 )

	Open strFile For Input As #1
		While( Eof(1)=0 )
			'ファイル内容の一行ずつの読み取り
			LINEINPUT 1, strBuf
			'読み取ったファイル内容の追加
			retAns = SendMessage( hList, LB_ADDSTRING, 0, StrPtr( strBuf ) )
		Wend
	Close #1
End Sub
Ver3.13で確認。
Mario2
記事: 205
登録日時: 2005年5月31日(火) 13:31
お住まい: 大阪市
連絡する:

Re: txtファイルに書かれているものを・・・

#3 投稿記事 by Mario2 »

> > 自分のしたい結果にはなりませんでした。
> というのが、どういう状況かは分かりませんので、なんとも言えませんが。
説明不足でしたね・・・すいません。
それと、
#include <WSLib_MacroEmuVer2.x.sbp>
は、同じフォルダ(Includeフォルダにはいれずに)に入れたかったので、
#include "WSLib_MacroEmuVer2.x.sbp"
としました。
さらに、
LINEINPUT 1, strBuf
も、AB4では
LINEINPUT( 1, strBuf)
でないといけないみたいです。
' Ver3.13で確認。
Ver4.04.00でも確認しました。

それと、結果ですが、上手く行きました。淡幻星さん、ありがとうございました。
mako20
記事: 26
登録日時: 2005年5月31日(火) 01:10
お住まい: 岡山県
連絡する:

#4 投稿記事 by mako20 »

僕にも、役立ちます^^。ちょうど同じことを考えていたので、淡幻星さん、僕からもお礼で
ありがとうございます
返信する