И снова строки и кодировки в виндовсе
Модератор: Модераторы
Самый сок в том, что я до сих пор ни с чем подобным не сталкивался хотя как уже писал со строками работаю довольно плотно и разных кодировок куча . Надо будет проверить! ( хотя на UTF8 всех посадили конкретно это факт так может действительно стоит "возглавить то что нельзя предотвратить " и перевести все в UTF8(16) ? Тем более что с UTF8 заметная часть "старого-кода" работает как "ни в чем небывало" если юзет для работы(например для поиска тегов для парсинга ) первые 128 символов таблицы.(Хотя сами строки могут содержать хоть русский хоть "клингонский" ) )
Зы
Кстати непонятно зачем может понадобится писать +#171 вместо +'«' (или +"л") ? ( Нужна строка "не UTF8" ? Взял и перекодировал "ручками". А если нужна не строка а именно код нужно обращаться как массиву байт а "и рыбу съесть и санки сесть" не получится (в крайнем случае (ИМХО) можно "костыль" применить написав что-то вроде S:=S+#0; S[Length( S)]:=#171; ))
Зы Зы
Рассуждать о том что "все ухудшается" типичное старческое брюзжание.
Разумеется часть вещей "была лучше" в "черном досе"( или "старом юниксе" ) но если так рассуждать ничего в принципе никогда ничего "лучше" не было. ( Да что-то процессе "общего развития" почти всегда теряется - но это точно не повод оказаться от развития) И хотя я тоже считаю "панк" любого пошиба начинается когда люди в поисках "лучшего" начитаю копаться в хламе в место покупки чего нибудь нового , но суть в том что пока "новинка" по большему количеству параметров хотя-бы не хуже "старья" это точно означает, что прогресс продолжается!( бо амортизация все равно, рано или поздно, утопит все старье в "культурном слое", так что даже "обновление без улучшений" уже благо )
Зы
Кстати непонятно зачем может понадобится писать +#171 вместо +'«' (или +"л") ? ( Нужна строка "не UTF8" ? Взял и перекодировал "ручками". А если нужна не строка а именно код нужно обращаться как массиву байт а "и рыбу съесть и санки сесть" не получится (в крайнем случае (ИМХО) можно "костыль" применить написав что-то вроде S:=S+#0; S[Length( S)]:=#171; ))
Зы Зы
Рассуждать о том что "все ухудшается" типичное старческое брюзжание.
Разумеется часть вещей "была лучше" в "черном досе"( или "старом юниксе" ) но если так рассуждать ничего в принципе никогда ничего "лучше" не было. ( Да что-то процессе "общего развития" почти всегда теряется - но это точно не повод оказаться от развития) И хотя я тоже считаю "панк" любого пошиба начинается когда люди в поисках "лучшего" начитаю копаться в хламе в место покупки чего нибудь нового , но суть в том что пока "новинка" по большему количеству параметров хотя-бы не хуже "старья" это точно означает, что прогресс продолжается!( бо амортизация все равно, рано или поздно, утопит все старье в "культурном слое", так что даже "обновление без улучшений" уже благо )
Последний раз редактировалось Alex2013 30.05.2023 10:42:17, всего редактировалось 6 раз.
Так знаю же, а уметь - а что там уметь, не ломай один тип строки и всего делов. Тем более, что тот тип строки и был изначально предназначен быть неломаемым. Также можно ещё и выделить строкам флаг запрета перекодирования. Но так же неинтересно, надо всё пространство засеять изменениями, как грибы спорамиzub писал(а):Критика в таком ключе допустима если если умеешь или знаешь как лучше.
Так в том-то и прикол, что можно было бы сидеть на старой версии компилятора и в винде, но уже в семёрке тоже звиздец с кодировками и нужна фиговина для не кракозябл в консоли, а она появляется в 3 версии компилятора. Ну и проблема перекодирования команд там есть, она тоже гонит на новую версию. Так понимаю, что с тем ключом решение тех проблем исчезнет и лазарусу тоже поплохеет.zub писал(а):Судя по FPC_HAS_CPSTRING компилятор можно собрать без поддержки кодировок, но не интересовался в эту сторону
Добавлено спустя 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" ? Взял и перекодировал "ручками" .
Код: Выделить всё
не получится (в крайнем случае (ИМХО)Вообщем спасибо что обратил внимание ! Хотя (ИМХО) это просто повод быть внимательным . ( +#13#10 точно работают потому что это входит в первые 128 символов, а UTF8 код начинается с $EF, $BB и $BF ) (хотя видимо с буквой "я" в альт-кодировке нужно быть аккуратным )
Добавлено спустя 9 минут 9 секунд:
Добавлено спустя 9 минут 9 секунд:
Возможно это очередная попытка избавиться от "заимствований кода" из дельфи(или еще откуда ) так сработала.Сквозняк писал(а):А значит нужно сломать, чтоб не было.
Похоже наоборот, копипастится дельфийская логика использования кодировок. Глупости оттуда копипастятся - https://docwiki.embarcadero.com/Librari ... ByteStringAlex2013 писал(а): Возможно это очередная попытка избавиться от "заимствований кода" из дельфи(или еще откуда ) так сработала.
В таком случае самый простой способ сделать нормально, это использовать не занятый номер кодировки для ANSISTRING, которая не будет автоматически перекодироваться и автоматически присваивать чужие кодировки, присваивать в неё данные как они есть, фактически сделать ещё один тип rawbytestring, но уже настоящий.Delphi type RawByteString = AnsiString;
C++ typedef AnsiStringT<65535> RawByteString;
Для строк, в которые грузятся пути с неанглийскими буквами, в 3 компиляторе заработал тип
Код: Выделить всё
TYPE
STROKI2 = type ANSISTRING(65001);//ЭТО ТИПА УТФ-8
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Стрихнин, если вы не в курсе, лет сто успешно употребляли как стимулятор. Вы хотите от системы странного - вот и пользуйтесь для странного специально предназначенным.zub писал(а):А паскаль, это ассемблер со спецобработкой. Ага. Некоторые люди ближнему будут и стрихнин нахваливать и предлагать употребить, если его официально объявят полезным и неоюбходимым продуктом.
Блин ... (нормальные слова на этом кончаются )Сквозняк писал(а):Похоже наоборот, копипастится дельфийская логика использования кодировок. Глупости оттуда копипастятся -
Интересно нужно проверить!Сквозняк писал(а): Для строк, в которые грузятся пути с неанглийскими буквами, в 3 компиляторе заработал тип
КОД: ВЫДЕЛИТЬ ВСЁ
TYPE
STROKI2 = type ANSISTRING(65001);//ЭТО ТИПА УТФ-8
ИМХО В поиске альтернативы нет ничего странного . Важно только помнить золотое правило "Работает - нетрож !" ( как минимум пока нет полностью адекватной замены )Снег Север писал(а): Вы хотите от системы странного - вот и пользуйтесь для странного специально предназначенным.
А листья коки использовали для изготовления чая, табака, кока-колы, нюхательного стимулятора, и продавался он вполне легально. Более того, те "специи", которые возили кораблями и стоили очень дорого, это наркота была. А сейчас из-за употребляющих такие стимуляторы даже марганцовки или кислоты для пайки нормально не купишь. Как ещё воду пить не запретили - она тоже прекурсор.Снег Север писал(а):Стрихнин, если вы не в курсе, лет сто успешно употребляли как стимулятор.
Я хочу писать программы всякие, а не только разрешённые дураками и употребителями "стимуляторов". А они вредят и их коллеги вреду аплодируют.Снег Север писал(а): Вы хотите от системы странного - вот и пользуйтесь для странного специально предназначенным.
Кокаин(причем вполне очищенный в "кристаллической форме" ) был лекарством от кашля, прото-кола средством от понса, а кофе изначально был кормовой добавкой для коров. и т.д.Сквозняк писал(а):А листья коки использовали для изготовления чая, табака, кока-колы, нюхательного стимулятора, и продавался он вполне легально.
Героин, это торговая марка "чудо витаминов" фармацефтической компании Баер.Alex2013 писал(а):Кокаин(причем вполне очищенный в "кристаллической форме" ) был лекарством от кашля

Ещё радиоактивные витамины делали и кто-то их пережрал...
Компании с давних времён говно людям впаривают, потому не нужно ждать, что все нововведения в паскале хорошие.
