[リストへもどる]
一括表示

投稿時間:2002/09/02(Mon) 20:15
投稿者名:MANA
URL :
タイトル:
ファイルの表示方法
次の作業方法案を教えてください。
  A-1.txt A-2.txt A-3.txt A-4.txt A-5.txt
  といった風にあるファイルを「A」と表示し、データと
  しては1〜5までの中身を表示するという方法は
  どうやって考えればよいのでしょうか?簡単でも
  いいので、教えてくださいっ♪

投稿時間:2002/09/03(Tue) 00:01
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: ファイルの表示方法
回答ではありません。
ここの[注意事項]の中の上手な質問の仕方等を参考に、もう少し何がしたいのか
具体的に書いた方がいいのでは、少なくても私には何をしようとされているのか
理解できません。

投稿時間:2002/09/03(Tue) 00:18
投稿者名:Lantern
Eメール:
URL :
タイトル:
Re: ファイルの表示方法
> 次の作業方法案を教えてください。
>   A-1.txt A-2.txt A-3.txt A-4.txt A-5.txt
>   といった風にあるファイルを「A」と表示し、データと
>   しては1〜5までの中身を表示するという方法は
>   どうやって考えればよいのでしょうか?簡単でも
>   いいので、教えてくださいっ♪

MSDNでDIR関数の使用例を参考にしてください。
ファイルの有無を調べて、あればOpenして表示。

投稿時間:2002/09/03(Tue) 09:04
投稿者名:MANA
URL :
タイトル:
Re^2: ファイルの表示方法
ファイルを
  Private Const Mpath = "C:\DATA\"
  Private kakutyosi   As String
  Private NGNumber    As String
  Private Nowdate     As String
Private Sub Command1_Click()
    Dim strtextFile As String
    Dim filekensaku As Integer
    Dim i           As Integer
  Dim strMyfile() As String
    
    Nowdate = Format$(Date, "yyyy-mm-dd")
    kakutyosi = "TxT"
    strtextFile = Dir$(Mpath & Nowdate & "\*.*")
    Do While strtextFile <> ""
        If StrComp(Right$(strtextFile, 3), kakutyosi, 1) = 0 Then
            filekensaku = filekensaku + 1
            ReDim Preserve strMyFile(filekensaku)
            strMyFile(filekensaku) = strtextFile
        End If
        strtextFile = Dir$
    Loop
    For i = 1 To filekensaku        
        If FileLen(Mpath & Nowdate & "\" & strMyFile(i)) = 0 Then
        Else
            List1.AddItem strMyFile(i)
        End If
    Next i
で現在表示させているのですが、これを、strMyFile(i)を
Left(strMyFile(i),11)が同一で、であったら、List1には
FileName = Right(strMyfile(i),11)の一つを表示させ、
Private Sub List1_Click()したら、同一FileNameのstrMyfile(i)を
すべて表示(FileName-1.txt,FileName-2.txt,FileName-3.txtをすべて表示)
させる方法です。
教えてください。

投稿時間:2002/09/03(Tue) 10:12
投稿者名:nobu
Eメール:
URL :
タイトル:
Re^3: ファイルの表示方法
>             List1.AddItem strMyFile(i)
>         End If
>     Next i
> で現在表示させているのですが、これを、strMyFile(i)を

> Left(strMyFile(i),11)が同一で、であったら、List1には
> FileName = Right(strMyfile(i),11)の一つを表示させ、

ここは 左1文字がAが複数あれば1ケのみ表示、Bが複数あれば
Bを1ケ表示....重複削除ですね。
List1にはAとBは表示されていてAをクリックすれば
Aの付くファイル名を順次読み出しては表示して行く...。
表示エリアはどこか別の場所に....。

重複削除のアルゴリズム
1件目のレードを読み込み、キーがAならAをキーにして同じものがあるか
最後まで探す。同じものがあれば出力しない。
最後迄言ったら2件目を読み、キーがBなら、Bをキーにして..繰り返し。

List1_Click() での表示方法
クリックした文字を取得、Aならファイル名の先頭がAのものを読み込み
表示、他のもAの付くファイルがあれば読み込み、...終わりまで繰り返し。

....順に1ケずつやられてみたら如何でしょうか?

投稿時間:2002/09/03(Tue) 11:45
投稿者名:A221
Eメール:
URL :
タイトル:
Re^3: ファイルの表示方法(再)
ひとつの考え方としては
1.番号 ・ 左からファイル名11文字分 を持った上位配列
(重複のないこと)
2.(ファイル名から導出された上位配列の)番号・ファイル名 を持った配列

を用意して「2.番号・ファイル名 を持った配列」への代入時に
重複がないかをチェックしながら
「1.番号 ・ 左からファイル名11文字分 を持った上位配列」を作り、
リストへ「上位配列」の追加を行います。

で、リストクリック時に「番号」を元に下位配列を比較します。


下記、走らせてないので動作の保証はしません。
--------------------------------------------------------------------------
Option Explicit

Private Const Mpath = "C:\DATA\"
Private kakutyosi As String
Private NGNumber As String
Private Nowdate As String

Private Type Filechk
    index As Long
    Name As String
End Type

Private filekensaku As Integer

Private strMyfile() As Filechk
Private stackPath() As Filechk

Private stackPathCount As Long

Private Sub Command1_Click()
Dim strtextFile As String
Dim i As Integer

stackPathCount = 0
Nowdate = Format$(Date, "yyyy-mm-dd")
kakutyosi = "TxT"

strtextFile = Dir$(Mpath & Nowdate & "\*.*")

Do While strtextFile <> ""
    If StrComp(Right$(strtextFile, 3), kakutyosi, 1) = 0 Then
        filekensaku = filekensaku + 1
        ReDim Preserve strMyfile(filekensaku)
        strMyfile(filekensaku).Name = strtextFile

        i = 0
        Do
            If stackPath(i).Name = letf(strMyfile(filekensaku).Name, 11) Then
                strMyfile(filekensaku).index = stackPath(i).index
            End If
            i = i + 1
        Loop Until i > stackPathCount

        If i > stackPathCount Then
            stackPathCount = stackPathCount + 1
            ReDim Preserve stackPath(stackPathCount)
            stackPath(stackPathCount).index = stackPathCount
            stackPath(stackPathCount).Name = letf(strMyfile(filekensaku).Name, 11)
            strMyfile(filekensaku).index = stackPathCount
        End If

    End If
    strtextFile = Dir$
Loop

For i = 0 To stackPathCount
    List1.AddItem stackPath(stackPathCount).Name
Next i
End Sub

Private Sub List1_Click()
Dim i As Long
Dim index As Long

index = List1.ListIndex
List2.Clear

For i = 0 To filekensaku
    If stackPath(index).index = strMyfile(i).index Then
        List2.AddItem Right$(strMyfile(i).Name, 11)
    End If
End Sub

投稿時間:2002/09/03(Tue) 16:32
投稿者名:MANA
URL :
タイトル:
Re^4: ファイルの表示方法(再)
If stackPath(i).Name = Left(strMyfile(filekensaku).Name, 11) Then
という所で、インデックスが有効範囲でありませんと出るのですが、分かりません。
これは、どういうことなんですか?

投稿時間:2002/09/03(Tue) 16:41
投稿者名:A221
Eメール:
URL :
タイトル:
Re^5: ファイルの表示方法(再)
あ!ごめん。動的配列の初期忘れでした。

stackPathCount = 0の後に
ReDim stackPath(0)の宣言をしてください。

> If stackPath(i).Name = Left(strMyfile(filekensaku).Name, 11) Then
> という所で、インデックスが有効範囲でありませんと出るのですが、分かりません。
> これは、どういうことなんですか?

ちなみにこれは配列stackPathにi(=0)番目の要素が存在しないため起こりました。

投稿時間:2002/09/03(Tue) 17:04
投稿者名:MANA
URL :
タイトル:
Re^6: ファイルの表示方法(再)
stackPathCount = 0の後にReDim stackPath(0)の宣言したのですが、
今度は、ReDim stackPath(0) の箇所で「インデックスは有効範囲にありません」
と出ました。これは、なんでですか?

投稿時間:2002/09/03(Tue) 17:49
投稿者名:A221
Eメール:
URL :
タイトル:
Re^7: ファイルの表示方法(再)
> stackPathCount = 0の後にReDim stackPath(0)の宣言したのですが、
> 今度は、ReDim stackPath(0) の箇所で「インデックスは有効範囲にありません」
> と出ました。これは、なんでですか?

うーん、「Option Base 1」とか、宣言されてないですか?

投稿時間:2002/09/03(Tue) 17:58
投稿者名:MANA
URL :
タイトル:
Re^8: ファイルの表示方法(再)
あっ、宣言してます!宣言を取らないと駄目ですか?

投稿時間:2002/09/04(Wed) 08:58
投稿者名:A221
Eメール:
URL :
タイトル:
Re^9:ファイルの表示方法
> あっ、宣言してます!宣言を取らないと駄目ですか?

おはようございます。

「Option Base 1」という宣言は配列の添え字の底を1に固定しなさいという意味です。
したがって、配列の0番は使ってはいけないのです。

投稿時間:2002/09/04(Wed) 10:07
投稿者名:MANA
URL :
タイトル:
(お礼)ファイル・・
そういう意味だったのですね。
分かりました。ありがとうございます!

投稿時間:2002/09/04(Wed) 16:15
投稿者名:MANA
URL :
タイトル:
重複について
すいません。重複についての質問です。

For ii = 1 To filekensaku
    If FileLen(Mpath & Nowdate & "\" & strMyfile(ii)) = 0 Then
    Else
        ファイル名前 = Left(strMyfile(ii), 11)
        List1.AddItem ファイル名前
    End If    
Next ii

として、このファイル名前に重複が存在すれば、重複したものを
見えなくする。という処理は可能ですか?

投稿時間:2002/09/04(Wed) 16:21
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 重複について
1〜10迄聞くような事をせず、まず自分で解る範囲はしらべましょう。

と言う事で、ここのHPの下記のタイトルを見て試してから、再度質問して下さい。

  リストボックス内を先頭一致検索・完全一致検索(APIを使って)

投稿時間:2002/09/04(Wed) 18:23
投稿者名:MANA
URL :
タイトル:
Re^2: 重複について
出来ました!すいません^^;
ありがとうございます♪