|
|
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
Всем доброго вечера, Проект в lazarus 2.0.10 в юникоде, Win.10. при вызове программы через Код: pascal 1. 2. 3. если в имени файла есть кириллица то получаю ответ что iShellErr = 2 - The specified file was not found. В сети народ рекомендует PChar поменять на PWideChar но компилятор ругается, желает PChar прошел кликом до определения ShellExecute в ascdef.inc Код: pascal 1. да, PChar. Что посоветуете? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 20:55 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
Завернуть имя файла в двойные кавычки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 21:09 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
northener Завернуть имя файла в двойные кавычки. уже пробовал, не помогло Код: pascal 1. 2. если кириллицы нет то всё открывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 21:14 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
hlopotun Проект в lazarus 2.0.10 в юникоде, ShellExecuteW(...)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 21:26 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
А вообще, в лазаре есть LCLIntf.OpenDocument() и SysUtils.ExecuteProcess(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 21:53 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, какая то фигня если в uses только uses Windows то shellexecute тащит из ascdef.inc Код: pascal 1. iShellErr := ShellExecute(0, 'open', PChar(sTmpExec), '', '', SW_NORMAL); С названиями латиницей всё работает, с кирилицей не находит файлы. если использую ShellExecuteW то тащит из unifun.inc Код: pascal 1. iShellErr := ShellExecuteW(0, 'open', PWideChar(sTmpExec), '', '', SW_NORMAL); уже не находит ни с латиницей ни с кириллицей добавляю в uses windows, ShellApi; теперь тащит из ShellApi Код: pascal 1. iShellErr := ShellApi.ShellExecuteW(0, 'open', PWideChar(sTmpExec), '', '', SW_NORMAL); опять не находит ни с латиницей ни с кириллицей .... непонятно что не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 22:14 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey А вообще, в лазаре есть LCLIntf.OpenDocument() и SysUtils.ExecuteProcess(). спасибо за наводку, OpenDocument выглядит интересно, одиночнае файлы открывает. Непонятно как открыть им к примеру cmd файл с параметром. ExecuteProcess отрабатывает без проблем. Спасибо! кстати, может существует нечто подобное что будет и на других платформах работать? у OpenDocument вижу только WinCE в директивах и он через ShellExecute тоже работает а ExecuteProcess написан на основе CreateProcessW из kernel32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 22:50 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
hlopotun кстати, может существует нечто подобное что будет и на других платформах работать? Эти функции кроссплатформенные. Исходники ты видишь только под разрабатываемую платформу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 23:10 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
в принципе решение в OpenDocument можно подсмотреть Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 23:12 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
Вообще-то функции "W" или "A" никто не должен вызывать напрямую. Они дожны автоматически ресолвиться в зависимости от типа проекта - unicode, asci. Кривизна какая-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 23:20 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
Relic Hunter, Так и будет, когда FPC на юникод переедет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 23:23 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
hlopotun, рекомендую еще вики фпц по теме почитать: https://wiki.lazarus.freepascal.org/Executing_External_Programs#TProcess ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 02:13 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
makhaon hlopotun, рекомендую еще вики фпц по теме почитать: https://wiki.lazarus.freepascal.org/Executing_External_Programs#TProcess Если быть более точным, то лучше TProcessUTF8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 12:04 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
Док makhaon hlopotun, рекомендую еще вики фпц по теме почитать: https://wiki.lazarus.freepascal.org/Executing_External_Programs#TProcess Если быть более точным, то лучше TProcessUTF8. А есть ли в delphi аналог Tprocess и TprocessUtf8 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 15:32 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
hlopotun Док пропущено... Если быть более точным, то лучше TProcessUTF8. А есть ли в delphi аналог Tprocess и TprocessUtf8 ? А он там нужен? Эта обёртка пишется за 15 минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 17:25 |
|
||
|
shellexecute русские символы в названии файла
|
|||
|---|---|---|---|
|
#18+
Если нужно не открывать файлы с данными в ассоциированных программах, а запускать процесс, то всякие Shell обертки надо выкинуть и юзать честный CreateProcess (или кросс-платформенный TUTF8Process) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2021, 11:18 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40034821&tid=2037716]: |
0ms |
get settings: |
6ms |
get forum list: |
25ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 521ms |

| 0 / 0 |
