Что делать с "can't be longer than 255 chars"?

Вопросы программирования и использования среды Lazarus.

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

Ответить
Mapper720
незнакомец
Сообщения: 3
Зарегистрирован: 31.08.2011 10:07:48

Что делать с "can't be longer than 255 chars"?

Сообщение Mapper720 »

Поиском нашёл подобные обсуждения, но там обсуждалось, как использовать строку ДЛИННЕЕ 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 такой пробелемы не наблюдалось...
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

UTF8 , мой юный падаван

Покажи пример кода

Добавлено спустя 4 минуты 25 секунд:
надо использовать не ansistring , a utf8string
кроме того кажется есть отдельные операторы считающие длину строки для utf8 и для ansi
Mapper720
незнакомец
Сообщения: 3
Зарегистрирован: 31.08.2011 10:07:48

Сообщение Mapper720 »

Код примрно такой:

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

<...>

type
  QST = Record
  Qt: string;
  ...
  ... ... ...
  End;

<...>

var QB: Array [1..Max] of QST;

<...>

QB[8].Qt:='бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-'; {т.е. 240 символов, 420 байт}

<...>

То, что проблема с кодировкой, я понимаю. Не понимаю только, как её лечить...
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

А на каком участке кода это выскакивает, вообщето длина строки в lazarus по умолчанию 2 гб ?
Mapper720
незнакомец
Сообщения: 3
Зарегистрирован: 31.08.2011 10:07:48

Сообщение Mapper720 »

Ism писал(а):А на каком участке кода это выскакивает, вообщето длина строки в lazarus по умолчанию 2 гб ?

Ошибка "Constant strings can't be longer than 255 chars" выскакивает на строке

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

QB[8].Qt:='бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-бла-';
Ответить