Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.26;
Скачать: CL | DM;

Вниз

Наитупей6ий вопрос   Найти похожие ветки 

 
xroot   (2006-03-10 00:44) [0]

Вот сижу значит и пишу SQL запрос, написал, врубил в SQL. Все нормально. НО... При попытке программно присвоить SQL.Text данный запрос вылетает ошибка типа
[Error] Unit_FormMain.pas(74): String literals may have at most 255 elements
Логично, 4то string до 255, но делить запрос на части и клеить их + тоже не хо4ется.
AnsiString и WideString держут до 2Gb, но как правильно переформатить их?
То есть:
var
 WideSQL: widestring;
begin
WideSQL := ......
SQL.TEXT := String(WideSQL);
end;

Не проходит! Помогите!


 
palva ©   (2006-03-10 00:50) [1]

А если убрать кастинг String, и оставить только присваивание, типа
SQL.TEXT := WideSQL;
Неужели не пройдет?


 
xroot   (2006-03-10 00:53) [2]

Труба вылетает при:

WideSQL := ......


 
Defunct ©   (2006-03-10 00:57) [3]

String тоже до 2Gb читайте справку..

var
 Str : String;

begin
 Str := ".....";
 SQL.Text := Str;


 
xroot   (2006-03-10 01:18) [4]

Я не совсем понял. Даже если обычный стринг до 2Gb, как ему присвоить строку более 255 символов. Т.к. при присвоении
Str := ".....";
Вылетает
[Error] Unit_FormMain.pas(74): String literals may have at most 255 elements
Я конечно не знаток английского, но тут вроде написано: не более 255 эл-тов.


 
Джо ©   (2006-03-10 01:25) [5]

> [4] xroot   (10.03.06 01:18)

Так таким строковым константам и не место в непосредственном коде :) Вынеси его в отдельный файл и загружай в переменную :)


 
xroot   (2006-03-10 02:03) [6]

Блин, тут вообще кто-то вопросы читает? Пишу: как переформатировать в стринг. Загрузить из файла... Это то же, 4то и получить SQL.Text из базы данных или скачать драйвера для модема с сайта производителя!


 
Defunct ©   (2006-03-10 02:04) [7]

xroot   (10.03.06 02:03) [6]

Str := "dsfsdfsdf"+
       "zzzzzzzz"+
       ".............."+
       "dfsdfdf"+ ...


Фирштейн?


 
Джо ©   (2006-03-10 02:06) [8]

> [6] xroot   (10.03.06 02:03)
> Блин, тут вообще кто-то вопросы читает?

Читают.

> Пишу: как переформатировать в стринг.

Что такое "переформатировать в стринг"?

Остальную часть реплики не понял.


 
Джо ©   (2006-03-10 02:06) [9]

> При попытке программно присвоить SQL.Text данный запрос
> вылетает ошибка типа
> [Error] Unit_FormMain.pas(74): String literals may have
> at most 255 elements

Это прямая неправда.


 
Германн ©   (2006-03-10 02:58) [10]

2 xroot   (10.03.06 02:03) [6]


> Джо ©   (10.03.06 02:06) [9]
>
> > При попытке программно присвоить SQL.Text данный запрос
>
> > вылетает ошибка типа
> > [Error] Unit_FormMain.pas(74): String literals may have
>
> > at most 255 elements
>
> Это прямая неправда.


Я бы даже назвал это не "неправдой", а наглым враньём! В лучшем случае, полным непониманием сути вещей.
> [Error] Unit_FormMain.pas(74): String literals may have
> at most 255 elements - это сообщение компиллятора, а компиллятор сообщает что-то на этапе компилляции, но уж никак не в рантайме!

По сути сабжа. String literals - это набор символов (строка) в тексте программы. Именно в тексте, т.е. если рассматривать pas-файл как текст, то это набор символов (строка) от его(её) начала до символов LF/CR.
Можно ввести более длинную строку используя символ конкатенации(суммирование строк) "+".

А вообще, я не понимаю сего ограничения на длину строки в pas-файле!
А уж то, что, якобы, компиллятор Дельфи, написан на С - тем более. :)


 
Джо ©   (2006-03-10 03:01) [11]

> [10] Германн ©   (10.03.06 02:58)
> А вообще, я не понимаю сего ограничения на длину строки
> в pas-файле!

А это чтобы не наглели! :0)


 
Германн ©   (2006-03-10 03:09) [12]


> Джо ©   (10.03.06 03:01) [11]
>
> > [10] Германн ©   (10.03.06 02:58)
> > А вообще, я не понимаю сего ограничения на длину строки
>
> > в pas-файле!
>
> А это чтобы не наглели! :0)


Эт точно!
Токмо ведь это и тебя касается, Серёга! Не чувствуешь себя обделённым?


 
Джо ©   (2006-03-10 03:46) [13]

> [12] Германн ©   (10.03.06 03:09)
> Эт точно!
> Токмо ведь это и тебя касается, Серёга! Не чувствуешь себя
> обделённым?

Иногда бывает. Выпью — и попускает. Начинаю опять втискивать себя в прокрустово ложе 80 символов по горизонтали :)


 
ЮЮ ©   (2006-03-10 03:49) [14]


> но делить запрос на части и клеить их + тоже не хо4ется.


А придется. Код, если к нему относиться уважительно при написании, вообще не должен вылазить за 81 колонку (серая полоса в редакторе кода - для красоты что ли нарисована?). И как читать твой запрос потом? SQL код в программе должен быть так же лекгочитаем и форматирован, как и код самой программы.
Например:
 sql :=
   "SELECT llg.*, ISNULL(ug.NAME, mug.NAME) GroupName, wp.ID WorkPlan " +
   "FROM "+
     "( SELECT " +
         "LoadLine , gsg.UGroup, NULL SuperGroup, sg.ID SubGroup," +
         "GroupSubGroup, SubGroupCount,  SubGroupIndex,  BudgetRatio," +
         "PayRatio " +
       "FROM" +
         "S_SubGroups sg " +
         "LEFT JOIN S_GroupSubGroups gsg ON sg.GroupSubGroup = gsg.ID " +
       "WHERE "
         "LoadLine IN (SELECT ID FROM S_loadLines WHERE [load] = :LoadID) " +
       "UNION " +
       "SELECT " +
         "LoadLine , ig.UGroup, sg.ID SuperGroup, NULL," +
         "NULL, NULL, NULL , NULL, NULL " +
       "FROM " +
         "S_SuperGroups sg " +
         "LEFT JOIN S_IncludedGroups ig ON sg.ID = ig.SuperGroup " +
       "WHERE " +
         "LoadLine IN (SELECT ID FROM S_loadLines WHERE [load] = :LoadID)" +
     ") llg " +
     "LEFT JOIN U_GROUPS ug on llg.Ugroup = ug.ID " +
     "LEFT JOIN U_GROUPS mug on ug.Ugroup = mug.ID " +
     "LEFT JOIN U_WorkPlans wp on wp.ID = ISNULL(ug.WorkPlan, mug.WorkPlan) " +
   "ORDER BY LoadLine, SuperGroup, SubGroup, llg.UGroup"



Страницы: 1 вся ветка

Текущий архив: 2006.03.26;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.074 c
1-1140099202
rolex
2006-02-16 17:13
2006.03.26
Как быстро удалить файл?


2-1141994458
jeka_t
2006-03-10 15:40
2006.03.26
Как определить текущий TDBGrid.Row при событии DrawColumnCell?


2-1142110719
afisher
2006-03-11 23:58
2006.03.26
как связывать данные переменной между формами?


1-1140430048
MegaVolt
2006-02-20 13:07
2006.03.26
Как испольовать Dunit для privat секции?


9-1126551988
4ECHOK
2005-09-12 23:06
2006.03.26
DWS скрипты в играх.