Поиском нашёл подобные обсуждения, но там обсуждалось, как использовать строку ДЛИННЕЕ 255 символов. У меня же несколько другая проблема.
Строка МЕНЬШЕ, чем 255 символов (240 с учётом пробелов). Но при компиляции всё равно получаю "Error: Constant strings can't be longer than 255 chars".
Открыл Gedit, скопировал туда строку, смотрю статистику. Символов (с пробелами) - 240. Но количество байт - почему-то 443.
Попробовал отрезать часть текста, чтобы было 254 байта. Получилось, всё компилится. Но теперь реально в строке умещается лишь 138 символов.
Каждый символ (надпись русская), похоже, занимает 2 байта... Подозреваю, что дело в кодировке, но как это исправить? Помогите, если кто знает.
Версия Lazarus - 0.9.30
ОС - Linux Lubuntu 11.04
P.S. В win xp в Delphi такой пробелемы не наблюдалось...
Что делать с "can't be longer than 255 chars"?
Модератор: Модераторы
UTF8 , мой юный падаван
Покажи пример кода
Добавлено спустя 4 минуты 25 секунд:
надо использовать не ansistring , a utf8string
кроме того кажется есть отдельные операторы считающие длину строки для utf8 и для ansi
Покажи пример кода
Добавлено спустя 4 минуты 25 секунд:
надо использовать не ansistring , a utf8string
кроме того кажется есть отдельные операторы считающие длину строки для utf8 и для ansi
Код примрно такой:
То, что проблема с кодировкой, я понимаю. Не понимаю только, как её лечить...
Код: Выделить всё
<...>
type
QST = Record
Qt: string;
...
... ... ...
End;
<...>
var QB: Array [1..Max] of QST;
<...>
QB[8].Qt:='бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-'; {т.е. 240 символов, 420 байт}
<...>
То, что проблема с кодировкой, я понимаю. Не понимаю только, как её лечить...
А на каком участке кода это выскакивает, вообщето длина строки в lazarus по умолчанию 2 гб ?
Ism писал(а):А на каком участке кода это выскакивает, вообщето длина строки в lazarus по умолчанию 2 гб ?
Ошибка "Constant strings can't be longer than 255 chars" выскакивает на строке
Код: Выделить всё
QB[8].Qt:='бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-';