|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Чтение файлов с длинным путем
Добрый день, может ли кто нибудь проконсультировать по следующему вопросу:
необходимо прочитать несколько файлов, расположенных по пути содержащим и русские и английские символы. пример такого файла: Цитата:
Пробую читать 1) Код:
strFiles := TDirectory.GetFiles(SetDirName); for i := 0 to High(strFiles) do JSONValue := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(TFile.ReadAllText((strFiles[i]))), 0); или 2) Код:
strFiles := TDirectory.GetFiles(SetDirName); for i := 0 to High(strFiles) do Memo1.Lines.LoadFromFile(strFiles[i],TEncoding.UTF8); 3) Код:
sTemporary_List := TStringList.Create(); sTemporary_List.LoadFromFile(sReadingFileName,TEncoding.UTF8); В любом случае возникает ошибка, что система не находит данный файл. Пробовал использовать перед чтением TDirectory.SetCurrentDirectory(SetDirName); Так же пробовал копировать файл в директорию "c:\t". В этом случае возникает та же ошибка, что система не находит данный файл. Если сократить имя файла с Конфигурационный параметр виртуальный адрес конфигурационной памяти для PCI на процессоре GT7856.json на параметр.json то файл читается, но мне необходимо читать именно такие длинные файлы. Может кто либо проконсультировать по поводу чтения таких файлов? |
#2
|
|||
|
|||
Решил
Нашел решение. К строке содержащей имя файла необходимо добавить '\\?\'. И все читается.
|
#3
|
|||
|
|||
Проблема известная, непонятно почему Абракадабра не решит ее. Баг в самом TPath, который, видимо, и используется теперь везде.
Проблема возникает именно с длинным путем ( > 260 символов). Найденное решение, в принципе, помогает, но, как говорят, не всегда. В Винде есть специальная функция, которая конвертирует длинный путь в которкий (формат 8.3). Можно использовать ее. См тут: https://tips.delphidabbler.com/tips/6 Последний раз редактировалось lmikle, 30.07.2024 в 19:59. |
#4
|
|||
|
|||
В Винде есть специальная функция, которая конвертирует длинный путь в которкий (формат 8.3). Можно использовать ее.
Нормальная конвертация только для пути не содержащего русские названия каталогов |