Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TStringList и OEM-866 / 6 сообщений из 6, страница 1 из 1
05.10.2017, 08:37:20
    #39531214
Volik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TStringList и OEM-866
Добрый день. Столкнулся с проблемой разбивки строки по разделителю, используя TStringList.
У меня есть файл с текстом в кодировке OEM-866.
В ней же я гружу текст:
Код: sql
1.
list1.LoadFromFile(FileFolder + fileName1, TEncoding.GetEncoding('866'));


В отладчике текст отображается корректно.
Затем создаю еще 1 TStringList, пишу
Код: sql
1.
2.
list.DelimitedText := list1[0];
list.Delimiter := '╫'; // Такой разделитель


В итоге list.Count = 1, хотя в строке у меня разделителей несколько штук.
В чем проблема может быть? Может в том, что код разделителя в кодировке OEM-866 = 215, а в UTF-8 (модуль в такой кодировке) = 9579?
Тогда как правильно указать значение св-ва list.Delimiter?
...
Рейтинг: 0 / 0
05.10.2017, 08:55:05
    #39531220
Dunkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TStringList и OEM-866
Volik
Код: sql
1.
list1.LoadFromFile(FileFolder + fileName1, TEncoding.GetEncoding('866'));


Утечка. GetEncoding для всех нестандартных кодировок создаёт новый объект.
После загрузки текст в списке в кодировке Unicode (для Delphi). Вот в этой кодировке и нужен разделитель.
...
Рейтинг: 0 / 0
05.10.2017, 09:23:22
    #39531233
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TStringList и OEM-866
'╫' - это ты на каком языке сейчас ругнулся?
...
Рейтинг: 0 / 0
05.10.2017, 09:38:48
    #39531239
Volik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TStringList и OEM-866
Короче, хз почему так, но вначале инициализировав Delimiter, а уже потом DelimitedText, все заработало!
...
Рейтинг: 0 / 0
05.10.2017, 11:46:39
    #39531350
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TStringList и OEM-866
VolikКороче, хз почему так, но вначале инициализировав Delimiter, а уже потом DelimitedText, все заработало!

Потому что DelimitedText использует свойство Delimiter, справку надо читать.
...
Рейтинг: 0 / 0
05.10.2017, 12:42:39
    #39531410
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TStringList и OEM-866
VolikДобрый день. Столкнулся с проблемой разбивки строки по разделителю, используя TStringList.
У меня есть файл с текстом в кодировке OEM-866.
В ней же я гружу текст:
Код: sql
1.
list1.LoadFromFile(FileFolder + fileName1, TEncoding.GetEncoding('866'));


В отладчике текст отображается корректно.
Затем создаю еще 1 TStringList, пишу
Код: sql
1.
2.
list.DelimitedText := list1[0];
list.Delimiter := '╫'; // Такой разделитель


В итоге list.Count = 1, хотя в строке у меня разделителей несколько штук.
В чем проблема может быть? Может в том, что код разделителя в кодировке OEM-866 = 215, а в UTF-8 (модуль в такой кодировке) = 9579?
Тогда как правильно указать значение св-ва list.Delimiter?
Ты сперва Delimiter задай, а потом уже DelimitedText.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TStringList и OEM-866 / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]