AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi FindFirst FindNext - Datei muss achiviert werden?
Thema durchsuchen
Ansicht
Themen-Optionen

FindFirst FindNext - Datei muss achiviert werden?

Ein Thema von greyblue · begonnen am 7. Okt 2004 · letzter Beitrag vom 7. Okt 2004
Antwort Antwort
greyblue

Registriert seit: 11. Sep 2003
47 Beiträge
 
#1

FindFirst FindNext - Datei muss achiviert werden?

  Alt 7. Okt 2004, 10:42
Hallo

ich benutzt FindFirst, FindNext um Dateien in einem Ordner auszulesen..
und das soll in einem LISTVIEW aufgelistet werden..

Delphi-Quellcode:
sr: TSearchRec;

  if FindFirst(applpath + 'daten\*.dat', faAnyFile, sr) = 0 then
  begin
    repeat
      if (sr.Attr and faAnyFile) = sr.Attr then
      begin
        dateiname := sr.Name;
        V1 := copy(dateiname,1,pos('_',dateiname)-1);
        delete(dateiname,1,pos('_',dateiname));
        V2 := copy(dateiname,1,pos('_',dateiname)-1);
        delete(dateiname,1,pos('_',dateiname));
        V3 := copy(dateiname,1,pos('.',dateiname)-1);
        .....
      
      end;
    until FindNext(sr) <> 0;

    FindClose(sr);
  end;
Das funktioniert auch super!

Aber,
wenn man bei der Eigenschaft der .dat Datei, "Datei kann achieviert werden" nicht ankreuzen, dann wird diese Datei nicht in der Listview angezeigt ..

warum ist es so?

Vielen Dank!!

Gruss, greyblue
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: FindFirst FindNext - Datei muss achiviert werden?

  Alt 7. Okt 2004, 10:47
Was genau willst Du mit dieser Zeile erreichen? if (sr.Attr and faAnyFile) = sr.Attr then Wo im Code ist etwas von einer ListView zu sehen? Der Rest scheint korrekt, nur solange wir nicht die Ereignisse wissen, die bis zum ListView-Eintrag führen, lässt sich wenig sagen

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
greyblue

Registriert seit: 11. Sep 2003
47 Beiträge
 
#3

Re: FindFirst FindNext - Datei muss achiviert werden?

  Alt 7. Okt 2004, 10:58
Zitat von sakura:
Was genau willst Du mit dieser Zeile erreichen? if (sr.Attr and faAnyFile) = sr.Attr then Wo im Code ist etwas von einer ListView zu sehen? Der Rest scheint korrekt, nur solange wir nicht die Ereignisse wissen, die bis zum ListView-Eintrag führen, lässt sich wenig sagen

......
diese Zeile habe ich irgendwo kopiert(vielleicht die Hilfe in Delphi) ..
soll es (sr.Attr and faAnyFile) = faAnyFile heissen?

Delphi-Quellcode:
 ListItem := ListView1.Items.Add;
        ListItem.ImageIndex := 0;
        ListItem.Caption := ' ' + V1;
        ListItem.SubItems.Add(V2);
        ListItem.SubItems.Add(V3);
        ListItem.SubItems.Add(DateToStr(FileDateToDateTime(sr.Time)));

das war die ...... oben ..

Danke ..

greyblue
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: FindFirst FindNext - Datei muss achiviert werden?

  Alt 7. Okt 2004, 11:01
Ändere if (sr.Attr and faAnyFile) = sr.Attr then mal auf if (sr.Attr and faSymLink) = 0 then Der Rest (die ... von oben) sieht eigentlich korrekt aus

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
greyblue

Registriert seit: 11. Sep 2003
47 Beiträge
 
#5

Re: FindFirst FindNext - Datei muss achiviert werden?

  Alt 7. Okt 2004, 11:10
danke,

aber komisch ist,

das Code oben funktioniert bis auf Achiev..

das Ankreuzen von versteckt oder schreibgeschützt in der Dateieigenschaft macht überhaupt nichts,
nur man muss vor Achiev ankreuzen ..



if (sr.Attr and faAnyFile) = sr.Attr then

das bedeutet doch, dass nur die Dateien nicht die Unterordner gesucht werden oder?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: FindFirst FindNext - Datei muss achiviert werden?

  Alt 7. Okt 2004, 11:18
Hi greyblue,

hier mal die Konstanten wie sie in der Hilfe sind:
Code:
faReadOnly       1        Read-only files
faHidden         2        Hidden files
faSysFile        4        System files
faVolumeID       8        Volume ID files
faDirectory      16       Directory files
faArchive        32       Archive files
faSymLink        64       Symbolic link
faAnyFile        71       Any file
Von daher schätze ich mal, dass faAnyFile eigentlich faReadOnly or faHidden or faSysFile or faSymLink ist.
Deine Abfrage müsste also so lauten:
if (sr.Attr and (faAnyFile or faArchive)) = sr.Attr then Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
greyblue

Registriert seit: 11. Sep 2003
47 Beiträge
 
#7

Re: FindFirst FindNext - Datei muss achiviert werden?

  Alt 7. Okt 2004, 11:22
Danke für deine Antwort,

werde mal probieren,

habe gedacht dass faArchive \in faAnyFile ist ..

Vielen Dank!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: FindFirst FindNext - Datei muss achiviert werden?

  Alt 7. Okt 2004, 11:27
[add]
ach, zu langsam -.-''
Zitat:
habe gedacht dass faArchive \in faAnyFile ist ..
Ja, es ist dort mit drin.
[/add]

if (sr.Attr and faAnyFile) = sr.Attr then als wer der verbrochen hat, gehört gevierteilt, da diese Abfrage immer True ergibt

Delphi-Quellcode:
  faReadOnly = $01;
  faHidden = $02;
  faSysFile = $04;
  faVolumeID = $08;
  faDirectory = $10;
  faArchive = $20;
  faSymLink = $40;
  faAnyFile = $3F; // also alle möglichen Bits sind gesetzt

Prüft, ob nur ein bestimmtes Bit (hier faArchive),
if sr.Attr and faArchive = sr.Attr then oder mehrere bestimmte Bits (hier faArchive und faHidden) gesetzt sind und kein Anderes.
if sr.Attr and (faAnyFile or faHidden) = sr.Attr then
Prüft, ob ein bestimmtes Bit (hier faArchive),
if sr.Attr and faArchive <> 0 then oder mehrere bestimmte Bits (hier faArchive und faHidden) gesetzt sind ... ob andere Bits auch gesetzt sind, oder nicht, ist hierbei egal.
if sr.Attr and (faAnyFile or faHidden) <> 0 then
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: FindFirst FindNext - Datei muss achiviert werden?

  Alt 7. Okt 2004, 11:30
Zitat von alcaeus:
hier mal die Konstanten wie sie in der Hilfe sind:
Code:
faReadOnly       1        Read-only files
faHidden         2        Hidden files
faSysFile        4        System files
faVolumeID       8        Volume ID files
faDirectory      16       Directory files
faArchive        32       Archive files
faSymLink        64       Symbolic link
faAnyFile        71       Any file
An der Stelle ist die Hilfe falsch Das leite ich mal weiter
Hier die Definitionen aus der SysUtils.pas
Delphi-Quellcode:
const
  faReadOnly = $00000001 platform;
  faHidden = $00000002 platform;
  faSysFile = $00000004 platform;
  faVolumeID = $00000008 platform;
  faDirectory = $00000010;
  faArchive = $00000020 platform;
  faSymLink = $00000040 platform;
  faAnyFile = $0000003F;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
greyblue

Registriert seit: 11. Sep 2003
47 Beiträge
 
#10

Re: FindFirst FindNext - Datei muss achiviert werden?

  Alt 7. Okt 2004, 19:58
nun bin ich verwirrt,

nochmal die Frage, warum zeigt sich die Nicht-Achieve Datei nicht an?

Vielen Dank!!
  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 18:51 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