#99 Article 922 Posted at 1995/08/31 01:14:03 by MEX (MAP5294) [Q.TC]
Subject: Re: Re: Turbo-Cのfindfirst()に関する質問 /920 /919
>>TCにあるfindfirst()という関数を使って、ディレクトリかどうかの判別を行う関数を
私はCの国の人ではないので受け止めが違ってるかもしれませんが(笑)
DOSでいうところ43hでサブディレクトリ属性を取得することができないので、
一般に4eh,4fhでディレクトリ属性で検索してDTAを取り込んだりします。
で、~find~関数はたぶんこのコードになるはずなので、アトリビュートの引数関係
をきちんと指定してやれば読めると思います。ここらへんのdefには詳しくないので
そっち方面の先生方にお伺いするとして(^^;
あ、いちおうbit4(0010hをor)がサブディレクトリ属性です。
comなセグメントで例えば、
mov ah,4eh
mov cx,10h
mov dx,offset path1
int 21h
@@break:
mov ax,4c00h
int 21h
path1 db "d:\*",0
などとすると、@@breakでは、cyでルートでdirなし、not cyで psp:9eh~に
いっぱつめのdirがasciizで取り込れます。
ちなみに、某ラストショップのファイラーでは、
属性サブディレクトリでパス+*で検索、属性0でパス+*.ml1で検索したものを
配列などに一括で取り込んでいます。サブにいると自分(子) . も引っかかるの
でそれはチェックして取り込まないようにする、 .. は親と知っておく、ルート
は親が返らないのでエントリ数の管理もしておく、程度の処理は必要でしょう。
いきあたりばったりのX-{
MAP5294 MEX