HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0630
硝酸銀dirlist2について7解決


硝酸銀

リンク

2010/6/30(Wed) 14:20:44|NO.33506

dirlist2、dirlist2h、dirlist2rを使ってとあるディレクトリのサブディレクトリ内にある
ファイルを取得しようとしています。
この3つを使って取得すると最後の方にフォルダ名の一覧が付いてきてしまいます。
これが不要なのですが、やはりgetstrやnote系の命令を使って一個一個検証して削除するか
しないといけないのでしょうか?
それとも、何かオプションで付加しないようにする事が出来るのでしょうか?
お教え下さい。よろしくお願いいたします。


#include "hspext.as" chdir dirinfo(0x10000) dirlist2h 1,',' dirlist2 a,"*.*", 1, '\\' sdim filelist,a dirlist2r filelist ;dialog filelist



この記事に返信する


硝酸銀

リンク

2010/6/30(Wed) 16:48:56|NO.33507

また、dirlist2において、特定のファイル名にてダブルクオート(")がファイル名両端に
付く事があります。現状strtrimで回避していますが、これはHSP側のバグととらえても
よろしいのでしょうか?



_hamyuu_

リンク

2010/7/1(Thu) 11:08:05|NO.33509

良い方法とは思えませんがこれでどうでしょうか。

#include "hspext.as" chdir dirinfo(0x10000) dirlist2h 1,',' dirlist2 a,"*.*", 1, '\\' sdim filelist,a dirlist2r filelist filelist = getpath(filelist,0) dialog filelist



硝酸銀

リンク

2010/7/1(Thu) 18:03:35|NO.33510

_hamyuu_様

レスありがとうございます。
getpathを使うとこのことですが、getpathは改行で区切られたファイル名を操作できないように
思います。
こちらのスクリプトは何が変化するのでしょうか?
ダブルクオートも外れる事は確認できませんでした。すみませんよろしくお願いいたします。


a = "\"c:\\a\\a.mp3\"" dialog getpath(a,0)



木村

リンク

2010/7/1(Thu) 22:54:56|NO.33518

 exist命令ではフォルダのサイズ数が取得できません。この仕様を逆手に取ってみるのは
いかがでしょうか? 以下は一例

#module #include "hspext.as" #defcfunc only_file_list \ local base_size,local base_list,local file_adress,local return_note ;―――――――――――――――――――――――――――――――――――――――― ; only_file_list() ;―――――――――――――――――――――――――――――――――――――――― ;カレントディレクトリ麾下のファイルのデータを返す関数 ;相対パスなので利用時はカレントディレクトリに注意を ;―――――――――――――――――――――――――――――――――――――――― dirlist2h 1 dirlist2 base_size,"*.*",1 sdim base_list,base_size dirlist2r base_list notesel base_list : repeat notemax notesel base_list : noteget file_adress,cnt : exist file_adress if strsize!-1 : notesel return_note : noteadd file_adress loop return return_note #global objsize 640,320 : listbox i,160,only_file_list()

>>dirlist2において、特定のファイル名にてダブルクオート(")が
>>ファイル名両端に付く事があります
 私もいくつかのファイルで試してみたのですが、残念ながらそんな事が起きるファイル名を
発見できませんでした。
 願わくば、その不思議効果の起きる『特定のファイル名』の具体例を提示していただけると
回答者側は助かると思います。



_hamyuu_

リンク

2010/7/1(Thu) 23:36:36|NO.33520

意味の解からない回答してすいません。
頭がボケていて何かを勘違いしてたみたいです(笑)
スレ汚し失礼しました。



p、USAGI

リンク

2010/7/2(Fri) 02:24:46|NO.33522

>願わくば、その不思議効果の起きる『特定のファイル名』の具体例を提示していただけると
(,)カンマがファイル名かフォルダ名に含まれていると、
パスが(")ダブルクオートにはさまれるようです。


↓こんな感じでいかがでしょう。
#include "hspext.as"
chdir dirinfo(0x10000) dirlist2h 1,',' dirlist2 a,"*.*", 1, '\\' sdim filelist,a dirlist2r filelist notesel filelist del_num=0 //削除した数 repeat notemax noteget filename,cnt-del_num //dirlist2で取得したデータを 1行代入 する dirlist dummy,filename,5 //ディレクトリのみを指定 if stat : notedel cnt-del_num : del_num++ await 0 loop mesbox filelist,640,480,4



硝酸銀

リンク

2010/7/5(Mon) 02:32:30|NO.33543

ありがとうございます。やはり一つ一つ確認していくしかないわけですね。。。
データ数が非常に多いのでオプションなどでオフに出来るかなと思ったんですけどね。
ただ、コンマなどが付いているとダブルクオートが付くなど状況がわかったのでよかった
です。これは仕様のようですかね??
削除に関してですがどうやらnote命令を使うよりはgetstrで一つ一つ取り出してやった方が
結果的に早いようでした。
どうもありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.