Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизНаитупей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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.047 c