FileFindFirstFile - Fehler schon in der EN-Hilfe

  • Hallo.

    Vorwort

    Wie vermutlich viele hier, helfe ich gerne bei Fehlern in der DE-Hilfe. Nur das Einordnen eines Themas in die richtige Rubrik ist etwas verwirrend. Ich würde mich sehr freuen, wenn eine kurze Einordnunghilfe unter den Rubrikbezeichnungen stehen würde, z. B. "Allgemein - Hier gehört dies hin", "Bugs - hier gehört das hin" und "Fragen/Anregungen - hier gehört jenes hin".

    Zum Thema

    Den Thread habe ich hierhin gestellt, da Peter S. Taler hier etwas ähnliches geschrieben hat. Bitte verschieben, falls falsche Rubrik.

    Bei FileFindFirstFile steht unter Bemerkungen/Remarks:

    You can use only one wildcard in the filename part or in the extension part i.e. a*.b?.

    Es kann nur eine Wildcard im Teil des Dateinamens oder der Endung verwendet werden, z. B. a*.b?.

    Das scheint jedoch nicht zu stimmen, den folgendes funktioniert:

    ;~ Local $hSearch = FileFindFirstFile("*.*") ; <== Original-Zeile

    Local $hSearch = FileFindFirstFile("Neues?Text*ment - K?pie*.?x?")

    Mein Testaufbau

    Man nehme das Beispiel aus der Hilfe, speichere es in einem Testordner ab, platziere dort Testdateien und ändere die oben genannte Zeile im Beispiel-Code nach belieben.

    Meine Testdateien:

    Neues test Textdokument - Kopie (2).txt

    Neues Textdokument - Kopie (3).txt

    Neues Textdokument - Kopie.txt

    Neues Textdokument.txt

    Darauf gekommen bin ich, weil ich die Formulierung so schon irritierend fand. Ich wusste nicht, ob 1 Wildcard im Dateinamen plus 1 Wildcard in der Endung stehen darf, oder nur 1 Wildcard insgesamt, entweder im Dateinamen ODER der Endung. Bei meinen Tests sah es dann überraschenderweise so aus, als könne man mehrere Wildcards verwenden, und sowohl im Dateinamen UND in der Endung.

    Kann das jemand bestätigen? Und evtl. an die richtige Stelle weiterleiten? (Ihr wisst ja, mein Englisch ...) :rolleyes: Oder nur in der DE-Hilfe korrigieren?

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Kannst Du bitte Dein Test-Skript posten, damit wir nicht das Rad neu erfinden müssen?

    In welchem Verzeichnis suchst Du nach Dateien - hier wäre wegen der Nachvollziehbarkeit ein allgemeines Verzeichnis (z.B. das AutoIt Programmverzeichnis) sinnvoll.

    Bedingt durch die verwendete Windows-API ("Due to the underlying Windows API used (FindFirstFile) ...") wäre noch die von Dir verwendete Windows-Version interessant.

  • Hast du den Spoiler gelesen? Dort ist mein Testaufbau drin. Soll ich trotzdem nochmal das Script hochladen?


    Edit: Hier mein Testaufbau.

    Testordner.zip

    Edit 2: Mein OS ist Win 10 Prof 1903. Das Script kann man platzieren wo man will, es wird das Scriptverzeichnis durchsucht. AutoIt Version: 3.3.14.5

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

    3 Mal editiert, zuletzt von Professor Bernd (8. September 2019 um 19:29)

  • Stimmt - sinnerfassend lesen hilft :)
    Jetzt wäre noch Dein Betriebssystem interessant.

    Ich hab's mit Windows 7 im Verzeichnis der Task Scheduler UDFs probiert.

    Bringt auch mit mehreren Wildcards das richtige Ergebnis.
    Da FindFileFirstFile aber eh "nur" auf den Windows APis aufbaut und selbst nicht mehr tut, vermute ich, dass die Aussage von älteren Versionen (Windows NT oder XP) stammt und damals vermutlich stimmte.

    Ich sehe dies auch nur als Hinweis, da die Funktion keinen Fehler erzeugt, wenn man sich nicht daran hält.

  • Ich sehe dies auch nur als Hinweis, da die Funktion keinen Fehler erzeugt, wenn man sich nicht daran hält.

    Sehe ich auch so. Nachdem mir ähnliches begegnet ist, vermute ich, dass das quasi als Vorsichtsmaßnamhe gemeint ist. So steht z. B. bei FileListToArray in den Bemerkungen:

    Zitat

    Funktion _FileListToArray

    Werden komplexe Filter mit mehreren Wildcards verwendet, so kann es zu unerwarteten Ergebnisse kommen.

    *test*.* wird zum Beispiel beide Unterordner testX und testX.X erkennen.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Hallo Tweaky, meine Frage nach dem Einordnen von Themen ist irgendwie untergegangen. Kannst du als Overlord dieser Abteilung kurz sagen, was du gerne wohin haben willst?

    Die Rubriken:

    "Allgemein"

    "Bugs"

    "Fragen/Anregungen"

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • "Allgemein"

    - Da poste ich wenn es eine neue Version gibt

    "Bugs"

    - Fehler (am besten direkt in den Post zur jeweiligen Version"

    "Fragen/Anregungen"

    - keine Ahnung