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

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

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

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

Сообщение Climber » 24.11.2008 10:54:42

Мне надо сохранить в константе 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 длинные строки работали...
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

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

Сообщение Vadim » 24.11.2008 11:02:19

Попробуй применить типизированную константу AnsiString. Она позволяет хранить больше символов.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение GrayEddy » 24.11.2008 12:01:04

Директива {$H+} присутствует?
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

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

Сообщение Climber » 24.11.2008 14:00:21

Директива {$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 (я ориентировался по координатам курсора, которые выводятся в строке статуса в редакторе).
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

Рейтинг@Mail.ru