powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Из двоичного буфера в StringList
15 сообщений из 15, страница 1 из 1
Из двоичного буфера в StringList
    #116778
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть буфер, созданный с помощью AllocMem. Я знаю, что там однобайтные строки, разделенные только #10. Как бы его покрасивей и побыстрей в StringList запихать?
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #116779
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, понятно, что его можно сохранить в файл и прочитать LoadFromFile. А без лишних операций с диском?
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #116787
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LoadFromStream жеж.
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #116828
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Просто Трёп  14.08.2022, 20:52
[игнорируется]
LoadFromStream жеж.
Вышло через LoadFromStream?

Если точно известно, что однобайтная строка, то можно как-нибудь типа такого:
Код: Delphi
1.
2.
3.
4.
5.
var s: AnsiString;

SetLength(s, SizeOf(Buf));
Move(Buf, s[1], SizeOf(Buf));
StringList.Text := s;
...
Рейтинг: 2 / 0
Из двоичного буфера в StringList
    #116847
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62  14.08.2022, 22:44
[игнорируется]
Просто Трёп  14.08.2022, 20:52
[игнорируется]
LoadFromStream жеж.
Вышло через LoadFromStream?

Если точно известно, что однобайтная строка, то можно как-нибудь типа такого:
Код: Delphi
1.
2.
3.
4.
5.
var s: AnsiString;

SetLength(s, SizeOf(Buf));
Move(Buf, s[1], SizeOf(Buf));
StringList.Text := s;
Ага, вышло. Когда вышло, подумал, что можно было замутить что-то со StrPas. Чтоб стрим не создавать.
Все-таки Дельфи - классный. Сишарп, как мне кажется, столько свободы не дает.
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #116849
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62  14.08.2022, 22:44
[игнорируется]
Просто Трёп  14.08.2022, 20:52
[игнорируется]
LoadFromStream жеж.
Вышло через LoadFromStream?

Если точно известно, что однобайтная строка, то можно как-нибудь типа такого:
Код: Delphi
1.
2.
3.
4.
5.
var s: AnsiString;

SetLength(s, SizeOf(Buf));
Move(Buf, s[1], SizeOf(Buf));
StringList.Text := s;
А, кстати, что будет с кодировкой у этого листа? Насколько я понял, кодировка СтрингЛиста может стать однобайтной только при использовании LoadFromFile и LoadFromStream, если она в файле или стриме однобайтная. А во всех остальных случаях будет юникод.
Вообще, как можно было не сделать однобайтный стринглист? Куча же задач, где юникод не нужен.
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #116854
Сквозняк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тебе так сильно всрался этот СтрингЛист? Сделай массив строк Rawbytestring и храни там что угодно без опасения что лазарус будет без твоего ведома содержимое строк перекодировать.
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #116859
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сквозняк  14.08.2022, 23:41
[игнорируется]
А тебе так сильно всрался этот СтрингЛист? Сделай массив строк Rawbytestring и храни там что угодно без опасения что лазарус будет без твоего ведома содержимое строк перекодировать.
Забыл указать, Delphi XE3.
СтрингЛист удобный.
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #116863
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  14.08.2022, 23:32
[игнорируется]
А, кстати, что будет с кодировкой у этого листа?
Implicit string cast from 'AnsiString' to 'string'.
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #116869
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Просто Трёп  15.08.2022, 00:00
[игнорируется]
Просто Трёп  14.08.2022, 23:32
[игнорируется]
А, кстати, что будет с кодировкой у этого листа?
Implicit string cast from 'AnsiString' to 'string'.
Да,
Код: Delphi
1.
StringList.Text := s;
вот тут преобразует в unicode неявно, т.к. левая часть - юникодная.
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #116872
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Просто Трёп  14.08.2022, 23:32
[игнорируется]
s62  14.08.2022, 22:44
[игнорируется]
Просто Трёп  14.08.2022, 20:52
[игнорируется]
LoadFromStream жеж.
Вышло через LoadFromStream?

Если точно известно, что однобайтная строка, то можно как-нибудь типа такого:
Код: Delphi
1.
2.
3.
4.
5.
var s: AnsiString;

SetLength(s, SizeOf(Buf));
Move(Buf, s[1], SizeOf(Buf));
StringList.Text := s;
А, кстати, что будет с кодировкой у этого листа? Насколько я понял, кодировка СтрингЛиста может стать однобайтной только при использовании LoadFromFile и LoadFromStream, если она в файле или стриме однобайтная. А во всех остальных случаях будет юникод.
Вообще, как можно было не сделать однобайтный стринглист? Куча же задач, где юникод не нужен.
Если я правильно понимаю, то в самом TStringList строки двухбайтовые, юникодные. Но он может загрузить содержимое из файла с однобайтными строками и тогда запомнит эту кодировку в свойстве Encoding и при сохранении в файл сохранит в этой же кодировке, если не указать кодировку явно.
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #116874
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62  15.08.2022, 00:21
[игнорируется]
Просто Трёп  14.08.2022, 23:32
[игнорируется]
s62  14.08.2022, 22:44
[игнорируется]
Просто Трёп  14.08.2022, 20:52
[игнорируется]
LoadFromStream жеж.
Вышло через LoadFromStream?

Если точно известно, что однобайтная строка, то можно как-нибудь типа такого:
Код: Delphi
1.
2.
3.
4.
5.
var s: AnsiString;

SetLength(s, SizeOf(Buf));
Move(Buf, s[1], SizeOf(Buf));
StringList.Text := s;
А, кстати, что будет с кодировкой у этого листа? Насколько я понял, кодировка СтрингЛиста может стать однобайтной только при использовании LoadFromFile и LoadFromStream, если она в файле или стриме однобайтная. А во всех остальных случаях будет юникод.
Вообще, как можно было не сделать однобайтный стринглист? Куча же задач, где юникод не нужен.
Если я правильно понимаю, то в самом TStringList строки двухбайтовые, юникодные. Но он может загрузить содержимое из файла с однобайтными строками и тогда запомнит эту кодировку в свойстве Encoding и при сохранении в файл сохранит в этой же кодировке, если не указать кодировку явно.
А, понятно. Для SaveToFile.
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #117454
Сквозняк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62  15.08.2022, 00:21
[игнорируется]
Просто Трёп  14.08.2022, 23:32
[игнорируется]
s62  14.08.2022, 22:44
[игнорируется]
Просто Трёп  14.08.2022, 20:52
[игнорируется]
LoadFromStream жеж.
Вышло через LoadFromStream?

Если точно известно, что однобайтная строка, то можно как-нибудь типа такого:
Код: Delphi
1.
2.
3.
4.
5.
var s: AnsiString;

SetLength(s, SizeOf(Buf));
Move(Buf, s[1], SizeOf(Buf));
StringList.Text := s;
А, кстати, что будет с кодировкой у этого листа? Насколько я понял, кодировка СтрингЛиста может стать однобайтной только при использовании LoadFromFile и LoadFromStream, если она в файле или стриме однобайтная. А во всех остальных случаях будет юникод.
Вообще, как можно было не сделать однобайтный стринглист? Куча же задач, где юникод не нужен.
Если я правильно понимаю, то в самом TStringList строки двухбайтовые, юникодные. Но он может загрузить содержимое из файла с однобайтными строками и тогда запомнит эту кодировку в свойстве Encoding и при сохранении в файл сохранит в этой же кодировке, если не указать кодировку явно.
Тут есть проблема если в строках есть то, что глупые перекодировщики не смогут перекодировать и заменят вопросительными знаками или прочим неремонтируемым мусором. Вот потому параллельно с классами какие-то данные нужно хранить в равбитестрингах - у них кодировка отсутствует, а потому система не знает как их содержимое правильно портить.
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #117475
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сквозняк  15.08.2022, 19:35
[игнорируется]
s62  15.08.2022, 00:21
[игнорируется]
Просто Трёп  14.08.2022, 23:32
[игнорируется]
s62  14.08.2022, 22:44
[игнорируется]
Просто Трёп  14.08.2022, 20:52
[игнорируется]
...
Вышло через LoadFromStream?

Если точно известно, что однобайтная строка, то можно как-нибудь типа такого:
Код: Delphi
1.
2.
3.
4.
5.
var s: AnsiString;

SetLength(s, SizeOf(Buf));
Move(Buf, s[1], SizeOf(Buf));
StringList.Text := s;
А, кстати, что будет с кодировкой у этого листа? Насколько я понял, кодировка СтрингЛиста может стать однобайтной только при использовании LoadFromFile и LoadFromStream, если она в файле или стриме однобайтная. А во всех остальных случаях будет юникод.
Вообще, как можно было не сделать однобайтный стринглист? Куча же задач, где юникод не нужен.
Если я правильно понимаю, то в самом TStringList строки двухбайтовые, юникодные. Но он может загрузить содержимое из файла с однобайтными строками и тогда запомнит эту кодировку в свойстве Encoding и при сохранении в файл сохранит в этой же кодировке, если не указать кодировку явно.
Тут есть проблема если в строках есть то, что глупые перекодировщики не смогут перекодировать и заменят вопросительными знаками или прочим неремонтируемым мусором. Вот потому параллельно с классами какие-то данные нужно хранить в равбитестрингах - у них кодировка отсутствует, а потому система не знает как их содержимое правильно портить.
Ну да. Это повод для большого холивара. Вот, например, разраб HWiNFO пишет в логи однобайтные строки ASCII и использует код B0 (символ градуса в большинстве шрифтов °). Как можно догадаться, что это символ градуса? В шрифте Terminal это другой символ. То есть, человек легко определит проблему по контексту, скажет: "Ага, надо вот эту кодировку использовать". А программно как? И те, и другие строки однобайтные.
...
Рейтинг: 0 / 0
Из двоичного буфера в StringList
    #118279
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
нефиг в логах использовать хрен знает что
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Из двоичного буфера в StringList
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (2): Анонимы (1), Bing Bot 5 мин.
Пользователи онлайн (36): Анонимы (21), Брюквенные годы, prostozevs, Yandex Bot, Три нитки 1 мин., megabyte 1 мин., Vaska Balboa 3 мин., Bing Bot 4 мин., Google Bot 6 мин., pashtetos1 6 мин., serg_tmb 6 мин., s62 7 мин., Кусь 7 мин., Неуловимый Джо 7 мин., Пошелярция 8 мин., anonymous 8 мин.
x
x
Закрыть


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