opendialog: Filter für Dateien mit leerer Dateierweiterung

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
KreuzBlick
Beiträge: 29
Registriert: Fr 3. Mai 2019, 17:45
OS, Lazarus, FPC: Win8.1 (L 2.0.10 FPC 3.0.4)
CPU-Target: 32Bit
Wohnort: Saarland

opendialog: Filter für Dateien mit leerer Dateierweiterung

Beitrag von KreuzBlick »

Hallo,

bei OpenDialog kann ich ja einen Filter setzen, etwa um mir nur Dateien mit Erweiterung .txt anzeigen zu lassen.

Jetzt möchte ich aber nur Dateien sehen, die keine Erweiterung haben. Irgendwie sehe ich dafür aber keinen Weg, denn * zeigt wie *.* alles an, jedoch *. zeigt nichts an. Gibts da eine Lösung?
Viele Grüße
Gerold

Benutzeravatar
Winni
Beiträge: 502
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.06, fpc 3.04
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: opendialog: Filter für Dateien mit leerer Dateierweiterung

Beitrag von Winni »

Hi!

Da ist wohl eigene Arbeit erforderlich.
Mit ist der Algoritmus aber noch nicht ganz klar.

Alle ohne Punkt? Dann geht aber auch Data2020.11.11 flöten.
Genauso, wenn man den Punkt an 2.letzter, 3letzter 4letzter Stelle verbietet.

Also der hook geht so:

Code: Alles auswählen

If OpenDialog1.execute then
   begin
   for i := 0 to Opendialog1.files.count - 1 do
     begin
    // lass Dir was einfallen
    end; // i 
  end;
Opendialog1.files. ist ne TStringList.

Winni

Benutzeravatar
theo
Beiträge: 8537
Registriert: Mo 11. Sep 2006, 19:01

Re: opendialog: Filter für Dateien mit leerer Dateierweiterung

Beitrag von theo »

Damit wirst du nicht glücklich.
Mindestens auf GTK2 bleibt "Files" bei mir leer.
Der Filter bei den File Dialogen ist eigentlich nur für Dateierweiterungen (Typen) gedacht. Andere Dateinamenseigenschaften sind dort nicht vorgesehen.
Ein Dateiname ohne Erweiterung ist nun mal "any file".
Ich würde die Idee noch einmal überdenken.

wp_xyz
Beiträge: 3462
Registriert: Fr 8. Apr 2011, 09:01

Re: opendialog: Filter für Dateien mit leerer Dateierweiterung

Beitrag von wp_xyz »

Da die System-Dialog vom Widgetset erzeugt werden, vermute ich, dass dieses Verhalten aus Windows kommt (über gtk2 kann ich nichts sagen), vielleicht im Zusammenhang mit der blödsinnigen Defaulteinstellung, dass bei einer Defaultinstallation von Windows keine Dateiendungen angezeigt werden (was man so interpretieren könnte: "Den Fall 'keine Endung' gibt es nicht, denn sie kann ja ausgeblendet sein"). Und in der Tat sieht man bei Delphi dasselbe Verhalten wie bei Lazarus.

P.S.
Wenn du die Option ofOldStyleDialog aktivierst, werden die endungslosen Dateien angezeigt -- nur hast du dann den Win95-typischen Dateidialog...

Nochmals P.S:
Wenn man um drei Ecken denkt, kann man sich das auch so erklären: Wenn die Filtermaske "*." ist, dann muss auf jeden Fall ein Punkt am Ende des Dateinamens sein...

KreuzBlick
Beiträge: 29
Registriert: Fr 3. Mai 2019, 17:45
OS, Lazarus, FPC: Win8.1 (L 2.0.10 FPC 3.0.4)
CPU-Target: 32Bit
Wohnort: Saarland

Re: opendialog: Filter für Dateien mit leerer Dateierweiterung

Beitrag von KreuzBlick »

Danke für die Beiträge.

Inzwischen bin ich zum Ergebnis gekommen, dass es wirklich nicht geht, beim OpenDialog nur Dateien ohne Endung anzeigen zu lassen.

Das ist aber kein Problem, das Pascal- oder Lazarusspezifisch wäre, vielmehr existiert das Problem schon auf Betriebssystemebene . Ich habe aber gerade mal unter Windows 8.1 mit der Eingabeaufforderung probiert: "dir *." liefert tatsächlich alle Dateien ohne Endung. Leider nützt diese Erkenntnis nichts.

Ich müsste eigentlich sogar weiter einschränken und nur die Dateien anzeigen lassen, die zusätzlich noch in den ersten 5 Bytes ein bestimmtes Muster haben. Spätestens dann ist wohl eine eigene Programmierung nötig.

Da ich diesen Aufwand jetzt nicht treiben will, werde ich es so machen, dass ich nach Auswahl von filename mit

Code: Alles auswählen

ExtractFileext(filename)<>''
teste, dass keine Erweiterung vorliegt und anschließend noch den Dateianfang überprüfe.

Noch ein Wort zur Manipulation der TStringlist Opendialog1.files. Diese Manipulation müsste eigentlich erfolgen, bevor execute aufgerufen wird. Allerdings ist Opendialog1.files read-only, so dass der Versuch sowieso zum Scheitern verurteilt ist.
Viele Grüße
Gerold

Benutzeravatar
Winni
Beiträge: 502
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.06, fpc 3.04
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: opendialog: Filter für Dateien mit leerer Dateierweiterung

Beitrag von Winni »

theo hat geschrieben:
Mo 16. Nov 2020, 12:08
Mindestens auf GTK2 bleibt "Files" bei mir leer.
Hast Recht. Ist aber noch anders.
Ich würde mal sage: Mehrstufige Entwicklung.

Zuerst durfte man nur eine Date auswählen.
Die Antwort bekam man in OpenDialog.FileName.

Dann wurde Multi-Select rangeschraubt.
Nun erhält man die Antwort in OpenDialog.Files.
Wenn Multi aktiviert ist.


Winni

Antworten