![]() |
findFirst systemabhängig??
hi,
hier mal meine findFirst-Methode, ich möchte ausschließlich Ordner suchen und die Ordner [.] und [..] ausschließen:
Delphi-Quellcode:
Das ganze funktioniert auf meinem Win XP prof. System hundertpro, alle Ordner landen in der Liste. Auf dem System meines Vaters (auch Win XP prof) findet er null Ordner obwohl er 100% im richtigen Verzeichnis sucht und dort auch die Ordner existieren. Sind auch nicht versteckt oder ähnliches, ich kann das komplette Verzeichnis von emienm Rechner auf seinen kopieren und dort läuft es nicht mehr. warum?
if FindFirst(apPath + 'discs\*.*', faDirectory, SearchRec) = 0 then
begin repeat if pos('.',SearchRec.Name) = 0 then ListBox1.items.add(searchrec.Name); until FindNext(searchrec) <> 0; findclose(searchrec); end; Und am Rande: gibt es ne Möglichkeit, findFirst nur nach Ordnern suchen zu lassen und die nicht so umständlich rauszufiltern wie ich das gemacht habe? Danke schonmal :) |
Re: findFirst systemabhängig??
Ein Ordner kann auch einen Punkt im Namen enthalten!
Mein Vorschlag:
Delphi-Quellcode:
//Edit:
if FindFirst('*', faAnyFile, SR) = 0 then
try repeat if (SR.Attr and faDirectory <> 0) and (SR.Name <> '.') and (SR.Name <> '..') then // SR.Name ist ein Ordner! until FindNext(SR) <> 0; finally FindClose(SR); end; *.* durch * ersetzt. |
Re: findFirst systemabhängig??
klasse, das läuft schonmal. Aber ich glaube nicht, dass das an der System-Inkompatibilität was ändert, mal testen nachher...
|
Re: findFirst systemabhängig??
Du kannst nur Ordner suchen wenn du als Parameter bei FindFirst statt faAnyFile faDirectory angibst ;)
Gruß Neutral General |
Re: findFirst systemabhängig??
Zitat:
Bei mir ändert es nichts daran, ob ich nach faAnyFile oder nach faDirectory suche. Beidemale wird nach Dateien und Ordnern gesucht. Erst die Überprüfung SR.Attr and faDirectory<>0 sagt mir, ob es Datei oder Ordner ist. Im Übrigen: Nur nach Dateien suchen geht so: faAnyFile-faDirectory bei FindFirst als Parameter. Für die Suche nur nach Ordnern gibt es imho dort keine Parameter... |
Re: findFirst systemabhängig??
korrekt. denn der Parameter gibt ja an, was zusätzlich zu anyFile gesucht werden soll. VOn daher glaube ich auch nicht, dass man schon direkt in FIndfirst alle Dateien ausschließen kann...
edit: heissa, es läuft auf beiden Systemen! so gravierend hab ich an sich gar nichts geändert, aber es läuft. Strange. |
Re: findFirst systemabhängig??
Zitat:
|
Re: findFirst systemabhängig??
OT: Martins vorgeschlagener Source ist perfekt, danke !
Gruß Hagen |
Re: findFirst systemabhängig??
Was mir auffällt: Du suchst nach "*.*". Streng genommen suchst du also nach Ordnern welche mindestens einen "." im Namen haben. Wenn du nach "*,*" suchst erwartest du ja auch das nur dinge gefunden werden wo "," drin vorkommt. Bei "." scheint das auf manchen Systemen eine Ausnahme zu sein. Aber Generell sollte man nur nach "*" suchen wenn man wirklich alle Namen finden will.
|
Re: findFirst systemabhängig??
Zitat:
Aber bei Windows ist wohl *.* = * Ich verbessere es lieber mal im obigen Code, damit's keine Probleme gibt, wenn ihn jemand mal einfach so auf die Schnelle kopiert... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 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