Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu FindFirst/FindNext (https://www.delphipraxis.net/111384-frage-zu-findfirst-findnext.html)

MrMyagi 2. Apr 2008 16:06


Frage zu FindFirst/FindNext
 
Moin,
ich durchsuche mithilfe
von FindFirst, FindNext
einen Ordner nach anderen Ordnern.
Es klappt auch alles bestens, jedoch zeigt er immer,
wenn ich die Ordner in einem Memo anzeigen will an Stelle
1 und 2 einen (.) und einen (..).
Wie kann ich dies wegbekommen?


mfG, Nico

MacGuyver 2. Apr 2008 16:12

Re: Frage zu FindFirst/FindNext
 
Delphi-Quellcode:
var
  lEc   : Integer;
  lDinfo : TSearchRec;


lEc:=FindFirst('*.*',faDirectory,lDinfo);
while lEc = 0 do
begin
  if lDinfo.Name[1] <> '.' then
  begin

    //Und hier der gewünschte Kram...

  end;
  lEc:=FindNext(lDinfo);
end;
FindClose(lDinfo);
Einfach die erste Stelle des Namens abfragen. 8-)

Stefan

MrMyagi 2. Apr 2008 16:19

Re: Frage zu FindFirst/FindNext
 
Danke für die schnelle Antwort,
aber wie bekomme ich die Ergebnisse jetzt
in das Memo? irgendwie klappt das mit
MemoUnits.Lines.Add(1Dinfo.name);
nicht.

Edit: komischerweise gehts jetzt, obwohl ich nix geändert habe :lol:

Danke für den Quelltext, funktioniert super :thumb:

mfG, Nico

MacGuyver 2. Apr 2008 16:24

Re: Frage zu FindFirst/FindNext
 
Dann lass mal etwas Code sehen. Das sollte so klappen. Vor lDinfo ist das übrigens ein kleines "L" und keine Eins. Lokale Variablen fangen bei mir immer mit "l" an.

TeronG 2. Apr 2008 16:26

Re: Frage zu FindFirst/FindNext
 
Mache es einfach genau so ins Memo wie "zuvor" nur nicht bei Ordnern, die mit '.' anfangen.

{BTW:
. = der Ordner in dem du dich befindest
.. = der Ordner über dem aktuellen Ordner.
}

MrMyagi 2. Apr 2008 16:27

Re: Frage zu FindFirst/FindNext
 
upps :oops: :oops: :oops:

wido 2. Apr 2008 16:34

Re: Frage zu FindFirst/FindNext
 
Zitat:

Zitat von MacGuyver
Delphi-Quellcode:
var
  lEc   : Integer;
  lDinfo : TSearchRec;


lEc:=FindFirst('*.*',faDirectory,lDinfo);
while lEc = 0 do
begin
  if lDinfo.Name[1] <> '.' then
  begin

    //Und hier der gewünschte Kram...

  end;
  lEc:=FindNext(lDinfo);
end;
FindClose(lDinfo);
Einfach die erste Stelle des Namens abfragen. 8-)

Das resultiert darin, daß Dir ein Ordner wie z.B. .pulseaudio nicht angezeigt wird. Diese Ordner- und Dateinamen mit vorgestelltem Punkt sind bei Linux/Unix Portierung sehr beliebt und dienen meist dazu die Settings zu speichern.

Entsprechend wäre die bessere Lösung:
Delphi-Quellcode:
[pre]var
  lEc   : Integer;
  lDinfo : TSearchRec;


lEc:=FindFirst('*.*',faDirectory,lDinfo);
while lEc = 0 do
begin
  if (lDinfo.Name <> '.') and (lDinfo.Name <> '..') then
  begin

    //Und hier der gewünschte Kram...

  end;
  lEc:=FindNext(lDinfo);
end;
FindClose(lDinfo);
[/pre]


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 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