ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月19日(金) 00:39

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - [AB4] ファイルやディレクトリのリストを作成する
作成者 メッセージ
  記事の件名:  Re: [AB4] ファイルやディレクトリのリストを作成する  引用付きで返信する
> If (wfd.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
コード:
Select Case wfd.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY
    Case 0:    '<< ディレクトリでない場合
    Case Else: '<< ディレクトリの場合
End Select
このようにすればかなり速度アップできますよ♪
参考まで。
[/code]
投稿記事 Posted: 2005年7月06日(水) 01:11
  記事の件名:  [AB4] ファイルやディレクトリのリストを作成する  引用付きで返信する
BackSearchABの1491「何方かお願いします。」を基にし,
ディレクトリを指定し,そこにあるファイルとディレクトリのリストを作成する関数を作成しました。
なお結果はStrListクラス(http://ab.sinryow.net/strlist.php)に格納されるので,別途こちらをダウンロードしてお使い下さい。

Function DirList(szPath As String, ByRef sl As StrList)(dwOption As DWord) As Long
  szPath どのパスを検索するかを指定します。
  sl 結果を格納するStrListクラスを指定します。
  dwOption 検索オプションです。
    DIRLIST_RECURSIVE ディレクトリを再帰的に検索します(結果はすべて最初に指定したディレクトリを基準にします)。DIRLIST_NO_DIRSと同時には指定できません(DIRLIST_NO_DIRSが優先されます)。
    DIRLIST_NO_DIRS 検索結果にディレクトリを含めません。
    DIRLIST_NO_FILES 検索結果にファイルを含めません。
ディレクトリ名は,その後ろに「\」をつけた状態で格納されます。
コード:
#include "StrList.sbp"

Const DIRLIST_RECURSIVE		=1
Const DIRLIST_NO_DIRS		=2
Const DIRLIST_NO_FILES		=4

Function DirList(szPath As String, ByRef sl As StrList)(dwOption As DWord) As Long
	DirList=_DirList(szPath, "", sl, dwOption)
End Function

Function _DirList(szPath As String, szAddPath As String,
				  ByRef sl As StrList, dwOption As DWord) As Long
	Dim hFind As HANDLE
	Dim wfd As WIN32_FIND_DATA
	Dim temp As String

	' 末尾が「\」で終わっていないパスの場合は付加する
	If szPath[Len(szPath)-1]<>92 Then
		szPath=szPath+"\"
	End If
	
	' 1つ目の要素を得る(同時にハンドル作成)
	hFind=FindFirstFile(szPath+"*.*", wfd)
	If hFind=INVALID_HANDLE_VALUE Then
		_DirList=FALSE
		Exit Function
	End If
	
	' 次々検索する
	Do
		If (wfd.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) _
		= FILE_ATTRIBUTE_DIRECTORY Then
			' ディレクトリが発見された場合
			If (dwOption And DIRLIST_NO_DIRS)=0 And _
			wfd.cFileName<>"." And wfd.cFileName<>".." Then
				temp=MakeStr(wfd.cFileName)+"\"
				sl.AddBtm(szAddPath+temp)
				If (dwOption And DIRLIST_RECURSIVE)<>0 Then
					_DirList(szPath+temp, szAddPath+temp, sl, dwOption)
				End If
			End If
		Else
			' ファイルが発見された場合
			If (dwOption And DIRLIST_NO_FILES)=0 Then
				sl.AddBtm(szAddPath+MakeStr(wfd.cFileName))
			End If
		End If
	Loop While (FindNextFile(hFind, wfd) = TRUE)

	' 検索ハンドルを解放する
	FindClose(hFind)
	_DirList=TRUE
End Function
投稿記事 Posted: 2005年6月26日(日) 17:55

全ての表示時間は UTC+09:00 です


ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean