On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Пост N: 1
Зарегистрирован: 15.11.12
ссылка на сообщение  Отправлено: 15.11.12 14:42. Заголовок: Вопрос по сборке проекта


использую Clipper 5.2e portable выкачанный по адресу http://softclipper.narod.ru/download.html. При сборке проекта rtlink предлагает указать путь до библиотеки CE50.LIB. Подскажите пожалуйста где найти данный файлик... или полноценную папку со всеми библиотеками. Опыт работы с clipper отсутсвует а экзешник собрать очень хочется. Please help...

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 67 , стр: 1 2 3 4 All [только новые]


moderator


Пост N: 452
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.11.12 15:49. Заголовок: Ну а касательно ошиб..


Ну а касательно ошибки - похоже, не понравилось содержимое Local7, использующееся в макроподстановке - может быть, кстати, что там как раз вызов функции, явно не вызывавшейся в программе. Выводите этот local7 в файл, увидите, на чем именно она затыкается.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 18
Зарегистрирован: 15.11.12
ссылка на сообщение  Отправлено: 28.11.12 20:22. Заголовок: Прошел отладчиком до..


Прошел отладчиком до момента возникновения ошибки -

 цитата:

Local5 := 114
local7:= "rrh->(dbGoTo(aLockList))"



итоговая команда получается:


 цитата:

aadd( Local1:aopr, {"OP", "rrh->(dbGoTo(aLockList))", 114, 0, &("{||rrh->(dbGoTo(aLockList))}")} )



я в ней ничего криминального не вижу. Но нажимаем F8 и получаем BASE\1449 ((((((


Завтра попробую увеличить количество строк в каком-нибудь нормально работающем отчете что бы превысить порог в 68 элементов...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 19
Зарегистрирован: 15.11.12
ссылка на сообщение  Отправлено: 28.11.12 20:26. Заголовок: Съедаются квадратные..


Съедаются квадратные скобки.....после aLockList квадратные скобки с буковкой - i


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 20
Зарегистрирован: 15.11.12
ссылка на сообщение  Отправлено: 29.11.12 10:10. Заголовок: читаю про & и -&..


читаю про & и ->... Пока как-то туговато...англицкий все-таки.... Что же такого неправильного в строке

 цитата:
rrh->(dbGoTo(aLockList[i]))



Оригинальный экзешник все проглатывает на ура...
Есть ли на русском CA-Clipper 5.2 Norton Guide?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 453
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.11.12 12:03. Заголовок: & - оператор, пр..


& - оператор, предписывающий макрокомпилятору ( встроенное в ваше прилжение средство ) откомпилировать следующую за & строку. Ошибка BASE 1449 говорит, что эта строка не есть правильное выражение.

В строке все правильно. Попробуйте поэкспериментировать с ней - написать что-нибудь другое, от простейшего - к сложному.

На русском есть NG к 5.1

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 72
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 29.11.12 14:07. Заголовок: А что хранится в aLo..


А что хранится в aLockList? Посмотрите его содержимое

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 455
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 30.11.12 10:27. Заголовок: nick_mi пишет: А чт..


nick_mi пишет:

 цитата:
А что хранится в aLockList? Посмотрите его содержимое


Не думаю, что это имеет значение. Программа ругается на компиляцию строки, а не на выполнение скомпилированного кода, на этой стадии не имеет значения, что содержит aLockList и даже, существует ли он вообще.
У меня такое ощущение, что проблема там не в конкретной компилируемой строчке, а в чем-то другом. Может, памяти не хватает, или еще каких-нибудь ресурсов. Для больших программ на Клиппере, насколько я помню, имело значение, как они разбиты на модули, как и чем собраны, с какими опциями линкера. Overlays и все такое ...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 21
Зарегистрирован: 15.11.12
ссылка на сообщение  Отправлено: 30.11.12 11:40. Заголовок: Это единственная фор..


Это единственная форма которая формируется с ошибкой. Другие два десятка форм формируются нормально. В этом же документе(в этом текстовом файле) эта строка появляется два раза. Исключаю первое появление... спотыкаемся на втором...исключаю второе- сканируем текст файла до конца без вываливаний... Т.е. получается память непричем. А именно не нравится синтаксис строки. О как.
ладно оставлю до понедельника.... надо отдохнуть.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 3
Зарегистрирован: 27.08.12
ссылка на сообщение  Отправлено: 30.11.12 19:30. Заголовок: Попробуйте для линко..


Попробуйте для линковки RTLINK или EXOSPACE. Может поможет...?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 22
Зарегистрирован: 15.11.12
ссылка на сообщение  Отправлено: 04.12.12 11:39. Заголовок: Проблему с неправиль..


Проблему с неправильной обработкой строки отложил т.к. наткнулся на другую проблему созвучную, видимо, с этой.
Для просмотра табличных данных в программе иногда используется следующий экземпляр TBrowse
 #include "Set.ch" 
#include "common.ch"

********************************
function TBROWSEIND(Arg1, Arg2, Arg3, Arg4, Arg5)

local Local1
Local1:= tbrowsenew(Arg1, Arg2, Arg3, Arg4)
Local1:goTopBlock({|BL| BL:= Set(_SET_SOFTSEEK, .T.), dbSeek(Arg5), Set(_SET_SOFTSEEK, BL)})
Local1:goBottomBlock({|| GotoBottom(Arg5)})
Local1:skipBlock({|BL| MovePointer(BL, Arg5)})
return Local1

********************************
static function MovePointer(Arg1, Arg2)

local Local1:= 0
if (Arg1 == 0)
skip 0
else
do while (!BOF() .AND. !EOF() .AND. Local1 != Arg1 .AND. &(indexkey()) = Arg2)
dbSkip(if(Arg1 < 0, ( Local1--, -1 ), ( Local1++, 1 )))
enddo
if (BOF()) // это 24-я строка
Local1++
elseif (EOF())
skip -1
Local1--
elseif (!(&(indexkey()) = Arg2))
dbSkip(if(Arg1 > 0, ( Local1--, -1 ), ( Local1++, 1 )))
endif
endif
return Local1

********************************
static procedure GotoBottom(Arg1)

if (Len(Arg1) == 0)
goto bottom
else
seek SubStr(Arg1, 1, Len(Arg1) - 1) + Chr(Asc(SubStr(Arg1, ;
Len(Arg1))) + 1) softseek
skip -1
endif

********************************


Так вот при перемещении по таблице вверх/вниз периодически программа вываливается все с тем же сообщением BASE/1449 Syntax error: &.
Только на сей раз это происходит в неопределенный момент времени и положения курсора в таблице.
После перезапуска программы ошибка возникает в другом месте...Там же где ошибка возникла перемещаемся без ошибок.
Восстановил процедуру логгирования ошибок. Вот его сообщения:
Ошибка BASE/1449 Ошибка в синтаксисе: & 
Вызов из LOCKERRHAN(0)
Вызов из (b)INITHANDL$(0)
Вызов из MOVEPOINTE(24)
Вызов из (b)TBROWSEIND(11)
Вызов из obj:FORCESTABL(0)
Вызов из DOCUM(2640)
Вызов из (b)VOZVMNU(5167)
Вызов из PROCESSMEN(4688)
Вызов из VOZVMNU(5182)
Вызов из (b)MAIN(190)
Вызов из PROCESSMEN(4688)
Вызов из MAIN(205)
Вызов из TORG_1(18)


Ошибка всегда идет из ф-ции MovePointer, и почти всегда из 24-ой строки(иногда 21 проскакивает).

Подскажите ПЛИЗ что это может значить и куда копать.....




Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 04.12.12 13:02. Заголовок: Может быть "плохой" индекс - не соотв.таблице


Может быть "плохой" индекс - не соотв.таблице.
При перемещении по таблице перевычисляется &(indexkey())
или само выражение indexkey() - некорректное

Если в индексе нет UDF - можно открыть таблицу с индексом
другой утилитой ,(м.б. DBU или подобной)



Спасибо: 0 
Цитата Ответить
Администратор




Пост N: 2583
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.12.12 13:03. Заголовок: Поиск по гуглу дает ..


Поиск по гуглу дает ссылки на возгласы отчаянья и шаманские пляски:

https://groups.google.com/forum/?fromgroups#!search/BASE$2F1449$20/comp.lang.clipper/OkS4YkJgBow/dvzksrCYIjoJ

https://groups.google.com/forum/?fromgroups#!search/BASE$2F1449$20/relcom.comp.dbms.clipper/7qt5dv376o4/oFuIXfgZ_TsJ

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2584
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.12.12 16:21. Заголовок: 10 лет назад в резул..


10 лет назад в результате плясок с бубном предположили причину этой ошибки, см. ниже.
Это связано с какими-то ограничениями по памяти, в результате которых падает макрокомпилятор.
Возможно, стоит увеличить размер стека при сборке программы. Это команда блинкера:

STACK NNNN

Вот это сообщение:

http://computer-programming-forum.com/19-clipper/0ecf86730f10b247.htm

I have had syntax errors with & when my app was trying to macro expand a
string that had an expression. It was a perfectly good string which should
not have generated a syntax error. I have a very large app which still has
probably 500 private vars.

I found that by changing some of the privates to locals and making
appropriate code changes caused the syntax error to disappear. There seems
to be a limit to how many privates the eval stack can hold and when this is
reached, the macro compiler goes crazy. If your app does not have alot of
private vars, then my advice is probably not applicable.


Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 04.12.12 18:29. Заголовок: Уменьшение макровычислений


Можно создать блок кода для indexkey()
и уменьшить таким образом число макровычислений.

#define COMPILE(x) &("{||"+x+"}")
...
//Модифицировать код
static function MovePointer(Arg1, Arg2)
Local block:=COMPILE(indexkey())
...
// далее по тексту замена &(indexkey()) на eval(block)

полученные выражение вида DBSKIP(if(Arg1 < 0, ( Local1--, -1 ), ( Local1++, 1 )))
лучше упростить
if Arg1 < 0
n:=-1
Local1--
else
n:= 1
Local++
endif
dbskip(n)




Спасибо: 0 
Цитата Ответить



Пост N: 23
Зарегистрирован: 15.11.12
ссылка на сообщение  Отправлено: 05.12.12 08:02. Заголовок: Приватных переменных..


Приватных переменных действительно много.... Буду смотреть что можно сделать в этой ситуации...
Сделал одно наблюдение что введение в скрипт линкера строки BLINKER OVERLAY OPSIZE 128 - в разы увеличивает время работы программы до краха(BASE/1449).
Такое ощущение что где-то происходит утечка памяти...

Еще объясните пожалуйста что в этом блоке кода может быть неправильно:

  
static SetStack := {}

. . .

procedure SaveSet()
memvar SetStack
AAdd(SetStack, {Select(), indexord(), RecNo()})

********************************
procedure RestoreSet()

memvar SetStack
local length:= Len(SetStack)
if (length > 0)
select (SetStack[length, 1])
set order to SetStack[length, 2]
go SetStack[length, 3]
endif
aSize(SetStack, length - 1)

********************************


При первом же вызове SaveSet() получаю что переменная SETSTACK не существует

petr707 - Ваши предложения попробую позже..Что то у нас сбербанк онлайн не хочет онлайнить.....

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 461
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.12.12 08:47. Заголовок: Строчка "memvar ..


Строчка "memvar SetStack" в начале процедуры означает, что в этой процедуре предполагается, что SetStack - это именно memvar, т.е. Private или Public переменная. Если такой нет, то вы получаете то, что получили ...
Переменная, описаннпя как Static - это не memvar. Теоретически можно предположить, что где-то должна быть объявлена и Public/Private с тем же именем и эти процедуры обращаются именно к ней, но, скорее всего, здесь просто ошибка. Так что или сделайте эту SetStack Public/Private, или уберите ее объявления как memvar.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 24
Зарегистрирован: 15.11.12
ссылка на сообщение  Отправлено: 05.12.12 09:09. Заголовок: Без мемвар я получаю..


Без мемвар я получаю предепреждения Warning C1003 Ambiguous reference: 'SETSTACK', поэтому и поставил мемвар. Но и с мемвар и без получаю данную ошибку....

Насколько я понимаю область видимости данной переменной распространяется на весь данный файл. Предположить что это имя уже используется... обозвал её StTorgSt - получил что нет такой перемененной.....

бред какой-то....


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 463
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.12.12 09:30. Заголовок: Да, область видимост..


Да, область видимости static переменной, объявленной вне какой-либо процедуры, распространяется на весь файл. А точно у вас эта Setstack объявлена вне процедур ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 25
Зарегистрирован: 15.11.12
ссылка на сообщение  Отправлено: 05.12.12 09:44. Заголовок: абсолютно точно вне ..


абсолютно точно вне процедур.
переписал так:
 
procedure SaveSet()

public StTorgSt := {}
AAdd(StTorgSt, {Select(), indexord(), RecNo()})

********************************
procedure RestoreSet()

local length:= Len(StTorgSt)
if (length > 0)
select (StTorgSt[length, 1])
set order to StTorgSt[length, 2]
go StTorgSt[length, 3]
endif
aSize(StTorgSt, length - 1)

********************************


программа на отсутствие не ругается, но и работает не правильно...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 26
Зарегистрирован: 15.11.12
ссылка на сообщение  Отправлено: 05.12.12 09:51. Заголовок: есть третий вариант...


есть третий вариант....
 
function SaveSet()

static StTorgSt := {}
AAdd(StTorgSt, {Select(), indexord(), RecNo()})
return StTorgSt

********************************
procedure RestoreSet(Arg1)

local length:= Len(Arg1)
if (length > 0)
select (Arg1[length, 1])
set order to Arg1[length, 2]
go Arg1[length, 3]
endif
aSize(Arg1, length - 1)

********************************


Возвращаем StTorgSt и потом передаем её в RestoreSet

Так работает.... Но.... почему первый вариант не работоспособен

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 67 , стр: 1 2 3 4 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет