И снова строки и кодировки в виндовсе

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: И снова строки и кодировки в виндовсе

Сообщение Alex2013 » 30.05.2023 01:15:26

Самый сок в том, что я до сих пор ни с чем подобным не сталкивался хотя как уже писал со строками работаю довольно плотно и разных кодировок куча . Надо будет проверить! ( хотя на UTF8 всех посадили конкретно это факт так может действительно стоит "возглавить то что нельзя предотвратить " и перевести все в UTF8(16) ? Тем более что с UTF8 заметная часть "старого-кода" работает как "ни в чем небывало" если юзет для работы(например для поиска тегов для парсинга ) первые 128 символов таблицы.(Хотя сами строки могут содержать хоть русский хоть "клингонский" ) )

Зы
Кстати непонятно зачем может понадобится писать +#171 вместо +'«' (или +"л") ? ( Нужна строка "не UTF8" ? Взял и перекодировал "ручками". А если нужна не строка а именно код нужно обращаться как массиву байт а "и рыбу съесть и санки сесть" не получится (в крайнем случае (ИМХО) можно "костыль" применить написав что-то вроде S:=S+#0; S[Length( S)]:=#171; ))
Зы Зы
Рассуждать о том что "все ухудшается" типичное старческое брюзжание.
Разумеется часть вещей "была лучше" в "черном досе"( или "старом юниксе" ) но если так рассуждать ничего в принципе никогда ничего "лучше" не было. ( Да что-то процессе "общего развития" почти всегда теряется - но это точно не повод оказаться от развития) И хотя я тоже считаю "панк" любого пошиба начинается когда люди в поисках "лучшего" начитаю копаться в хламе в место покупки чего нибудь нового , но суть в том что пока "новинка" по большему количеству параметров хотя-бы не хуже "старья" это точно означает, что прогресс продолжается!( бо амортизация все равно, рано или поздно, утопит все старье в "культурном слое", так что даже "обновление без улучшений" уже благо )
Последний раз редактировалось Alex2013 30.05.2023 11:42:17, всего редактировалось 6 раз(а).
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: И снова строки и кодировки в виндовсе

Сообщение Сквозняк » 30.05.2023 02:10:41

zub писал(а):Критика в таком ключе допустима если если умеешь или знаешь как лучше.


Так знаю же, а уметь - а что там уметь, не ломай один тип строки и всего делов. Тем более, что тот тип строки и был изначально предназначен быть неломаемым. Также можно ещё и выделить строкам флаг запрета перекодирования. Но так же неинтересно, надо всё пространство засеять изменениями, как грибы спорами :mrgreen:

zub писал(а):Судя по FPC_HAS_CPSTRING компилятор можно собрать без поддержки кодировок, но не интересовался в эту сторону


Так в том-то и прикол, что можно было бы сидеть на старой версии компилятора и в винде, но уже в семёрке тоже звиздец с кодировками и нужна фиговина для не кракозябл в консоли, а она появляется в 3 версии компилятора. Ну и проблема перекодирования команд там есть, она тоже гонит на новую версию. Так понимаю, что с тем ключом решение тех проблем исчезнет и лазарусу тоже поплохеет.

Добавлено спустя 26 минут 14 секунд:
Alex2013 писал(а):Кстати непонятно зачем может понадобится писать +#171 вместо +'«' (или +"л") ?


А вот так никогда не делал?
Код: Выделить всё
For A3:=1 to 10 do write(B2[A3],' ');
Writeln(#13#10,B5);

Или вот так:
Код: Выделить всё
A5:='У Лукоморья:'+#13#10+#13#10+'дуб зелёный,'+#13#10+'3 кинокамеры импортные'+#13#10+'2 портсигара отечественные...'+#13#10+'Всё, всё украли...'+#13#10+'....................................';
ShowMessage(A5);

Alex2013 писал(а):( Нужна строка "не UTF8" ? Взял и перекодировал "ручками" .

Задолбаешься каждый раз кодировать и перекодировать, цифры в коде меньше места жрут и зависимостей тянут.
Код: Выделить всё
не получится (в крайнем случае (ИМХО)

В линуксовом компиляторе 2.64 это всё прекрасно получается - https://sourceforge.net/projects/redaktor/ В ansistring можно просто бинарные файлы грузить и потом их редактировать строковыми функциями. Но кому-то помешало, что в паскале есть то, чему сишники и плюсовики только завидовать могут. А значит нужно сломать, чтоб не было.
Сквозняк
энтузиаст
 
Сообщения: 1109
Зарегистрирован: 29.06.2006 22:08:32

Re: И снова строки и кодировки в виндовсе

Сообщение Alex2013 » 30.05.2023 03:06:21

Вообщем спасибо что обратил внимание ! Хотя (ИМХО) это просто повод быть внимательным . ( +#13#10 точно работают потому что это входит в первые 128 символов, а UTF8 код начинается с $EF, $BB и $BF ) (хотя видимо с буквой "я" в альт-кодировке нужно быть аккуратным )

Добавлено спустя 9 минут 9 секунд:
Сквозняк писал(а):А значит нужно сломать, чтоб не было.

Возможно это очередная попытка избавиться от "заимствований кода" из дельфи(или еще откуда ) так сработала.
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: И снова строки и кодировки в виндовсе

Сообщение Сквозняк » 30.05.2023 07:37:40

Alex2013 писал(а):Возможно это очередная попытка избавиться от "заимствований кода" из дельфи(или еще откуда ) так сработала.


Похоже наоборот, копипастится дельфийская логика использования кодировок. Глупости оттуда копипастятся - https://docwiki.embarcadero.com/Libraries/Sydney/en/System.RawByteString
Delphi type RawByteString = AnsiString;

C++ typedef AnsiStringT<65535> RawByteString;


В таком случае самый простой способ сделать нормально, это использовать не занятый номер кодировки для ANSISTRING, которая не будет автоматически перекодироваться и автоматически присваивать чужие кодировки, присваивать в неё данные как они есть, фактически сделать ещё один тип rawbytestring, но уже настоящий.

Для строк, в которые грузятся пути с неанглийскими буквами, в 3 компиляторе заработал тип
Код: Выделить всё
TYPE
STROKI2 = type ANSISTRING(65001);//ЭТО ТИПА УТФ-8


Потому что процедуры всё равно в этом формате данные в строки передают. Надеюсь, что номер 65001 будет работать без фокусов.
Сквозняк
энтузиаст
 
Сообщения: 1109
Зарегистрирован: 29.06.2006 22:08:32

Re: И снова строки и кодировки в виндовсе

Сообщение Снег Север » 30.05.2023 08:19:21

zub писал(а):А паскаль, это ассемблер со спецобработкой. Ага. Некоторые люди ближнему будут и стрихнин нахваливать и предлагать употребить, если его официально объявят полезным и неоюбходимым продуктом.

Стрихнин, если вы не в курсе, лет сто успешно употребляли как стимулятор. Вы хотите от системы странного - вот и пользуйтесь для странного специально предназначенным.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: И снова строки и кодировки в виндовсе

Сообщение Alex2013 » 30.05.2023 11:36:06

Сквозняк писал(а):Похоже наоборот, копипастится дельфийская логика использования кодировок. Глупости оттуда копипастятся -

Блин ... (нормальные слова на этом кончаются )
Сквозняк писал(а):Для строк, в которые грузятся пути с неанглийскими буквами, в 3 компиляторе заработал тип
КОД: ВЫДЕЛИТЬ ВСЁ
TYPE
STROKI2 = type ANSISTRING(65001);//ЭТО ТИПА УТФ-8


Интересно нужно проверить!

Снег Север писал(а): Вы хотите от системы странного - вот и пользуйтесь для странного специально предназначенным.

ИМХО В поиске альтернативы нет ничего странного . Важно только помнить золотое правило "Работает - нетрож !" ( как минимум пока нет полностью адекватной замены )
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: И снова строки и кодировки в виндовсе

Сообщение Сквозняк » 30.05.2023 17:37:02

Снег Север писал(а):Стрихнин, если вы не в курсе, лет сто успешно употребляли как стимулятор.

А листья коки использовали для изготовления чая, табака, кока-колы, нюхательного стимулятора, и продавался он вполне легально. Более того, те "специи", которые возили кораблями и стоили очень дорого, это наркота была. А сейчас из-за употребляющих такие стимуляторы даже марганцовки или кислоты для пайки нормально не купишь. Как ещё воду пить не запретили - она тоже прекурсор.

Снег Север писал(а): Вы хотите от системы странного - вот и пользуйтесь для странного специально предназначенным.


Я хочу писать программы всякие, а не только разрешённые дураками и употребителями "стимуляторов". А они вредят и их коллеги вреду аплодируют.
Сквозняк
энтузиаст
 
Сообщения: 1109
Зарегистрирован: 29.06.2006 22:08:32

Re: И снова строки и кодировки в виндовсе

Сообщение Alex2013 » 30.05.2023 20:08:38

Сквозняк писал(а):А листья коки использовали для изготовления чая, табака, кока-колы, нюхательного стимулятора, и продавался он вполне легально.

Кокаин(причем вполне очищенный в "кристаллической форме" ) был лекарством от кашля, прото-кола средством от понса, а кофе изначально был кормовой добавкой для коров. и т.д. :wink:
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: И снова строки и кодировки в виндовсе

Сообщение Сквозняк » 30.05.2023 20:24:34

Alex2013 писал(а):Кокаин(причем вполне очищенный в "кристаллической форме" ) был лекарством от кашля


Героин, это торговая марка "чудо витаминов" фармацефтической компании Баер.
Изображение
Ещё радиоактивные витамины делали и кто-то их пережрал...
Компании с давних времён говно людям впаривают, потому не нужно ждать, что все нововведения в паскале хорошие.
Сквозняк
энтузиаст
 
Сообщения: 1109
Зарегистрирован: 29.06.2006 22:08:32

Re: И снова строки и кодировки в виндовсе

Сообщение Alex2013 » 31.05.2023 23:41:16

Туше ! :D
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Пред.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 18

Рейтинг@Mail.ru
cron