Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.05.2019
Сообщений: 34

Проблема с кодировкой в OpenDialog

16.08.2019, 14:11. Показов 5598. Ответов 49

Студворк — интернет-сервис помощи студентам
Возникла проблема не пойму почему так просто мистика. Вот беру код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringList;
  i: Integer;
begin
  if not OpenDialog1.Execute then
    exit;
  sl := TStringList.Create;
  for i := 0 to OpenDialog1.Files.Count - 1 do
  begin
    sl.Add(OpenDialog1.Files[i]);
  end;
  Memo1.Text := sl.Text;
end;
И выбираю более 5000 файлов за раз, и в Memo показывается вот такой текст:

C:\Users\admin\Desktop\Files\Новый текстовый документ (1).txt
C:\Users\admin\Desktop\Files\Новый текстовый документ (2).txt
C:\Users\admin\Desktop\Files\Новый текстовый документ (3).txt
C:\Users\admin\Desktop\Files\Новый текстовый документ (4).txt
C:\Users\admin\Desktop\Files\Новый текстовый документ (5).txt
C:\Users\admin\Desktop\Files\Новый текстовый документ (6).txt
... и т.д.
C:\Users\admin\Desktop\Files\Новый текстовый документ (5328).txt
C:\Users\admin\Desktop\Files\Новый текстовый документ (5329).txt
C:\Users\admin\Desktop\Files\Новый текстовый документ (5330).txt

Все нормально пути файлов правильные. Но если я в опциях выберу любую тему оформления для программы например "Sky" и использую тот же код с теме же 5000+ файлами то в Memo показывается уже вот такой текст:

儇\Новый текстовый документ (1).txt
儇\Новый текстовый документ (2).txt
儇\Новый текстовый документ (3).txt
儇\Новый текстовый документ (4).txt
儇\Новый текстовый документ (5).txt
儇\Новый текстовый документ (6).txt
... и т.д.
儇\Новый текстовый документ (5328).txt
儇\Новый текстовый документ (5329).txt
儇\Новый текстовый документ (5330).txt

Показываются не правильные пути файлов. Почему так? После смены темы используется другая процедура определения пути в OpenDialog? Почему кодировка слетает? Как можно это исправить?
Delphi
1
sl.Add(OpenDialog1.Files[i]); // <--- В этой строчке нужно в ручную кодировку делать или как?
Помогите эту мистику победить.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.08.2019, 14:11
Ответы с готовыми решениями:

Проблема с кодировкой
Добрый день,столкнулся с такой проблемой.. в мэмо попадают символы utf8 и получаются иероглифы. что необходимо сделать, чтобы текст...

Проблема с русской кодировкой
Народ реально незнаю как исправить Тема такая (опишу в кратце) делаю поиск в файле одного символа , вывожу в лейбл и вуаля выдается...

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

49
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
10.09.2019, 16:33
Студворк — интернет-сервис помощи студентам
Мало ли что влияет, размер окошка TEdit, размер формы, размер монитора, быстродействие компа... Я стока скрытых багов обнаруживал, только лишь запуская проект на очень древнем ноуте, ууу...)

Ну с Appearance мерцает при движении мышкой над TEdit'ом. Причём совершенно одинаково и без DoubleBuffered и с ним.
При обычных системных стилях Win10 мерцает только без DoubleBuffered, с ним вроде уже нормально.

Та опробуйте вы для начала AlphaControls A.K.A. AlphaSkins. :3
0
0 / 0 / 0
Регистрация: 25.05.2019
Сообщений: 34
10.09.2019, 17:09  [ТС]
GoodWeather, Это аналог стандартных стилей (тем оформления) Delphi? Там таких багов не наблюдается?
0
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
10.09.2019, 17:40
Цитата Сообщение от kavabanga2019 Посмотреть сообщение
А проверяли то что я писал в посте 36? Этот баг проявляется и без темы оформления.
Без темы оформления после запуска проекта вставляю в TEdit текст, влезает 43679 символов, следующий символ вызывает баг. Версия 10.3
Миниатюры
Проблема с кодировкой в OpenDialog  
0
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
10.09.2019, 18:17
"Windows Classic Style"Самый древнийВсё рисуется простейшими элементами, заливается сплошным цветом, без прозрачности и сглаживаний, самый максимум - линейный градиент и однобитные маски аля GIF (и то вроде появилось чуть позже);Выполняется глубоко в ОС;Минимальная нагрузка на комп;
"Windows Visual Styles"Примерно начиная с WindowsXPРодной скин-движок самой ОС, полноценная полупрозрачность, использование картинок для фона/рамок, поддержка разных режимов растягивания последних;Выполняется системной библиотекой UxTheme.dll; фактически надстройка над "Windows Classic Style"; Скины хранятся в файле *.theme (по сути являющегося ini-файлом) и опционально набором файлов *.msstyles (по сути являющихся dll-файлами, но обычно только с графическими и текстовыми ресурсами);Любые базовые классы контролов ОС и контролы ComCtl32 начиная с 6-й версии автоматически "подхватывают" скины (при наличии у программы манифеста); Нагружают комп чуть сильнее, но не настолько сильно как думает большинство юзеров;
Embarcadero "VCL Styles" (или "Application Appearance")Собственный скин-движок библиотеки VCL, появился начиная вроде с какой-то XE-версииEmbarcadero попытались с нуля продублировать функционал "Windows Visual Styles" с некоторыми своими дополнениями, и чтоб можно было "одеваться" не только в родные стили ОС, но и в некие свои собственные;Основное выполняется где-то в модулях типа "Vcl.Themes", которые корнями проросли во все прочие модули; Сами скины хранятся в файлах *.vsf, при установке галочек в настройках проекта выбранные скины будут просто всунуты в ресурсы исполняемого файла;Задумка сама по себе отличная, вот только по сей день данный движок всё ещё глючит по чёрному; Про нагрузку сказать сложнее, но точно не легче "Windows Visual Styles", скорее наоборот;

Сторонние скин-движки типа AlphaControls делают как-то по-своему, чаще всего имеют свой формат хранения скина, исходный код не афишируют.
Зато имеют техподдержку, сами изучают собственные баги, регулярно выпускают обновления/исправления.
А внешний вид результата почти всегда можно подогнать под похожий на кого-то ещё другого.
0
0 / 0 / 0
Регистрация: 25.05.2019
Сообщений: 34
10.09.2019, 20:15  [ТС]
Rayvenor, Спасибо! значит это все таки баг, а то я думал что это у меня проблемы какие то с ПО.
GoodWeather, Спасибо и вам, теперь буду знать что к чему.
Цитата Сообщение от GoodWeather Посмотреть сообщение
Задумка сама по себе отличная, вот только по сей день данный движок всё ещё глючит по чёрному
Это да глюков и багов при выборе темы появляется огромная куча, вот только непонятно зачем они так сделали ведь можно было работать только с темой оформления а они просто сломали то что работало(
Цитата Сообщение от GoodWeather Посмотреть сообщение
Сторонние скин-движки типа AlphaControls делают как-то по-своему, чаще всего имеют свой формат хранения скина, исходный код не афишируют.
Зато имеют техподдержку, сами изучают собственные баги, регулярно выпускают обновления/исправления.
А внешний вид результата почти всегда можно подогнать под похожий на кого-то ещё другого.
Попробую по изучать AlphaControls.
0
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
11.09.2019, 11:26
Прикольный глюк!

kavabanga2019, а, если не секрет, зачем тебе такой огромный текст в Edit ?
ну не предназначен он для таких объёмов. Вот и глючит.
Но даже если бы он не глючил. Неужели это кому-то удобно - иметь текст в 40 тысяч символов, из которых видно сотню (в лучшем случае).
Возьми другой компонент, более подходящий (какой-нибудь список, дерево) - и глюк уйдёт и пользователю удобнее (возможно).
0
Модератор
 Аватар для D1973
9966 / 6500 / 2464
Регистрация: 21.01.2014
Сообщений: 27,511
Записей в блоге: 3
11.09.2019, 13:38
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
Возьми другой компонент, более подходящий
Мне вот тоже до сих пор не понятно, почему нельзя сделать
Delphi
1
Memo1.Lines.Assign(FileOpenDialog1.Files);
Что за нужда насиловать именно TEdit?
0
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
11.09.2019, 14:24
Насколько я понял, ТС увидел что внутри OpenDialog при выборе кучи файлов в его Edit чё-та текст берёт и пропадает.
Ну он сделал свой Edit на форме и скопировал туда - и там тоже пропадает (а может просто не прорисовывается), просто проверить.

А основная проблема-то в том что в самом OpenDialog.Files содержимое портится..!

Добавлено через 2 минуты
Как вообще Appearance умудряется это портить, не представляю, капец просто)))
1
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
11.09.2019, 14:32
Цитата Сообщение от GoodWeather Посмотреть сообщение
А основная проблема-то в том что в самом OpenDialog.Files содержимое портится..!
А вот это реально проблема, согласен.
0
0 / 0 / 0
Регистрация: 25.05.2019
Сообщений: 34
12.09.2019, 18:26  [ТС]
Цитата Сообщение от GoodWeather Посмотреть сообщение
Насколько я понял, ТС увидел что внутри OpenDialog при выборе кучи файлов в его Edit чё-та текст берёт и пропадает.
Ну он сделал свой Edit на форме и скопировал туда - и там тоже пропадает (а может просто не прорисовывается), просто проверить.
А основная проблема-то в том что в самом OpenDialog.Files содержимое портится..!
Абсолютно верно.
Цитата Сообщение от GoodWeather Посмотреть сообщение
Как вообще Appearance умудряется это портить, не представляю, капец просто)))
Задаюсь тем же вопросом постоянно) Как, зачем и почему))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2019, 18:26

Проблема с кодировкой текстового файла в делфи7
Есть процедура поиска слова в файле. Если на вход подаются цифры то он их находит в файле а слова - не находит. Скорее всего проблема с...

ПроБлемА с кодировкой русских символов, ASCII код
Привет народ. Решил для развития кругозора, разобраться с темой шифрации текста. В примитивном варианте, то есть шифровать введенный текст...

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

Проблема с OpenDialog!!!!
С помощью OpenDialog у меня происходит открытие документа. Вот так: if (OpenDialog1-&gt;Execute()) { ...

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


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

Или воспользуйтесь поиском по форуму:
50
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru