ShellExecute nie otwiera plików z polskimi znakami

ShellExecute nie otwiera plików z polskimi znakami
J2
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,
Piszę w Lazarusie i nie mogę poradzić sobie z ShellExecute i polskimi znakami, otwiera wszystkie pliki oprócz tych z polskimi znakami
poniższy kod nie działa:

Kopiuj
   
  plik := 'c:/pliką.txt';
  ShellExecute(GetDesktopWindow,'open',PAnsiChar(plik),nil,nil,SW_SHOWNORMAL);

nawet po wpisaniu bezpośrednio w ShellExecute(GetDesktopWindow,'open','c:/pliką.txt',nil,nil,SW_SHOWNORMAL);

Proszę o pomoc

PD
  • Rejestracja: dni
  • Ostatnio: dni
1

W lazarusie tekst jest kodowany w UTF-8, windows natomiast (w wersji pl) obsługuje cp1250, więc należy całą ścieżkę do pliku (wraz z nazwą pliku) przekonwertować z UTF-8:

Kopiuj
plik := 'c:/pliką.txt';
ShellExecute(GetDesktopWindow,'open',PAnsiChar(UTF8ToAnsi(plik)),nil,nil,SW_SHOWNORMAL);
J2
  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki działa ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.