Длинные строки в константах

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

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

Ответить
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Длинные строки в константах

Сообщение Climber »

Мне надо сохранить в константе SQL-запрос. Компилятор ругается, что строки больше 255 символов делать нельзя. Пробовал объявить массив констант - тоже не дает (опять ругается на длинну строки, хотя я запрос разбил на куски по ~200 - 240 байт). Получается, что единственный выход - написать что-то типа:

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

const
sql1='select ... ';
sql2='from ... ';
sql3='where ...';
sql4='group by ... ';
...
sql123='order by 1';
MyQuery.SQL.Text:=sql1+sql2+sql3+sql4+...+sql123;
В Delphi длинные строки работали...
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Попробуй применить типизированную константу AnsiString. Она позволяет хранить больше символов.
GrayEddy
постоялец
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение GrayEddy »

Директива {$H+} присутствует?
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

Директива {$H+} присутствует.
Опытно-экспериментальным путем я установил, что константа должна определяться примерно так:

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

const
MyConst = 'string string string string string ... string '+
     'string string string string string ... string '+
     'string string string string string ... string ';
//   |<---     здесь примерно 200 символов      --->|

То есть ограничение не 255 символов, а чуть-чуть меньше, около 200 - 220 (я ориентировался по координатам курсора, которые выводятся в строке статуса в редакторе).
Ответить