テキストファイルから

返信する


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

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

トピックのレビュー
   

展開ビュー トピックのレビュー: テキストファイルから

Re: テキストファイルから

by シルフィード » 2005年12月11日(日) 19:04

> 淡幻星さんも私もコマンドプロンプトで書いていますが,どちらもコマンドライン以外でも応用できますよ。
> 行に分解するロジックだけはそのまま用い,画面に表示する部分だけを変えればよいですので。
>
> 参考にプログラムを作ってみました。
> テキストファイルを指定し,それを1行ずつ分けてコンボボックスに格納するものです。
> http://www.sinryow.net/hitori/TextList.lzh

Sinryow さん
サンプルまで作っていただきありがとうございます。
これで作りたいものが作れます。

Re: テキストファイルから

by Sinryow » 2005年12月11日(日) 17:15

シルフィード さんが書きました:どうもありがとうございます。

今作ってるのは、テキスト(ファイル名は決まっている)から、[改行区切りののデータ(2005/12/3のような形式で日付が不規則に入ってます・・・)]を受け取り、
コンボボックスに入れるものです。
なので、できればコマンドプロンプトではないほうがいいです。
"EDIT"もできれば、あまり使いたくありませんが、他によい方法がないようでしたら、この方法でいくことにします。
淡幻星さんも私もコマンドプロンプトで書いていますが,どちらもコマンドライン以外でも応用できますよ。
行に分解するロジックだけはそのまま用い,画面に表示する部分だけを変えればよいですので。

参考にプログラムを作ってみました。
テキストファイルを指定し,それを1行ずつ分けてコンボボックスに格納するものです。
http://www.sinryow.net/hitori/TextList.lzh

Re: テキストファイルから

by シルフィード » 2005年12月11日(日) 11:09

淡幻星さん
Sinryowさん
Uhspさん

どうもありがとうございます。

今作ってるのは、テキスト(ファイル名は決まっている)から、[改行区切りののデータ(2005/12/3のような形式で日付が不規則に入ってます・・・)]を受け取り、
コンボボックスに入れるものです。
なので、できればコマンドプロンプトではないほうがいいです。
"EDIT"もできれば、あまり使いたくありませんが、他によい方法がないようでしたら、この方法でいくことにします。

よろしくおねがいします。(←たぶん口癖)

by Uhsp » 2005年12月11日(日) 02:01

 目的によって色々な手段が考えられますが、この場合 何行・n行取得
なので私が簡単だと思うのは”EDIT"にファイルを一括で読み込んで
あとはSendMessageを使用して「EM_GETLINECOUNT・EM_GETSEL」で
良いと思います。

コード: 全て選択


CreateFile(...
ReadFile(...
CloseHandle(...

Dim Tx as String
SendMessage(Ctl-Handle,WM_SETTEXT,0,StrPtr(TX))

SendMessage(Ctl-Handle,EM_GETLINECOUNT,0,0)

Dim Bx[1024] as Byte
SetWord(Bx,1024)
SendMessage(Ctl-Handle,EM_GETSEL,N1,Bx)

Re: テキストファイルから

by Sinryow » 2005年12月11日(日) 01:46

自分がコードを組んでいる間に,淡幻星さんが先に投稿していました(汗)
ただ,私は手法が異なる(※)ので一応投稿しておきます。

※一度読み込み済みのテキストデータに対して適用する方法です。行に分割した結果を保存しておけるという利点があります。


※空の行を選ぶと(Mid$の第3引数が0になると)バグります。(汗)
 今日はもう時間がないので近いうち修正します。
 →2005.12.11 10:24修正済。

2005.12.11 17:16再修正。

Re: テキストファイルから

by 淡幻星 » 2005年12月11日(日) 00:57

テキストファイルからデータを変数に読み込んで、そのデータが何行あるかを調べるにはどうすればいいですか?
また、そのデータのn行目の内容だけを取り出すのはどうすればいいですか?
ちゃんと(?)やるなら
 CreateFile()でファイルを開いて、
 ReadFile()で内容を全部読み込んで、
 lstrstr()あたりでデータを検索し、
 lstrcpy()あたりでコピーして取り出す。
 行数を知るには、そこまでの途中にある改行コードの個数を
 lstrchr()あたりで検索して数える。
こんな感じになると思います。
(・・・あれ?lstrstr()って標準で使えたっけ?(汗)
 もしだめだったら、実践コードモジュールに定義が載ってますので、
 そちらを参照ください^^;)

簡単にやるなら、実践コードモジュールのLineInput()を使うのが
楽だと思います。
こちらのコード
適当なファイル(仮にEmulateAB2.sbpとします)に保存し、
こんな感じでできると思います。

コード: 全て選択

#include "EmulateAB2.sbp"

Dim strTarget As String '探すデータ文字列を格納
Dim strCopy As String '取り出した文字列を格納
Dim strTextSource As String 'ファイルからの読み取りに使用
Dim nLine As Long '見つかった行番号を格納

strTarget = "探すデータ文字列"
Open "file.txt" For Input As #1
	While( 0=Eof(1) )
		'一行ずつ読み込む
		LineInput 1, strTextSource
		'↑AB4では以下のように変える必要があるかも↓
		'LineInput( 1, strTextSource )

		'読み込んだデータ内に目的のデータが有るか検索
		nLine = InStr( 1, strTextSource, strTarget )
		If( nLine<>NULL )Then
			'見つかったら検索ループを抜ける。
			ExitWhile
		EndIf
	Wend
Close 1

'データをコピー(取り出す)・・・ってそのままなのでやる意味ないですね^^;
strCopy = strTextSource

'表示してみる
strCopy = Str$(nLine) + "行目:" + strCopy
MsgBox NULL, strCopy
動作確認してないので、ミスってたら御免なさい。

テキストファイルから

by シルフィード » 2005年12月10日(土) 23:47

テキストファイルからデータを変数に読み込んで、そのデータが何行あるかを調べるにはどうすればいいですか?
また、そのデータのn行目の内容だけを取り出すのはどうすればいいですか?

よろしくおねがいします

ページトップ