5
私はこの行を除き、そのほとんどをよく理解している、パスとサブパスでユーザーが入力したファイルを検索手順を持っている:ディレクトリ名とは何ですか? 'と '..'という意味で、faDirectoryはどういう意味ですか?
if ((Rec.Attr and faDirectory) <> 0) and (Rec.Name<>'.') and (Rec.Name<>'..')
次のように全体の手順があります、このコード行の目的を正確にはわからないように助けていただければ幸いです。サブパスで何かをチェックしていますか?
procedure TfrmProject.btnOpenDocumentClick(Sender: TObject);
begin
FileSearch('C:\Users\Guest\Documents', edtDocument.Text+'.docx');
end;
procedure TfrmProject.FileSearch(const Pathname, FileName : string);
var Word : Variant;
Rec : TSearchRec;
Path : string;
begin
Path := IncludeTrailingBackslash(Pathname);
if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0
then repeat Word:=CreateOLEObject('Word.Application');
Word.Visible:=True;
Word.Documents.Open(Path + FileName);
until FindNext(Rec) <> 0;
FindClose(Rec);
if FindFirst(Path + '*.*', faDirectory, Rec) = 0 then
try
repeat
if ((Rec.Attr and faDirectory) <> 0) and (Rec.Name<>'.') and (Rec.Name<>'..') then
FileSearch(Path + Rec.Name, FileName);
until FindNext(Rec) <> 0;
finally
FindClose(Rec);
end;
end; //procedure FileSearch
so(Rec.AttrおよびfaDirectory)は、現在のTSearchRec要素がディレクトリの場合は負の値を返しますか?どうしてですか? – Alexjjsmith
いいえ、行 '(Rec.Attr and faDirectory)'は 'AND'オペランドを使って' faDirectory'($ 00000010)の値がエントリーのアトリビュートにセットされているかどうかをチェックします。 – RRUZ
私は、ありがとう、たくさん参照してください。私はこれがオリジナルの質問ではないことを知っています。私は技術的に新しい質問を作成すべきですが、私はファイルが見つからなかったことを示すためにshowmessageを持つことができるかどうかをあなたに教えてもらえますか?変数FileFoundがfalseに設定されているブール変数を入れようとしましたが、FindFirst(Path + FileName、faAnyFile - faDirectory、Rec)= 0の場合はFileFound:= trueですが、これは動作しませんが、それ? – Alexjjsmith