Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi wie kann ich Verzeichnisse von Dateien unterscheiden? (https://www.delphipraxis.net/96500-wie-kann-ich-verzeichnisse-von-dateien-unterscheiden.html)

smart 25. Jul 2007 14:32


wie kann ich Verzeichnisse von Dateien unterscheiden?
 
Hallo Alle!

Wenn ich mir mit Findfirst eine Dateiliste zusammenstelle, wie kann ich Verzeichnisse von Dateien unterscheiden? Ich brache z.B soeine Abfrage
Delphi-Quellcode:
If ListBox1.Items[0] = Verzeichnis then ....
Kann Einer von Euch mal bitte helfen?

Gruß
Heike

arbu man 25. Jul 2007 14:34

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
wie wärs mit der Function DictionaryExists ?

DeddyH 25. Jul 2007 14:34

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
Bei einem Verzeichnis enthalten die Attribute das Flag faDirectory. Also lautet die Abfrage
Delphi-Quellcode:
if (Rec.Attr and faDirectory) = faDirectory then...
Wobei Rec ein TSearchRec ist.

Muetze1 25. Jul 2007 15:02

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
Zitat:

Zitat von arbu man
wie wärs mit der Function DictionaryExists ?

Gegenvorschlag: Delphi-Referenz durchsuchenDirectoryExists

@DeddyH: Dann poste bitte auch gleich das FindFirst(), FindNext() und FindClose() auf das du dich beziehst und nicht nur die Zeile dazwischen...

DeddyH 25. Jul 2007 15:11

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
FindFirst steht doch schon im Post des Threaderstellers.

Muetze1 25. Jul 2007 15:19

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
Zitat:

Zitat von DeddyH
FindFirst steht doch schon im Post des Threaderstellers.

Das damit die Listbox gefüllt wird, aber laut Threadersteller wird dann die Liste in der ListBox durchgegangen. Also will man zum Zeitpunkt der Listeniteration unterscheiden und nicht beim eintragen...

Delphi-Quellcode:
var
  lSR: TSearchRec;
begin
  if FindFirst(ListBox1.Items[0], lSR) then
  begin
    if lSR.Attr and faDirectory = faDirectory then
      ShowMessage('dir')
    else
      ShowMessage('file');
    FindClose(lSR);
  end;
end;

SirThornberry 25. Jul 2007 15:21

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
@Muetze: Du hast schon recht das später unterschieden werden soll. Aber das sinnvollste ist beim lesen des Verzeichnisinhalts sich das gleich mit zu merken anstelle das Dateisystem mehrfach anzurühren.

DeddyH 25. Jul 2007 15:22

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
Was spricht denn dagegen, gleich beim Füllen der Listbox das Flag abzufragen und in irgendeiner Weise zu merken?

[EDIT]Jens war schneller[/EDIT]

smart 25. Jul 2007 16:04

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
Schon mal vielen Dank für die Hilfe!

Ich muss doch einwenig mehr schreiben. Der Anwender ist dumm und kennt den Unterschied zwischen Dateien und Verzeichnisse nicht. Er hat nur eine Liste mit Verzeichnisse und Dateien gemischt vor sich und möchte daraus beliebig löschen. Also, die Listbox ist schon fertig eingelesen mit Dateien und Verzeichnisse. Im Nachhinein sollen Verzeichnisse und/oder Dateien gelöscht werden. Also brauche ich soetwas, oder?
Delphi-Quellcode:
if DirectoryExists(ListBox1.Items[A]) then
begin
    If deldir(ListBox1.Items[A]) = True then
          MessageDlg('Verzeichnis gelöscht!', mtInformation, [mbOK], 0);
    end
    else
          DeleteFile(ListBox1.Items[A]);
Gruß
Heike

RavenIV 25. Jul 2007 16:09

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
Warum verwendest Du nicht die TTreeListView?
Dann hat der Benutzer das in gewohnter Anzeige wie im Explorer...

smart 25. Jul 2007 16:13

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
Zitat:

Zitat von RavenIV
Warum verwendest Du nicht die TTreeListView?
Dann hat der Benutzer das in gewohnter Anzeige wie im Explorer...

Danke, da hast Du Recht, soweit hatte ich noch nicht gedacht.

Gruß
Heike

Christian Seehase 25. Jul 2007 18:54

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
Moin Heike,

und eine Bitte:

Boolsche-Ausdrücke nie auf =true bzw. false prüfen. Gerade ersteres kann schiefgehen, und es ist lesbarer.

Also statt:
Delphi-Quellcode:
If deldir(ListBox1.Items[A]) = True then
besser:
Delphi-Quellcode:
If deldir(ListBox1.Items[A]) then
Danke ;-)

smart 25. Jul 2007 19:13

Re: wie kann ich Verzeichnisse von Dateien unterscheiden?
 
Zitat:

Zitat von Christian Seehase
Boolsche-Ausdrücke nie auf =true bzw. false prüfen. Gerade ersteres kann schiefgehen, und es ist lesbarer.

Vielen Dank für den Tipp. Ist auch weniger Tipparbeit ;-)

Gruß
Heike


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz