配列の中から指定された文字列が入っている配列を取り出したい

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

配列の中から指定された文字列が入っている配列を取り出したい

#1 投稿記事 by Mario2 »

(ちょっとタイトルが長くなりましたが)

こんにちは。SJISへの変換等参考にさせてもらっています。
で、今回の質問は「(件名)」です。
たとえば、以下のような変数・配列があるとします。

コード: 全て選択

Dim FilePass(255) As String,i As Long,FilePass2(255) As String
Do
FilePass(i)=Str$(i)
i=i+1
If i=255 Then ExitDo
Loop
上の場合は少ない文字列ですが、たとえば上の場合は文字の先頭1文字目が"2"の時、FilePass2にその先頭1文字目が"2"の文字列を代入していきたいのです。
上のを実行してみると

コード: 全て選択

FilePass2(0)=2
FilePass2(1)=20
FilePass2(2)=21
FilePass2(3)=22
(中略)
FilePass2(17)=208
FilePass2(18)=209
FilePass2(19)=210
(以下略)
となって欲しいのです。

上記の説明が分かりにくいと思った方は、
「Winampで作成される.pls(プレイリストファイル)で、記入されているFile*=の部分のファイルパスをFilePass2に代入していきたいのです。」
で、分かりますでしょうか。

(多分下の説明の方が短くて分かりやすいと思いますが・・・)
よろしくお願いします。
Toshi
記事: 98
登録日時: 2005年7月19日(火) 19:47
お住まい: 山形県
連絡する:

#2 投稿記事 by Toshi »

この様にするということでしょうか?

コード: 全て選択


Dim FilePass(255) As String,i As Long,i2 As Long,FilePass2(255) As String
Do
FilePass(i)=Str$(i)
If Asc(FilePass(i))=Asc("2") Then
	FilePass2(i2)=FilePass(i)
	i2=i2+1
End If
i=i+1
If i=255 Then ExitDo
Loop

Mario2
記事: 205
登録日時: 2005年5月31日(火) 13:31
お住まい: 大阪市
連絡する:

#3 投稿記事 by Mario2 »

> この様にするということでしょうか?
> (略)

そうです。まさに自分が望んでいた動作でした。
ちなみに、入っていたのは文字列だったので、自分のしたかった動作は、以下のようにしました。
(LINEINPUTはここの過去ログ?から取りました。ありがとうございます。)

コード: 全て選択

Dim strBuf As String
Dim FilePass(255) As String,i As Long,i2 As Long,FilePass2(255) As String
	Open ofn.lpstrFile For Input As #1
		While( Eof(1)=0 )
            'ファイル内容の一行ずつの読み取り
			LINEINPUT(1,strBuf)
            '読み取ったファイル内容の追加
			FilePass(i)=strBuf
			i=i+1
		Wend
	Close #1
i=0
Do
If Asc(FilePass(i))=Asc("F") Then
    FilePass2(i2)=FilePass(i)
    i2=i2+1
End If
i=i+1
If i=255 Then ExitDo
Loop
Toshiさん、ありがとうございました。
返信する