ich ein Verfahren erhalten haben, die für eine Datei durch den Benutzer in einem Pfad und Subpfade eingegeben sucht, habe ich ein gutes Verständnis für die meisten davon mit Ausnahme von dieser Linie:Was bedeuten Verzeichnisnamen?. und '..' bedeuten und was bedeutet faDirectory?
if ((Rec.Attr and faDirectory) <> 0) and (Rec.Name<>'.') and (Rec.Name<>'..')
Das gesamte Verfahren ist wie folgt: , help würde geschätzt werden, da ich nicht genau den Zweck dieser Linie des Codes bin, ist es etwas im Unterpfad überprüfend ?.
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
also (Rec.Attr und faDirectory) gibt einen negativen Wert zurück, wenn es das aktuelle TSearchRec-Element ein Verzeichnis ist? Warum ist das – Alexjjsmith
Nein, die Zeile '(Rec.Attr und faDirectory)' verwendet den 'AND' Operanden, um zu überprüfen, ob der' faDirectory' ($ 00000010) Wert in den Eigenschaften des Eintrags gesetzt ist. – RRUZ
ich sehe, vielen Dank. Ich weiß, dass dies nicht die ursprüngliche Frage war, ich sollte technisch eine neue Frage erstellen, aber ich fragte mich, ob Sie die Zeit haben, ob Sie mir vorschlagen könnten, wie ich eine showmessage haben könnte, um anzuzeigen, dass ich Datei nicht gefunden wurde, habe ich versuchte, eine boolesche Variable zu setzen, wobei die Variable FileFound auf false gesetzt ist, aber FileFound: = true, wenn FindFirst (Pfad + Dateiname, faAnyFile - faDirectory, Rec) = 0, aber eine rekursive Prozedur ist, die keine einfachen Methoden zum erreichen hat es? – Alexjjsmith