как работает Execscript ? | |
---|---|
AngelOKES Сообщений: 828 Дата регистрации: 08.02.2012 |
Не могу понять почему данная функция выдаёт ошибку на длинной строке, ведь ограничений нет, виде даже примеры, где очень большие куски коды вставляют и всё работает.
Теперь опишу где и как я её использую. Есть выборка данных в курсоре, назвал я его DS2020, в нём есть поля и все они строковые и есть на форме TextBox и EditBox.
и если значение поля будет более 250 символов, то я получаю ошибку, то ли это какое-то ограничение о котором нигде не сказано, либо что-то другое, не могу понять куда копать, не хотелось отказыватся от такого подхода и описывать каждое поле отдельно Исправлено 1 раз(а). Последнее : AngelOKES, 30.09.20 10:41 |
Re: как работает Execscript ? | |
---|---|
of63 Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Нельзя задавать:
x = 'более_ок_250_символов' |
Re: как работает Execscript ? | |
---|---|
AngelOKES Сообщений: 828 Дата регистрации: 08.02.2012 |
Про ограничения вообще нигде ничего не сказано, да и вот пример, где там более 1000 сомволов кидают: fox.wikis.com
|
Re: как работает Execscript ? | |
---|---|
of63 Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Попробуй в командном окне создать строку длиной 300 в одних кавычках - будет "синтакс еррор"
Длинную строку (1000 и более, в разумных пределах) можно задать как сумму строк, каждая длиной менее 250. Пример по ссылке не читал, там что-то много всего... Да и .Value может не сьесть длинную строку, смотря чего Value Исправлено 1 раз(а). Последнее : of63, 30.09.20 11:08 |
Re: как работает Execscript ? | |
---|---|
Владимир Максимов Сообщений: 14098 Откуда: Москва Дата регистрации: 02.09.2000 |
1. ExecScript() следует воспринимать как запуск независимой процедуры вида do MyProc.prg.
Ну, т.е. вот все то, что указано внутри копируется в отдельный файл PRG, который компилируется, а затем запускается на выполнение. При таком подходе многие вопросы ее использования становятся понятными 2. Ошибка "Слишком много символов..." может быть следствием логической или синтаксической ошибки в сформированной строке. Очень распространенная ошибка при формировании Select-SQL и их выполнении через макроподстановку. Проверь, какое значение у тебя получилось и можно ли это значение скомпилировать если просто скопировать в PRG? Возможно, вместо ".t" надо нормально написать "thisform.t" + ... 3. ExecScript() - значительно более "тяжелая" для FoxPro команда, чем "простая" макроподстановка через &. Если здесь формируется только одна команда, а не набор команд, то лучше использовать простую макроподстановку Если речь идет об операции присвоения, то есть и другие решения Макроподстановка. Функция GetPem() Макроподстановка. Формирование команды PS: Кстати, а значение поля символы кавычки не содержит? Может, в этом проблема? Как вариант решения
Исправлено 3 раз(а). Последнее : Владимир Максимов, 30.09.20 11:32 |
Re: как работает Execscript ? | |
---|---|
AngelOKES Сообщений: 828 Дата регистрации: 08.02.2012 |
Спасибо за ссылки, понял что мне особо Execscript и не нужен (в конкретном случае) и решил использовать макроподстановку, которая у меня всегда работала и работает замечательно и понял для чего нужен именно Execscript, у меня необходимости в его использовании нет
|
Re: как работает Execscript ? | |
---|---|
akvvohinc Автор Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата: Значение поля подставляется в команду, в которой оно становится строковым литералом, на длину которого есть ограничение в 255 символов. Можно разделить его на части, не превышающие этого ограничения и сложить их в выражении:
Но в любом варианте при таком подходе надо гарантировать, чтобы в значении поля не содержались разделители, используемые в команде, будь то одинарные или двойные кавычки, или квадратные скобки.
Есть ограничение на размер строковой константы Maximum length of a string literal - 255 А там, где кидают больше, кидают с помощью выражений, каждая составная часть которых не нарушает озвученное ограничение. PS Правда, мне не удалось понять, почему значение value надо получать именно через строковую константу, а не через обычную переменную, для которой такого ограничения нет. Исправлено 5 раз(а). Последнее : akvvohinc, 30.09.20 16:53 |
Re: как работает Execscript ? | |
---|---|
akvvohinc Автор Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Такие выражения вообще не требуют макро, так как для присваивания существует команда STORE:
Исправлено 2 раз(а). Последнее : akvvohinc, 01.10.20 08:30 |
© 2000-2024 Fox Club  |