Последняя версия DataExpress 3 beta от 15 сентября 2020 года.

Изображение Скачать | Изображение Что нового?



Объявление:

Если вам понравилась программа и вы ее интенсивно используете - замолвите словечко о ней на вашем сайте (блоге, форуме, твитере, краской на подъезде, ютуб-канале и т.д.) с активной (по-возможности) ссылкой на сайт программы/форум. Тем самым вы можете внести небольшой вклад в seo-карму проекта в виде входящих ссылок.
Спасибо! Администрация :)


>> Обсудить <<

Палиндром

Все вопросы, связанные с работой в дизайнере.
Аватара пользователя
Runenkov
Интересующийся
Сообщения: 107
Зарегистрирован: 21 сен 2016, 21:15
Благодарил (а): 11 раз
Поблагодарили: 8 раз

Палиндром

Сообщение Runenkov » 29 июн 2020, 15:30

Доброго дня!

Помогите разобраться с кодировками! Что-то не так пошло...

Накропал маленькое расширение, с функцией создания палиндрома из строки.
На латинице все хорошо, а русские буквы ведут себя странно..

Код: Выделить всё

function Palindrome(S: String): String;
var I,N: Integer;
begin
  N := Length(S);
  for I :=  N-1 downto 1 do
    begin;
      S := S + StrGet(S,I);
    end;
  Result := S;
end;


Где-то в StrGet что-то неправильно...

Пример:
ПАЛИНДРОМ.zip
(46.56 КБ) 54 скачивания

Аватара пользователя
admin
Разработчик
Сообщения: 5176
Зарегистрирован: 14 мар 2016, 11:32
Откуда: Ленинградская
Благодарил (а): 41 раз
Поблагодарили: 335 раз

Палиндром

Сообщение admin » 29 июн 2020, 17:00

Используйте utf8copy вместо strget, русские буквы занимают больше одного байта.

Аватара пользователя
Runenkov
Интересующийся
Сообщения: 107
Зарегистрирован: 21 сен 2016, 21:15
Благодарил (а): 11 раз
Поблагодарили: 8 раз

Палиндром

Сообщение Runenkov » 30 июн 2020, 15:54

Спасибо, получилось!

Правда, замечено другое:
в русском тексте последняя буква удваиваевается, в латинском -- нет
арозаупаланналапуазора
arozaupalanalapuazora

впрочем, это для развлечения и строку все равно корректировать потом...

Аватара пользователя
Develop-Soft
Сообщения: 1756
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 122 раза
Поблагодарили: 474 раза
Контактная информация:

Палиндром

Сообщение Develop-Soft » 02 июл 2020, 16:44

Код: Выделить всё

function Palindrome(S: WideString): String;
var I,N: Integer;
begin
  N := Utf8Length(S);
  for I :=  N-1 downto 1 do
    begin;
      S := S + wStrGet(S,I);
    end;
  Result := S;
end;


Вернуться в «Дизайнер»