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?
opendialog: Filter für Dateien mit leerer Dateierweiterung
-
- Beiträge: 41
- Registriert: Fr 3. Mai 2019, 17:45
- OS, Lazarus, FPC: Win11 (L 3.6 FPC 3.2.2)
- CPU-Target: 64Bit
- Wohnort: Saarland
opendialog: Filter für Dateien mit leerer Dateierweiterung
Viele Grüße
Gerold
Gerold
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: opendialog: Filter für Dateien mit leerer Dateierweiterung
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:
Opendialog1.files. ist ne TStringList.
Winni
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;
Winni
Re: opendialog: Filter für Dateien mit leerer Dateierweiterung
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.
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.
Re: opendialog: Filter für Dateien mit leerer Dateierweiterung
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...
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...
-
- Beiträge: 41
- Registriert: Fr 3. Mai 2019, 17:45
- OS, Lazarus, FPC: Win11 (L 3.6 FPC 3.2.2)
- CPU-Target: 64Bit
- Wohnort: Saarland
Re: opendialog: Filter für Dateien mit leerer Dateierweiterung
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
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.
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)<>''
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
Gerold
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: opendialog: Filter für Dateien mit leerer Dateierweiterung
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