Also wäre es der Tipp von jaenicke nicht gewesen, hätte ich gefragt wie lang der Pfad ist. Jenseits einer bestimmten Länge (die Maxlänge fällt mir jetzt auch nicht ein) gibt es von Programm zu Programm gelegentlich verrückte Ergebnisse. Einige Programme kommen mit der Überlänge klar, andere wiederum nicht.
Aber zu deinem Problem mit OnClose. Ich hatte vor Tagen auch ein "Problem" mit OnSave, allerdings ging es da um OnTypeChange. Da haben wir festgestellt, dass Zugriffe auf das Dialog Fenster, während es noch offen, bzw. aktiv ist, nicht ohne weiteres möglich sind. Erst wenn das Fenster wieder geschlossen ist, kann man mit "normal" FileName arbeiten. Somit stellt sich die Frage wann OnClose genau ausgelöst wird, bevor der Wert an FileName übergeben wird oder nachdem. So wie ich es erkennen kann wird es vorher ausgelöst, d. h. FileName enthält noch gar nicht den neuen Pfad, sondern ein Wirrwarr von Zeichen.
Übrigens, ich konnte deine verrückten Zeichen nachbilden mit:
Delphi-Quellcode:
procedure TForm1.od1Close(Sender: TObject);
begin
ShowMessage(Od1.FileName);
end;
Also, OnClose ist für das was du abfragst ungeeignet, da der FileName Wert noch nicht übergeben wurde. Letztendlich sollte man dazu Execute nutzen, dazu ist es auch gedacht.