Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 785
Delphi 6-7

TFilestream ошибка пути если имена файлов или папок с пробелами

01.05.2022, 06:48. Показов 2269. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, используя TFilestream если само имя файла или папки содержит пробелы то возникает ошибка/исключение, а ещё возможно если пути до файла длинные
Delphi
1
2
3
4
5
6
var
fs:TFilestream;
myfile:string;
begin
myfile:='c:\parallel word\my love world.txt';
fs:=TFilestream.Create(PChar(myfile),fmOpenReadWrite); // ошибка возникает здесь если пути или имя файла содержит пробелы
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2022, 06:48
Ответы с готовыми решениями:

Перенос папок и файлов в них кроме 2х папок по новому пути
Всем привет! Подскажите пожалуйста простое решение по переносу папок c файлами в новую папку кроме 2х папок. Подробнее - Есть папка P1...

Имена файлов с пробелами
Здравствуйте,нужно :"Написать скрипт с использованием цикла for, выводящий на консоль размеры и права доступа для всех файлов в...

Получить только имена всех папок без полного пути в определенной директории
Нужно получить имена всех папок находящихся в определенной директории. Получить имена получается , но только с полным путем, а хотелось бы...

32
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
03.05.2022, 01:16
Студворк — интернет-сервис помощи студентам
это не работает потому что нет прямого перевода этого символа в Ansi
иначе бы и не надо никакого Unicode
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 785
03.05.2022, 01:35  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
иначе бы и не надо никакого Unicode
Помоги пожалуйста, с этим проектом уже сил нету (
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
03.05.2022, 01:39
Цитата Сообщение от Uefi220 Посмотреть сообщение
Ansistring тоже не сработало
А как оно должно было сработать? Кодировка Ansi это то что вы выбрали в своей локали основным языком и языком для программ не поддерживающих юникод. Откуда компилятор иначе может узнать к какому языку принадлежат символы "çã" в вашей строке.
Так что у вас единственный путь для выхода из туннеля - перейти на современную версию Дельфи.
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 785
03.05.2022, 02:09  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Так что у вас единственный путь для выхода из туннеля - перейти на современную версию Дельфи.
Мб есть способы другие всё же )
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
03.05.2022, 02:26
переименовать файл
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
03.05.2022, 02:48
Цитата Сообщение от krapotkin Посмотреть сообщение
переименовать файл
Предвижу вопрос. А как его "переименовать"?
1
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
03.05.2022, 09:42
explorer написан позже чем Delphi там все работает
))
0
Модератор
4149 / 2360 / 812
Регистрация: 15.11.2015
Сообщений: 9,469
03.05.2022, 09:47
Но всё равно, длинных путей эксплорер не хочет воспринимать. Хотя, тот же far нормально с ними работает.
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 785
03.05.2022, 21:59  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
длинных путей эксплорер не хочет воспринимать
Перешёл на новую версию дельфи XE3 чтобы скомпилировать проект почему то
TFileStream.Create(filename,fmOpenReadWr ite); снова возвращает сам полный путь и само собой опять кидает в ошибку, хотя перед ним делаю PathGetShortPath(filename); проверял путь действительно сокращается.
0
Модератор
4149 / 2360 / 812
Регистрация: 15.11.2015
Сообщений: 9,469
03.05.2022, 22:50
Uefi220, просмотрел тему ещё раз и не увидел текст самой ошибки. Что конкретно не нравится?
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
04.05.2022, 01:49
Цитата Сообщение от Uefi220 Посмотреть сообщение
хотя перед ним делаю PathGetShortPath(filename)
А нафига? Я до сих пор ни в одном примере не видел действительно слишком длинного имени файла. Так зачем эта функция нужна?
0
Модератор
 Аватар для D1973
9934 / 6471 / 2458
Регистрация: 21.01.2014
Сообщений: 27,436
Записей в блоге: 3
04.05.2022, 05:12
Цитата Сообщение от Uefi220 Посмотреть сообщение
Перешёл на новую версию дельфи XE3
"Новой" версии в этом году исполняется 10 лет...
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 785
04.05.2022, 16:34  [ТС]
Решил так теперь всё работает и Китайские имена файлов благодря XE3 и длинные пути ):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure CreateBuffer(out Buffer: UnicodeString; const ALen: Integer); overload;
begin
  SetLength(Buffer, ALen);
  FillChar(Pointer(Buffer)^, ALen * SizeOf(WideChar), 0);
end;
 
function PathGetShortPath(const APath: String): String;
begin
  if not Assigned(FGetShortPathName) then
  begin
    FGetShortPathName := GetProcAddress(Kernel32, {$IFDEF UNICODE}'GetShortPathNameW'{$ELSE}'GetShortPathNameA'{$ENDIF});
    Win32Check(Assigned(FGetShortPathName));
  end;
 
  CreateBuffer(Result, 32768);
  SetLength(Result, FGetShortPathName(PChar(APath), PChar(Result), 32768));
  if Result = '' then
    Result := APath;
end;
 
 
var
files:TFileStream;
myfile:string;
begin
myfile:='\\?\' +'c:\parallel word q9c8vtu249ytfwaejgiuwahFGUI\agerhertwwwwwwwwwwwwwwwwwwwwwwwww\my love world.txt';
files:=TFileStream.Create(PathGetShortPath(myfile),fmOpenReadWrite);
end;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.05.2022, 16:34
Помогаю со студенческими работами здесь

Полные имена файлов с пробелами в параметрах команды SCHTASKS
Не получается корректно создать "назначенное задание" из командной строки с помощью schtasks. К примеру нужно создать задание,...

Вывести имена файлов и папок в директории
Стоит такая задача: Через Get запрос передаётся имя директории. Необходимо вывести все файлы и папки вы этой директории в в виде...

Длинные имена файлов в глубине папок
Помогите решить проблему, это касаеться ОС в целом, у меня расположена папка в самом начале жесткого диска, но в ней множество подпапок для...

Вывести в два стобика имена папок и файлов.
Нужно сделать вывод имен папок и файлов в два столбика. В одном-имена папок, в другом-имена файлов. Пока что получается только так: ...

Ограничения на имена папок, файлов и классов проекта
Какие ограничения в c# (или в VS) на имена папок, файлов и классов проекта? В первую очередь интересует вопрос совпадения этих имен. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru