Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Максимальная длина строки для & или EVALUATE( ) / 19 сообщений из 19, страница 1 из 1
18.05.2005, 12:21
    #33071688
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
В хелпе про ограничения че-то... ни че не нашел...
Лис 8-ой.

У меня собралась переменная:
Код: plaintext
1.
?LEN(a1) &&  13000 
&a1  && выдает ошибку  1252  - Compiled code for this line is to long

Можно ли это ограничение как-нить обойти не разбивая переменную...


Всем заранее сенкс...
...
Рейтинг: 0 / 0
18.05.2005, 12:38
    #33071741
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
& MemVarName [.cExpression]
MemVarName - длинна не может превышать максимально допустимой длинны оператора в фокспро
.cExpression - необязательный параметр используется для присоединения дополнительных символов
...
Рейтинг: 0 / 0
18.05.2005, 12:39
    #33071747
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
EVALUATE(cExpression)
cExpression - максимальная дина 255 сиволов
вот так
...
Рейтинг: 0 / 0
18.05.2005, 12:49
    #33071781
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
leaf EVALUATE(cExpression)
cExpression - максимальная дина 255 сиволов
вот так

Попробу так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
c = "'aaaaaaaaaaaaaaaaaaaaaaaaaaaaa'" +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"
?LEN(с)
?c
?EVALUATE(c)

Или так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
b = "a='aaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"  +;
"+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"
?LEN(b)
&b
?a
...
Рейтинг: 0 / 0
18.05.2005, 12:49
    #33071782
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
Для справки

VFP 8
Maximum # of characters per command line 8,192
Maximum # of characters per macro substituted line 8,192


Почитай еще описание функции

EXECSCRIPT( )
...
Рейтинг: 0 / 0
18.05.2005, 12:58
    #33071818
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
спасибо таких подробностей не знал обычно пользуюсь рускоязычным хелпом естественно с 5.0
кажется в этом месте у фокса ничего не изменилось?
ну может за исключением максимально допустимой длинны оператора ?
...
Рейтинг: 0 / 0
18.05.2005, 12:59
    #33071829
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
2IgorProgrammer
к чему изобретать велосипед и гемор себе в зад если есть команда
repl('a',256) ?
...
Рейтинг: 0 / 0
18.05.2005, 13:12
    #33071875
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
leafобычно пользуюсь рускоязычным хелпом естественно с 5.0
"Вас обманули! Это шанхайский барс!" (с)

Русский HELP существует только по версии VFP3. Это был официальный перевод MicroSoft. Был даже бумажный вариант перевода. Такой здоровенный "талмуд".

HELP для старших версий FoxPro официально не переводился. Я как-то сомневаюсь, что нашелся энтузиаст выполнить такую неблагодарную работу.

Например, создание COM-серверов появилось только в VFP5. Попробуйте найти в своем HELP команду

BUILD DLL
...
Рейтинг: 0 / 0
18.05.2005, 13:16
    #33071899
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
да похоже что так я как то не вдавался этой команды нет но хелп всё равно не плох есть тока app exe project
...
Рейтинг: 0 / 0
18.05.2005, 13:19
    #33071908
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
кстати насчет обманули я его не покупал
но человек который мне его "подарил" говорил что от 5.0 и он долго за ним гонялся так что может самопал т.к на стиль микрософта не похоже хотя кто его знает какой у них тогда стиль был когда 3.0 ходила
...
Рейтинг: 0 / 0
18.05.2005, 13:20
    #33071911
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
leafк чему изобретать велосипед и гемор себе в зад если есть команда
repl('a',256) ?
Для Вас был пример как мона собрать строку более 256 символов и выполнить ее...
Читайте топик... тут идет речь о ограничении в выполняемой строке...


ВладимирММрак какой-то...
Дествительно огранка в 8,192 символов.

EXECSCRIPT( )
Та-же ошибка...
Не уж нельзя обойти 8,192

Не хочеться следить за размерами строки и разбивать ее...
...
Рейтинг: 0 / 0
18.05.2005, 13:28
    #33071938
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
Что-то у Вас в самой строке неправильно. Для EXECSCRIPT() ограничением является предельное количество символов в переменной памяти, а это:

VFP8Maximum # of characters per character string or memory variable 16,777,184

Может, Вы сначала потренеруетесь на небольших командах?

Приведенный Вами пример некорректен. Вы хотите сказать, что забиваете кучу текста в переменную (более 8 тысяч символов) одной командой?

Попробуйте выполнить свой код напрямую. Без макроподстановки.
...
Рейтинг: 0 / 0
18.05.2005, 13:38
    #33071986
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
ВладимирМПриведенный Вами пример некорректен. Вы хотите сказать, что забиваете кучу текста в переменную (более 8 тысяч символов) одной командой?
Не это собирается строка для стыковочного файла...

Может Вы мне предложите другой вариант решения моей проблемы...

Есть куча таблиц...
Нужно создать стыковочный фал с определенными разделителями...
сканю файл
бегу по полям и перевожу все в строку, а из строки разделитель меняю на CHR(его код) добавляя нужный разделитель...
все это собирается в одну строку и fputs вкладывается в файл.

но каждый раз при скане пробегать по полям замедляет работу...
Особенно если эт 40 таблиц... да еще и таблиц 10 по 200 полей...
Или я не прав...

Вот я и хочу собрать строку из всех полей и запихнуть в строку, а потом в скане выполнять...
На первой же таблице с 230 полями я застрял... так как выполняемая строка получилась более 13 000
...
Рейтинг: 0 / 0
18.05.2005, 13:45
    #33072010
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
ВладимирМЧто-то у Вас в самой строке неправильно. Для EXECSCRIPT() ограничением является предельное количество символов в переменной памяти, а это:
Была строка (урезал)...
"'&VIDPROJECT&'+STRTRAN(ALLTRIM(STR(smeti.VIDPROJECT,20,8)),',','.')+;" +CHR(13)+"'&KOD&'+poluch_snach_str(ALLTRIM(smeti.KOD))"

Попробывал на:
bb="ss='&VIDPROJECT&'+STRTRAN(ALLTRIM(STR(smeti.VIDPROJECT,20,8)),',','.')+;" +CHR(13)+"'&KOD&'+poluch_snach_str(ALLTRIM(smeti.KOD))"+CHR(13)+"return ss"
?EXECSCRIPT(bb)
Работает....

к своей строке добавил:
вначале присвоение переменной ss=
после каждого поля кроме последнего '+;' + CHR(13)
и к последнеему +CHR(13)+"return ss"

Попробывал выполнить...
Та-же ошибка... 1252 - Compiled code for this line is to long
...
Рейтинг: 0 / 0
18.05.2005, 13:53
    #33072049
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
Вы можете объяснить, зачем внутри макроподстановки всталяете перенос команды (символ точки с запятой)?

Там нужен только и исключительно символ перевода строки (CHR(13)+CHR(10)) для отделения одной команды от другой.

Попробуйте скинуть вашу переменную в текстовый файл

Код: plaintext
1.
StrToFile(m.bb,"Test.prg")
MODIFY COMMAND test.prg

и посмотрите, что именно там получилось. Попробуйте откомпилировать полученный файл.

Сообщение типа "line is to long" не обязательно говорит о том, что превышен размер строки. Это может быть следствием синтаксической ошибки. Но такой ошибки в результате которой "склеились" несколько строк команд. Например, лишнюю кавычку поставили.
...
Рейтинг: 0 / 0
18.05.2005, 14:03
    #33072101
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
Поробовал...
Он даже не компилется...

Говорит что длинная строка...
...
Рейтинг: 0 / 0
18.05.2005, 14:08
    #33072117
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
Разбтл эту громадину
тип ss= 1 часть
ss1 = 2 часть
и т. д.

И все заработало
...
Рейтинг: 0 / 0
18.05.2005, 14:37
    #33072249
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
IgorProgrammerПоробовал...
Он даже не компилется...

Говорит что длинная строка...
Кто не компилиться? Файл PRG? Ну, так явно что-то в синтаксисе! Выложите сюда получившийся файл.
...
Рейтинг: 0 / 0
18.05.2005, 14:52
    #33072310
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина строки для & или EVALUATE( )
ВладимирМКто не компилиться? Файл PRG? Ну, так явно что-то в синтаксисе! Выложите сюда получившийся файл.
С кодом все нормально...

Код: plaintext
1.
Если разбить исполняемую строку на более мелкие < 8000 
То prg работает как дети в школу...

Да и ладно... Пока я тута общался...
Так все забойдяшил через массив...
Код: plaintext
1.
2.
3.
4.
5.
DIMENSION my_mas_perem( 20 )
STORE '' TO my_mas_perem
*когда пробегаюсь по всем колонкам таблицы и собираю строку
IF LEN(my_mas_perem[my_nach_mas]) >  5000  && не более  5   000  символов
	my_nach_mas = my_nach_mas +  1 
ENDIF
в скане не бега по колонкам а только по масиву
Надеюсь 100 000 символов хватит для обработки строк...
Код: plaintext
1.
2.
3.
STORE '' TO my_all_pole_to_txt
FOR my_retur =  1  TO  20 
	my_all_pole_to_txt = my_all_pole_to_txt + IIF(!EMPTY(my_mas_perem[my_retur]),EVALUATE(my_mas_perem[my_retur]),'')
ENDFOR
И осталось только FPUTS...

Лады...
Теперь осталось тока написать функцию возврата и все...


Всем дискутирующим в этом топике Огромный СЕНКС...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Максимальная длина строки для & или EVALUATE( ) / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]