AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit FirstFind

Ein Thema von Stamper · begonnen am 1. Mai 2008 · letzter Beitrag vom 1. Mai 2008
Antwort Antwort
Stamper

Registriert seit: 19. Jan 2008
18 Beiträge
 
#1

Probleme mit FirstFind

  Alt 1. Mai 2008, 09:18
Hallo,

ich habe ein Programm geschrieben, das mit FirstFind Dateien finden soll. Mir ist gestern beim Ausprobieren aufgefallen, dass das Programm keine Dateien findet, die - wenn man unter Windows in den Eigenschaften der Dateien schaut - nicht als "Archiv" markiert sind, auch wenn die Sucheigenschaft auf "faAnyFile" steht.

Hier mal ein Auszug aus dem Quellcode:

Code:
procedure TForm1.BitBtn2Click(Sender: TObject);
var
  sr: TSearchRec;
  FileAttrs, i, i0, Zeile: Integer;
begin
  StringGrid1.RowCount := 5;    
  Zeile := 0;
  if CheckBox1.Checked then
    FileAttrs := faReadOnly
  else
    FileAttrs := 0;
  if CheckBox2.Checked then
    FileAttrs := FileAttrs + faHidden;
  if CheckBox3.Checked then
    FileAttrs := FileAttrs + faSysFile;
  if CheckBox4.Checked then
    FileAttrs := FileAttrs + faVolumeID;
  if CheckBox5.Checked then
    FileAttrs := FileAttrs + faDirectory;
  if CheckBox6.Checked then
    FileAttrs := FileAttrs + faArchive;
  if CheckBox7.Checked then
    FileAttrs := FileAttrs + faAnyFile;

 For i := 1 to Memo1.Lines.Count+1 do
 begin
  with StringGrid1 do
  begin
    if FindFirst(Edit1.Text + '\' + Memo1.Lines[i-1], FileAttrs, sr) = 0 then
    begin
      repeat
        if (sr.Attr and FileAttrs) = sr.Attr then
        begin
         If Zeile >= 4 then
         begin
           StringGrid1.ColWidths[2] := 82;
           RowCount := RowCount + 1;
         end;
         Inc(Zeile);
         Cells[0,Zeile] := sr.Name;
         Cells[1,Zeile] := Format('%.0f KB',[sr.Size / 1000]);
         begin
           If sr.Attr = 1 then
            Cells[2,Zeile] := 'schreibgeschützt';
           If sr.Attr = 2 then
            Cells[2,Zeile] := 'versteckt';
           If sr.Attr = 4 then
            Cells[2,Zeile] := 'Systemdatei';
           If sr.Attr = 8 then
            Cells[2,Zeile] := 'Laufwerks-ID';
           If sr.Attr = 16 then
            Cells[2,Zeile] := 'Verzeichnis';
           If sr.Attr = 32 then
            Cells[2,Zeile] := 'Archivdatei';
           If sr.Attr = 64 then
            Cells[2,Zeile] := 'Verknüpfung';
         end;
        end;
      until FindNext(sr) <> 0;
      FindClose(sr);
    end;
  end;
 end;
end;
Was bedeutet das es eigentlich, wenn eine Datei als "Archiv" deklariert ist???

Gruß Eric
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Probleme mit FirstFind

  Alt 1. Mai 2008, 09:39
Hallo Eric,

bevor du weiter nach deinem Fehler suchst: Die Dateiattribute solltest du nicht addieren.

Delphi-Quellcode:
if CheckBox2.Checked
  then FileAttrs := FileAttrs or faHidden
  else FileAttrs := FileAttrs and not faHidden;
Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.250 Beiträge
 
Delphi 12 Athens
 
#3

Re: Probleme mit FirstFind

  Alt 1. Mai 2008, 09:59
Zitat von marabu:
bevor du weiter nach deinem Fehler suchst
faAnyFile is schon eine Kombination mehrerer Attribute
und bei der Addition mit den selben (in faAnyFile enthaltenen) Attributen kommt was "Nettes" raus.

Wenn du beim Test also mehr als nur CheckBox7.Checked (faAnyFile) aktiviert hattst, dann wird marabu's Hinweis vermutlich gleich das Problem lösen.




faArchive hat keine direkte Auswirkung.
Es kann/wird aber z.B. von Backupprogrammen verwendet, um zu erkennen welche Dateien verändert wurden, oder neu sind.
(die markierten dateien sind sozusagen zur Archivierung vorgesehn)

faArchive wird normaler Weise gesetzt, sobald eine Datei geändert wird.
Und neu Erstellen ist auch eine Änderung.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz