zub писал(а):Поддержка вполне полноценная.
судя по "никакой больше индексной адресации элементов строк" не вполне
Добавлено спустя 7 минут 56 секунд:
мда, и причин почему не компилируется указанный код, с определенными оптимизациями, нету
Модератор: Модераторы
zub писал(а):Поддержка вполне полноценная.
zub писал(а):А кто когда говорил что она будет? и вообще зачем она?
zub писал(а):Причин не будет только если сохранить исходник в ubf8bom, или прямо указать кодировку исходника, без этого они есть
zub писал(а):в том ключе в котором предпологаете вы (s[i]=итый_символ) ее небыло никогда
zub писал(а):Давайте какуюнить более жизненную задачу, требующую именно посимвольной адресации.
Str := '';
OfferBinding := StringReplace(OfferBinding, 'х', 'x', [rfReplaceAll, rfIgnoreCase]);
OfferBinding := StringReplace(OfferBinding, 'Х', 'x', [rfReplaceAll, rfIgnoreCase]);
OfferBinding := StringReplace(OfferBinding, 'X', 'x', [rfReplaceAll, rfIgnoreCase]);
for i := 0 to High(OfferBinding) do
if (OfferBinding[i] in ['0'..'9']) or (OfferBinding[i] in ['x', '/']) then Str := Str + OfferBinding[i];
смутно припоминаю что уже в 6 tp это было уже так.
zub писал(а):там небыло зоопарка кодировок исходников и целевых платформ, всё было в одной
zub писал(а):Т.е. есть строка...
sts писал(а):а тут не надо ничего говорить, раз она уже была ранее, значит она должна оставаться и впредь
zub писал(а):Я бы сказал по другому - причина компилироваться указанному коду только одна - он компилируется в делфи))
приведите пример когда это было не эквивалентно во времена однобайтовых\двухбайтовых строк
zub писал(а):Т.е. есть строка, есть разделители, есть нужный текст между разделителями...
zub писал(а): явлется осмысленным текстом
resident писал(а):Это серьезная причина, без Делфи Лазарус был бы наааааааафиг никому не нужен изначально.
program Project1;
//{$codepage utf8}//раскоментировать по усмотрению, тогда наверно даже в консольку вывод правильный будет, но и сама проблема отпадет - появится посимвольный доступ
uses sysutils;
const
byte2=192;//2 байта на символ
byte3=224;//3 байта на символ
byte4=240;//4 байта на символ
byte5=248;//5 байта на символ
byte6=252;//6 байта на символ
function StringCleanUp(s:string):string;
var len,code:integer;
procedure CountDigits;
var i:integer;
begin
i:=1;
len:=0;
while i<=length(s) do
begin
code:=ord(s[i]);
case code of
1..127:
begin
if code in [ord('0')..ord('9')] then
begin
inc(len);
if length(result)>=len then
result[len]:=chr(code);
end;
inc(i);
end;
else
if (code and byte2)=byte2 then
inc(i,2)
else if (code and byte3)=byte3 then
inc(i,3)
else if (code and byte4)=byte4 then
inc(i,4)
else if (code and byte5)=byte5 then
inc(i,5)
else if (code and byte6)=byte6 then
inc(i,6)
else
inc(i);//значит чето пошло не так
end;
end;
end;
begin
CountDigits;
if len>0 then
begin
setlength(result,len);
CountDigits;
end;
end;
procedure DebugCleanup(s:string);
begin
writeln(format('s=''%s'';result=''%s''',[s,StringCleanUp(s)]));
end;
begin
DebugCleanup('s1 ф00');
DebugCleanup('2 わ た0 0');
DebugCleanup('3ф0 0わた');
readln;
end.
Это серьезная причина, без Делфи Лазарус был бы наааааааафиг никому не нужен изначально.
Допустим, там я увижу string.
Что и где я должен здесь преобразовать, чтобы она заработала?
convertEncoding(StringReplace('эЭяЯюЮ', 'я', 'ы', [rfReplaceAll, rfIgnoreCase]), guessEncoding(s), encodingAnsi);
я этот гРейд часто на форумах видел... "человек с улицы" не будет браться за что то без необходимости. Если надо - разберется или "спрыгнет" туда куда его тянет. За сим есть право выбора.Разве такой даунгрейд возможен?
sts писал(а):zub писал(а):там небыло зоопарка кодировок исходников и целевых платформ, всё было в одной
и каким боком это считается аргументом против "s[i]=итый_символ" ?
Добавлено спустя 3 минуты 37 секунд:zub писал(а):Т.е. есть строка...
это тоже никак не относится
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9