AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Lokalisierte Benutzerverzeichniss

Ein Thema von menten · begonnen am 24. Sep 2024 · letzter Beitrag vom 25. Sep 2024
Antwort Antwort
menten

Registriert seit: 3. Apr 2009
41 Beiträge
 
Delphi 10.3 Rio
 
#1

Lokalisierte Benutzerverzeichniss

  Alt 24. Sep 2024, 15:53
Hallo zusammen,

ich habe gerade die undankbare Aufgabe einige Fehler in der Anwendung eines Kunden beheben zu müssen. Ein Problem ist die Tatsache, dass Dateien standardmäßig in einem Ordner auf dem Desktop gespeichert werden (Ich weiß, Todsünde. Sind aber noch mehr Todsünden in dem Programm ).

Das Problem ist jetzt, dass der Datei-Öffnen Dialog die lokalisierten Verzeichnis Namen verwendet, in den Einstellungen aber die nicht-lokalisierten stehen. Sowohl ShGetKnownFolderPath als auch SHGetSpecialFolderPath liefern nämlich den nicht-lokalisierten.

Hat jemand eine Idee wie ich das umschiffen kann?


Danke und
Viele Grüße
Stefan Menten
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 30. Nov 2003
Ort: Luterbach (CH)
673 Beiträge
 
Delphi 12 Athens
 
#2

AW: Lokalisierte Benutzerverzeichniss

  Alt 24. Sep 2024, 22:22
Dein genaues Problem mit diesem Umstand/Verhalten habe ich zwar nicht ganz begriffen...

Kann es sein, dass Du so etwas in dieser Art suchst?
Delphi-Quellcode:
uses
  Windows, ShlObj, ShellAPI, SysUtils;

function GetLocalizedFolderPath(const NonLocalizedPath: string): string;
var
  SHFileInfo: TSHFileInfo;
begin
  Result := NonLocalizedPath;
  if SHGetFileInfo(PChar(NonLocalizedPath), 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_DISPLAYNAME) <> 0 then
    Result := SHFileInfo.szDisplayName;
end;
Roland

Geändert von blawen (24. Sep 2024 um 22:25 Uhr)
  Mit Zitat antworten Zitat
menten

Registriert seit: 3. Apr 2009
41 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Lokalisierte Benutzerverzeichniss

  Alt 25. Sep 2024, 11:09
Moin,

und danke für die Hilfe.

das Problem ist, dass der OpenDialog mit dem lokalisierten Namen arbeitet, in den Einstellungen aber der physikalische Pfad steht. Wenn der Benutzer dann eine Datei öffnen will, landet er im Dokumenten-Ordner weil der OpenDialog den Pfad nicht findet.

Deine Funktion habe ich ausprobiert. Das funktionert, übersetzt aber nur den letzten Ordnernamen.

Ich habe es jetzt mal mit SHGetLocalizedName versucht. Das funktionirt aber nicht so wie ich es implementiert habe.

Delphi-Quellcode:
function GetLocalName(Path: string): string;
var
  wpNew: PWideChar;
  cch: UINT;
  pidsRes: integer;
  hr: HRESULT;
begin
  wpNew := StrAlloc(MAX_PATH);

  try
    FillChar(wpNew^, MAX_PATH, 0);
    cch := MAX_PATH;
    hr := SHGetLocalizedName(PWideChar(Path), wpNew, cch, pidsRes);
    if hr = 0 then
      result := wpNew
    else
      result := 'error';

  finally
    StrDispose(wpNew);
  end;

end;
Mache ich da was falsch?


Danke und
Gruß
Stefan Menten
Stefan
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz