![]() |
Re: findFirst systemabhängig??
*.* ist absolut richtig gewesen. Ein * für den Dateinamen, ein Komma . zur Trennung zur Extension, und ein * für die Extenstion/Erweiterung einer Datei.
Gruß Hagen |
Re: findFirst systemabhängig??
Zitat:
Theoretisch dürfte er dann nur nach Ordnern suchen, die einen . Punkt im Namen enthalten. Aber praktisch erhält man so trotzdem alle Ordner... |
Re: findFirst systemabhängig??
Die Trennung eines Dateinamens, egal ob Datei oder Ordner, ist immer Name.Extension
Ich sagte ja schon das dein ehemaliger Source absolut sauber und perfekt ist, dh. eine Suchschleife für FindFirst(), FindNext() und FindClose() sollte exakt so aufgebaut sein wie dein Source. 1.) FindClose() in try finally 2.) FindClose() nur dann wenn FindFirst() was findet -> wichtig! für ältere Delphi RTLs 3.) die Abfrage auf Directory zuerst Attr per and auswerten, danach SR.Name <> '.' und danach erst SR.Name <> '..' das erzeugt den effizientesten Code, diese Reihenfolge der Auswertung ist also entscheidend und so wie du das gemacht hast ist es am effizientesten. Sehr oft sieht man Auswertungen wie SR.Name[1] <> '.' oder Pos('.', SR.Name) > 0, diese sind jedoch defakto falsch. Odner könnten auch ".Name" oder "Name.Name" benannt sein. Oder man sieht sowas wie SR.Attr <> faDirectory was ebenfalls falsch ist. Denn damit würde man Directories mit Attr = faDirectory or faHidden, also versteckte Ordner eben nicht ausfiltern. Auch sehr oft zu sehen SR.Attr < 0, das geht weil faDirectory glaube ich das Signbit darstellt, ist aber denoch falsch da diese Auswertung vom Datentyp SR.Attr abhängig ist. Sollte dies ein Word/Cardinal sein so wäre SR.Attr < 0 ebenfalls absolut falsch. Wie gesagt, so wie du das gemacht hast ist es die beste Lösung. Gruß Hagen |
Re: findFirst systemabhängig??
Also erstmal Danke für Deine Komplimente, aber ich habe den Code mir irgendwann auch mal aus versch. Beiträgen hier im Forum zusammengebastelt.
Zitat:
Es gibt sogar Dateien, die keine haben :arrow: also kein . im Dateinamen / Ordnernamen! Wieso deshalb nach einem . suchen? Aber dazu hat ja SirThornberry schon was geschrieben... Zitat:
Zitat:
Zitat:
|
Re: findFirst systemabhängig??
Zitat:
Wenn eine Datei bzw. ein Ordner nicht alle 8 bzw. 3 Zeichen genutzt hatte, so hat das OS die betreffenden Stellen in der FAT mit #32 aufgefüllt und "unterstützte" somit auch Datei-/Ordnernamen mit weniger als 8 Zeichen vorn bzw. 3 hinten. Zitat:
Zitat:
...:cat:... |
Re: findFirst systemabhängig??
Zitat:
...außerdem ist es weniger Schreibarbeit und die pas wird 2 Byte kleiner :zwinker: Mir ist allerdings nicht klar, was Ordner für Extensions haben könnten... Hab grad in meinem Windows-Verzeichnis einen Ordner gefunden, der Microsoft.NET heißt. Aber ist deswegen jetzt die Extension .NET ??? |
Re: findFirst systemabhängig??
es gibt doch das märchen, dass ordner die endung ".dir" hätten...
|
Re: findFirst systemabhängig??
Zitat:
...:cat:... |
Re: findFirst systemabhängig??
Zitat:
...:cat:... |
Re: findFirst systemabhängig??
Zitat:
Öffne die Eingabeaufforderung->DOS Box und geben ein "md Test.XYZ" und schaue dir im Explorer den erzeugten Ornder an. Nun suchst du mit deinem Source -> FindFirst('*.XYZ', faDirectory, SR) und wirst diesen Ordner auch finden. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 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