Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.01.2013, 20:51
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию Ударение в имени файла. Как?

Задача не совсем для Дельфи, но все-же.
Необходимо записать файл на диск, так что-бы в его имени было видимо ударение, т.е. наклонная черточка над буквой.
Решение однозначно есть, ибо сам такой файл видел и переименовывал, но вот какими путем сие достигнуто неясно.
Например сохраните файл с именем ”Странно́е имя файла.txt”
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 31.01.2013 в 20:53.
Ответить с цитированием
  #2  
Старый 31.01.2013, 21:03
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

str := 'выапв'#$3f+'sdg'
так получается?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 31.01.2013, 21:12
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
str := 'выапв'#$3f+'sdg'
так получается?
Нееее, если бы все так просто было
Ошибку ввода/вывода 123 будем иметь.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 31.01.2013, 23:49
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Что конкретно интересует-то? Ввод ударе́ния с клавиатуры -- зажать Alt и набрать 769 на цифровой клаве. Переименовать файл -- в любой программе, поддерживающей Unicode, -- в том же "Проводнике", не к ночи будет помянут.

Программно -- аналогично, только использовать WideString (UnicodeString или просто string в модных версиях Delphi) и W-версии системных функций:
Код:
var
  W: WideString;
begin
  W := Application.ExeName;
  if not MoveFileW(Pointer(W), Pointer(W + WideChar(769))) then
    RaiseLastOSError;
end;
Ответить с цитированием
  #5  
Старый 01.02.2013, 15:29
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Сообщение от Freeman
Что конкретно интересует-то? Ввод ударе́ния с клавиатуры -- зажать Alt и набрать 769 на цифровой клаве. Переименовать файл -- в любой программе, поддерживающей Unicode, -- в том же "Проводнике", не к ночи будет помянут.

Программно -- аналогично, только использовать WideString (UnicodeString или просто string в модных версиях Delphi) и W-версии системных функций:
Код:
var
  W: WideString;
begin
  W := Application.ExeName;
  if not MoveFileW(Pointer(W), Pointer(W + WideChar(769))) then
    RaiseLastOSError;
end;
1. Открываем проводник в WinXP, пробуем переименовать по вашему рецепту. Получаем неотображаемый символ. Вывод - не катит такое решение.
2. Пока проверить не могу. Проверьте у кого есть Дельфа с поддержкой юникода и отпишитесть о результатах.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 01.02.2013, 23:22
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Страдалецъ
1. Открываем проводник в WinXP, пробуем переименовать по вашему рецепту.
Ого! Не проверил, понадеялся на Microsoft. Каюсь. :-)

Тогда то же самое можно проделать через командный файл? Гм. Тоже не получается. "Блокнот" ударения сохраняет, но только в формате Unicode, а оболочка такие bat-файлы не выполняет. Если кто-то сможет проделать это через установочный inf-файл и rundll32 advapi32, впору будет писать на "Хабр" в "Ненормальное программирование".

Цитата:
Сообщение от Страдалецъ
2. Проверьте у кого есть Дельфа с поддержкой юникода и отпишитесть о результатах.
Я проделывал это в Delphi 6.
Ответить с цитированием
  #7  
Старый 01.02.2013, 23:30
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Во, получилось! Нужно ввести через Alt+769 нужное имя где-нибудь в "Блокноте" или Word-е, потом его скопировать и вставить в "Проводнике" при переименовании.

А напрямую ввести не позволяет почему-то, даже странно. А на уровне ФС и интерфейса все поддерживается, ибо везде Unicode. Оно и в NT4 должно работать.
Ответить с цитированием
  #8  
Старый 02.02.2013, 08:45
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Freeman
Alt+769
У меня какой-то смайлик втыкается.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #9  
Старый 03.02.2013, 22:21
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Баранский какой-то "Блокнот". В PSPad-е вводится, в Word-е тоже вводится. В любом браузере тоже вводится.

Я в шоке, если честно, от того, во скольких программах не работает, казалось бы, такой штатный способ ввода.
Ответить с цитированием
  #10  
Старый 03.02.2013, 22:29
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Шрифт Lucida Console.
Хотя копипаст из миранды ударение нормально принимает.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #11  
Старый 12.04.2013, 18:23
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Итак проблему победили вроде - это радует. А вот вспомнился мне виденный еще аж по DOS очень необычный эффект. Итак ситуация - текстовый VGA режим 80х25. На экран выводится буква нарисованная 8 цветами, помимо фона. Вот такой вот изврат.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter