The project of U-WA-
http://uwa.potetihouse.com/
トップページ > 過去ログ > 記事閲覧
アイコン TKFPDLL_1.3.8-1でのフォルダ表示について
日時: 2008/04/21 14:56
名前: LINK

Toki殿
TKFP.DLLについて質問があります。
サンプルプログラムを使用し、フォルダ一覧を取得していますが一部のフォルダがListboxに表示されません。

LOGを確認したところ下記のようになっていました。
合計 34
drwxr-xr-x 11 xxxxxx sys 512 4月 11日 17:37 .
drwxr-xr-x 28 xxxxxx sys 3072 4月 21日 03:03 ..
-rw-r--r-- 1 xxxxxx sys 804 8月 4日 2006年 .map.txt
drwxr-xr-x 2 xxxxxx sys 512 11月 16日 2006年 AA87A000-001
drwxr-xr-x 2 xxxxxx sys 2048 12月 13日 2006年 AA870000-002
drwxr-xr-x 2 xxxxxx sys 512 7月 11日 2007年 AA8AA0001
drwxr-xr-x 5 xxxxxx sys 512 10月 12日 2007年 AA8AA0002
drwxr-xr-x 4 xxxxxx sys 512 4月 11日 17:37 AA8AA0003
drwxr-xr-x 6 xxxxxx sys 1024 2月 13日 15:55 AA8AA0004
drwxr-xr-x 6 xxxxxx sys 1536 4月 16日 15:53 AA8AA0005
drwxr-xr-x 3 xxxxxx sys 2048 4月 16日 16:39 AA8AA0006
drwxr-xr-x 5 xxxxxx sys 1024 2月 14日 15:39 AA00001

時間の部分が「西暦」表示になっているフォルダが一覧に表示できませんでした。
*文字コードは"euc-jp"で設定

すべてのフォルダを一覧表示したいのでご教授お願いいたします。

以上

Page: 1 |

ファイル Re: TKFPDLL_1.3.8-1でのフォルダ表示について ( No.1 )
日時: 2008/04/22 07:16
名前: Toki◆pRU.c9X.EOI

ご指摘のようにタイムスタンプに「年」の文字があることが取得に失敗する原因となっています。

取得リストの解析方法である正規表現を書き換えることで、取得可能になると思います。

TKFP.Net.FtpClientクラスでサーバーに接続する前に以下の処理を追加してみてください

TKFP.IO.UnixListDataLoader ListDataLoader = new TKFP.IO.UnixListDataLoader();
ListDataLoader.Pattrens = new string[] {
@"(?<Permission>[ldrwxsStT\-]{10}) +[^ ]+ +(?<User>[^ ]+) +(?<Group>[^ ]+) +(?<Length>[\d]+) +(?<Month>[\d]+)月 +(?<Day>[\d]+)日 +((?<Year>[\d]+)年|(?<Hour>[\d]+):+(?<Minute>[\d]+)) +(?<Name>.+)"
};
FtpClient.ListDataLoader = ListDataLoader;


TKFP.IO.UnixListDataLoaderはよく使われている3種類を登録して有りますが、

追加コードで、1種類のみの対応となります。

具体的な変更は「年」の文字を追加しただけです。

4種類目の解析方法として追加したい場合は、Pattrensの文字配列を一旦読み出した後、

目的の正規表現を追加した新しい配列を再登録してください。



ファイル Re: TKFPDLL_1.3.8-1でのフォルダ表示について ( No.2 )
日時: 2008/05/01 12:47
名前: LINK

Toki殿

返信が遅れてすみません。
ご指導ありがとうございます。

早速、プログラムに組み込み確認してみます。

以上
ファイル Re: TKFPDLL_1.3.8-1でのフォルダ表示について ( No.3 )
日時: 2008/05/01 14:30
名前: LINK

Toki殿

下記のような記述で最初に入っているパターンの書き換えを行おうと
しましたがうまくいきませんでした。

---------------------
'LIST情報の解析クラスを指定
FtpClient.ListDataLoader = New TKFP.IO.UnixListDataLoader '標準のFTP(デフォルト)

Dim ListDataLoader As New TKFP.IO.UnixListDataLoader
ListDataLoader.Pattrens(0) = "(?<Permission>[ldrwxsStT\-]{10}) +[^ ]+ +(?<User>[^ ]+) +(?<Group>[^ ]+) +(?<Length>[\d]+) +(?<Month>[\d]+)月 +(?<Day>[\d]+)日 +((?<Year>[\d]+)年|(?<Hour>[\d]+) :+(?<Minute>[\d]+)) +(?<Name>.+)"

Debug.WriteLine(ListDataLoader.Pattrens(0))

-----------------------
*Debug.WriteLineの結果
(?<Permission>[ldrwxsStT\-]{10}) +[^ ]+ +(?<User>[^ ]+) +(?<Group>[^ ]+) +(?<Length>[\d]+) +(?<Month>[\w]+) +(?<Day>[\d]+) +((?<Year>[\d]+)|(?<Hour>[\d]+):+(?<Minute>[\d]+)) +(?<Name>.+)

申し訳ありませんが再度ご教授をお願いします。
*最初の質問で環境を記載しておりませんでした。
OS:XP_Pro
VB.NET2003

以上
ファイル Re: TKFPDLL_1.3.8-1でのフォルダ表示について ( No.4 )
日時: 2008/05/01 15:11
名前: LINK

Toki殿

何度もすみません。
解決いたしました。
書き換えの意味を勘違い(と言うか理解していませんでした。)

下記、記述にて解決いたしました。

-----------------------
'LIST情報の解析クラスを指定
Dim ListDataLoader = New TKFP.IO.UnixListDataLoader '標準のFTP(デフォルト)

ListDataLoader.Pattrens = New String() { _
"(?<Permission>[ldrwxsStT\-]{10}) +[^ ]+ +(?<User>[^ ]+) +(?<Group>[^ ]+) +(?<Length>[\d]+) +(?<Month>[\w]+) +(?<Day>[\d]+) +((?<Year>[\d]+)|(?<Hour>[\d]+):+(?<Minute>[\d]+)) +(?<Name>.+)", _
"(?<Permission>[ldrwxsStT\-]{10}) +[^ ]+ +(?<User>[^ ]+) +(?<Length>[\d]+) +(?<Month>[\w]+) +(?<Day>[\d]+) +((?<Year>[\d]+)|(?<Hour>[\d]+):+(?<Minute>[\d]+)) +(?<Name>.+)", _
"(?<Permission>[ldrwxsStT\-]{10}) +[^ ]+ +(?<User>[^ ]+) +(?<Group>[^ ]+) +(?<Length>[\d]+) +(?<Month>[\d]+)月 +(?<Day>[\d]+)日 +((?<Year>[\d]+)|(?<Hour>[\d]+):+(?<Minute>[\d]+)) +(?<Name>.+)", _
"(?<Permission>[ldrwxsStT\-]{10}) +[^ ]+ +(?<User>[^ ]+) +(?<Group>[^ ]+) +(?<Length>[\d]+) +(?<Month>[\d]+)月 +(?<Day>[\d]+)日 +((?<Year>[\d]+)年|(?<Hour>[\d]+):+(?<Minute>[\d]+)) +(?<Name>.+)"}

FtpClient.ListDataLoader = ListDataLoader
-----------------------

以上

Page: 1 |