Ich wünsche allen an dieser Stelle noch ein gesundes und erfolgreiches neues Jahr 2025.
Ich benötige bitte Eure Hilfe bei folgenden Problem. Ich habe in einem Dokumentationsprogramm einige Dateien die im Dateisystem gespeichert werden. Den jeweiligen Pfad kann der Benutzer eigentlich nicht wissen, deshalb möchte ich ihm per Button den Standardexplorer im gewählten Verzeichniss öffnen.
eigebunden per uses ist die ShellApi und die LCLIntf
eigentich funktioniert dieser Aufruf mit dem direkt genannten Verzeichnis.
Code: Alles auswählen
// diese Codezeilen funktionieren, sind aber nicht variabel
ShellExecute(Application.Handle,PChar('explore'),'c:\dokumente',nil,nil,SW_SHOW);
ShellExecute(Application.Handle,'open','c:\dokumente',nil,nil,SW_MAXIMIZE);
OpenDocument('c:\dokumente');
wird das Verzeichnis vorher in eine Variable übergeben, funktioniert das nicht mehr, wenn der Pfad nicht gefunden wird z.b. wegen einem Leerzeichen
Code: Alles auswählen
var strFolder : String;
begin
strFolder := AppConfig.DokumentRoot + DirectorySeparator + IntToStr(doc.Group);
ShellExecute(self.Handle,'explore',PChar('/e,'+ QuotedStr(UTF8ToSys(strFolder))),NIL,NIL, SW_SHOW);
end;
Um mögliche Probleme mit Sonderzeichen zu vermeiden, würde ich die UTF8ToSys verwenden. Die Funktion QuotedStr sollte mir die benötigen Anführungszeichen liefern. Die Überprüfung des gültigen Pfades mit ShowMessage(strFolder) und im Debuger ist erfolgreich.
Der erzwungene Windows Explorer sollte Parameter unterstützen, gefunden hier: https://it-und-web.de/tipps/Windows_Exp ... ter_Werte/