Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Code optimieren für FileOpenDialog und OpenTextFileDialog


GerhardS - Mo 28.09.09 20:56
Titel: Code optimieren für FileOpenDialog und OpenTextFileDialog
Hallo,
in D2009 kann man zum Öffnen einer Datei zwischen FileOpenDialog (für Vista+) und OpenTextFileDialog (für XP) wählen. Die Unterschiede sind marginal. Was kann ich tun, um den Code nicht doppelt hinzuschreiben? Mir schwebt etwas in der Art vor:


Quelltext
1:
2:
3:
4:
5:
if Is60plus //WinNT 6.0 oder höher, Code ist bekannt
  then x := FileOpenDialog1
  else x:= OpenTextFileDialog1;
x.Title := 'Der Titel'; 
// und alle weiteren identischen Eigenschaften

Gibt dafür eine Lösung?


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 28.09.2009 um 21:56


Mitmischer 1703 - Di 29.09.09 15:15

Du kannst die GetVersionEx-Function verwenden

Ungetestet, müsste aber gehen:


Delphi-Quelltext
1:
2:
3:
4:
5:
procedure GetOS;
var test : _OSVERSIONINFOEXW;
begin
  GetVersionEx(test);
end;


Und in test stehen u. a. folgende Information : Die Major/Minor-Version des OS, die Build-Nummer des OS, SP-Version.. und wProductType -> da steht das OS drin. Das ließt du dann entweder so http://msdn.microsoft.com/en-us/library/ms724358%28VS.85%29.aspx oder so http://msdn.microsoft.com/en-us/library/ms724451%28VS.85%29.aspx aus (Guck mal unter Remarks)

Laut msdn gibt es dann noch die GetProductInfo-Funktion. In der Realität leider nicht :)


GerhardS - Di 29.09.09 21:25

Meine Frage geht in eine andere Richtung: ich möchte wissen, ob es eine Möglichkeit gibt, FileOpenDialog und OpenTextFileDialog gemeinsam zu steuern. Die Information, unter welcher Windows-Version meine Anwendung läuft, gibt mir TOSVersionInfo.


turboPASCAL - Di 29.09.09 22:27

Hi,

http://www.delphipraxis.net/post460691.html#460691

Also warum nicht FileOpenDialog ?


Boldar - Di 29.09.09 22:44

strg+C sollte doch kein problem sein, in verbindung mit STRG+V braucht man dann nicht mehrmals tippen.


GerhardS - Mi 30.09.09 12:09

user profile iconturboPASCAL hat folgendes geschrieben Zum zitierten Posting springen:
Hi,

http://www.delphipraxis.net/post460691.html#460691

Also warum nicht FileOpenDialog ?

Weil FileOpenDialog nicht unter WinXP läuft, sondern erst ab Vista, während OpenTextFileDialog unter WinXP läuft. Leider haben die beiden Dialoge auch plattformspezifische Eigenschaften, so dass man mit STRG-C nicht sehr weit kommt. Mir geht es vor allem darum, schlanken Code zu schreiben (und ich vermute, dass sich WinXP noch mehrere Jahre hält).


Tryer - Mi 30.09.09 18:47

Eine Wrapper - Klasse welche die benötigten gleichen Eigenschaften bereitstellt und (intern) den passenden Dialog erzeugt.