|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.05.2017, 13:40 | #1 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Как же работать с этим TStream?
Здравствуйте!
Суть вот в чём. Есть строка в непонятной кодировке (когда-то пытался с этим разобраться, но до конца так и не дошёл, предпринял вторую попытку) Декодировал её через онлайн, сохранил оба варианта в текстовый файл, через тотал коммандер глянул шестнадцатеричный вид строки. Эксперимент показал, что в непонятной кодировке байты попарно переставлены местами, а строка берётся этими парами перепутанных байт. В результате размер нормальной строки равен двойному размеру кодированной. Сохранить в текстовый файл получилось через Код:
Решил таким путём сохранить в TStream, но как работать с ним не понимаю. В результате пока насобирал такой код: Код:
|
15.05.2017, 13:44 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
После записи перед чтением не установили позицию стрима в 0 и читаете в конце, а там естественно 0 символов.
|
15.05.2017, 13:45 | #3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Что за строка-то?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
15.05.2017, 14:01 | #4 | ||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
https://ru.wikipedia.org/wiki/%D0%9F...82%D0%BE%D0%B2 Цитата:
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
||
15.05.2017, 14:10 | #5 | ||
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
p51x Помогло. Не думал, что в этом случае надо всё равно на начало перемещать, а не только для Read...
Alex11223 строка Цитата:
Код:
Если в Код:
Код:
В принципе, в данном виде меня бы всё устраивало, но интересуют два вопроса: нормально ли такое преобразование (или можно как-то лучше) и как без потока понять: строка на входе нормальная или из иероглифов? Шестнадцатиричный код показывает, что первый символ FF, второй FE. Как-то по ним, видимо, но можно ли их проверить без потоков? Pavia в конец потом надо добавить? Код:
Цитата:
Последний раз редактировалось Ship_1; 15.05.2017 в 14:17. |
||
15.05.2017, 14:19 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Это BOM https://ru.wikipedia.org/wiki/%D0%9C...82%D0%BE%D0%B2
FFFE это Little Endian, FEFF — Big Endian. То есть видимо там UTF-16 LE. Скорее всего можно просто присвоить в WideString.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
15.05.2017, 14:35 | #7 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Код:
А как получить BOM строки TmpStr? Если просто TmpStr[1] - это же будет просто первый иероглиф, и, как понимаю, без этого BOM... P.S. Спасибо всем за ссылки, где можно почитать дополнительную информацию! |
15.05.2017, 14:50 | #8 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Ship_1
Для динамических массивов не нужно. В дельфи для них работает автоматическая сборка мусора. По выходу из функции массив row очистится и удалится - самостоятельно, без вашей помощи. Да про них. Забыл спросить какая версия Delphi у вас? Если XE то там Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 15.05.2017 в 14:52. |
15.05.2017, 15:00 | #9 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Pavia Да, в данном случае XE. Но, если не сложно, хотелось бы знать как и для Delphi7 это можно сделать. Сейчас использовал XE потому что в D7, как понимаю, нет TEncoding.
И у меня текст не из файла берётся... Код:
|
15.05.2017, 16:43 | #10 | |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Pavia, попробовал с массивом. Но компилятор выдал ошибку:
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
loadfromfile(TStream as file) как-то так | IvaniuS | Общие вопросы Delphi | 4 | 22.07.2013 20:58 |
Popupmenu как работать с этим? | Человек Панда | Общие вопросы Delphi | 4 | 30.06.2011 20:41 |
Как работать с tStream для отправки пост запроса? | Айдар | Работа с сетью в Delphi | 2 | 04.01.2011 20:34 |
С++. Что и как можно внести в DLL и как потом с этим работать? | dampirik | Помощь студентам | 5 | 21.09.2009 08:19 |
Как передать http.get в Tstream?(indy) | TwiX | Работа с сетью в Delphi | 3 | 09.08.2009 20:31 |