Danke Tino. Jetzt läuft die Abfrage makellos. Ich hab aber wiederum ein Problem mit dem Save-Dialog.
Beim Schliessen prüfe ich, ob der User überhaupt einen Namen für seine Datei eingetragen hat. Falls ja, dann stelle ich fest, ob er auch die Erweiterung (hier *.txt oder *.log) hinzugefügt hat oder nicht. Wenn ja, dann wird die Datei angelegt und abgespeichert, wenn nicht, füge ich die Erweiterung selbst hinzu je nachdem, welcher Dateifilter gerade aktiv ist. Der Code:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| var F: TextFile ; //SaveD = Save-Dialog if SaveD. Execute then begin SelFile:=ExtractFileName(SaveD.FileName); // Name der Datei Laenge:=Length(SelFile); Ext:=Copy(SelFile, Laenge-3, 4); // Ext = Dateinamenerweiterung if (Ext='.txt') or (Ext='.log') or (Ext='.TXT') or (Ext='.LOG') then begin AssignFile(F, SaveD.FileName); Rewrite(F); CloseFile(F); end else begin if SaveD.Filter='TXT (*.txt)' then //hier hapert's Ext:='.txt' else Ext:='.log'; AssignFile(F, SaveD.FileName + Ext); Rewrite(F); CloseFile(F); end; end; |
Beim Hinzufügen wird aber immer die Erweiterung *.log genommen unabhängig davon ob gerade nur txt- oder log-Dateien angezeigt werden. Delphi interpretiert SaveD.Filter immer als TXT|*.txt|LOG|*.log, da ich ja zwei Filter habe und läuft deshalb den else-Zweig durch. Meine Frage ist, wie kann ich den gerade aktiven Filter feststellen?