Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2017, 08:33   #1
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию TStringList и OEM-866

Добрый день. Столкнулся с проблемой разбивки строки по разделителю, используя TStringList.
У меня есть файл с текстом в кодировке OEM-866.
В ней же я гружу текст:
Код:
list1.LoadFromFile(FileFolder + fileName1, TEncoding.GetEncoding('866'));
В отладчике текст отображается корректно.
Затем создаю еще 1 TStringList, пишу
Код:
      list.DelimitedText := list1[0];
      list.Delimiter := '╫'; // Такой разделитель
В итоге list.Count = 1, хотя в строке у меня разделителей несколько штук.
В чем проблема может быть? Может в том, что код разделителя в кодировке OEM-866 = 215, а в UTF-8 (модуль в такой кодировке) = 9579?
Тогда как правильно указать значение св-ва list.Delimiter?

Последний раз редактировалось m9yt; 05.10.2017 в 08:40.
m9yt вне форума Ответить с цитированием
Старый 05.10.2017, 09:31   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте указать непосредственно код:
Код:
list.Delimiter := #215; 
list.DelimitedText := list1[0];
если это не поможет, то выведите куда-нибудь (например в мемо, коды символов из нужной строки, посмотрите, какой код имеет ваш разделитель после преобразования кодировки (ведь TEncoding.GetEncoding('866') осуществляет конвертацию из кодировки 866 в нативную.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.10.2017, 09:40   #3
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию

Короче, хз почему так, но вначале инициализировав Delimiter, а уже потом DelimitedText, все заработало!
m9yt вне форума Ответить с цитированием
Старый 05.10.2017, 09:47   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от m9yt Посмотреть сообщение
Короче, хз почему так
ха. так это же очевидно. разбиение происходит в тот момент, когда Вы присваиваете DelimitedText
менять символ ПОСЛЕ присвоения никакого влияния на разбиение уже не оказывает!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что такое OEM-версия? Dux Свободное общение 3 10.10.2014 20:22
OEM версия винды Vania96 Операционные системы общие вопросы 29 11.11.2013 17:03
Retail или OEM. И активатор windows 7 technik_312 Windows 5 15.06.2010 00:04
AutoCAD 2008 Download OEM OemSOFT Софт 0 23.06.2009 21:07
Unicode в DOS (OEM) FaTaL Общие вопросы Delphi 5 29.05.2009 14:49