Re: ADIR, глюк с маской "?" | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
В FPD26 отладчика пошагового чтоли нет? если нет, то ставить можно ставить WAIT-ики, но я тоже не верю, что после APPEND BLANK укатель на запись "сам уходит". Надо найти причину. То что "отчет точно показывает, что уходит" - недостаточен. Надо добиться правильной работы без GO BOTTOM, или указать на неправильность фокса в этом деле. Глюк криминальный, убивающий весь фокс.
|
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Дак не воспроизводится глюк.
|
Re: ADIR, глюк с маской "?" | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Почему же не воспроизводится... Вот "отчет" прозвучал, REPORT FORM - это аналог SCAN (после завершения он встает на "EOF")... хз, что может быть в коде, казалось бы безобидное... Давай минимальный код, че. Воспроизведи )
|
Re: ADIR, глюк с маской "?" | |
---|---|
Божья_коровка Сообщений: 25731 Дата регистрации: 23.08.2001 |
Не приставай к царю, у него уже всё в порядке ------------------ Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается... |
Re: ADIR, глюк с маской "?" | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Хозяйка Медной Горы? )
|
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Там неслабая прога ваащета по размеру. Но глюк возникал в одном месте - в небольшом фрагменте. Вероятно, такой глюк был следствием предыдущих операций, напрямую не связанных с этим куском.
Ну вот примерно так было:
|
Re: ADIR, глюк с маской "?" | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Полноценный репо код с данными ошибкой отказался делать... ) Завтра попробую, если никто не сделает заместо ТС )
|
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Ошибка была в этом фрагменте. Ошибка не воспроизводится. Се ля ви.
|
Re: ADIR, глюк с маской "?" | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
() в каком? строку то хоть назови... или отладчика нет в ФПД?...
|
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Я же написал в комментарии - смотри зеленым цветом написано. REPLACE не отрабатывал.
|
Re: ADIR, глюк с маской "?" | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
вроде хороший код... Но... я хз |
Re: ADIR, глюк с маской "?" | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
В процессе отладки программы случается всякое, но это всякое - "глюки программиста", которые происходят со всеми без исключения. Отладил прогу, убрав свои глюки (иногда неосознанно), которые ты посчитал за глюки Фокса, и все работает, не существовавший глюк Фокса перестал воспроизводиться. Поэтому, если у тебя сейчас есть реальный код, который приводит к EOF() без причины, то покажи его. А если сейчас такого кода нет, то ты просто исправил все свои глюки (ошибки в логике). |
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Еще раз проверил работу уже в "оригинальной" папке. Везде убрал (в 3 местах) команду GO BOTT. Всё работает без глюков. Однако я при всем желании не могу воспроизвести имевшую быть ситуацию. Во-первых, в исходном файле я экранировал "двойные кавычки" (смотрите в соседнем топике). Во-вторых, вносил изменения в этот программный модуль, хотя и не в этих фрагментах. Возможно, еще что-то менял.
Команду GO BOTT на всякий случай оставил в работе - ничего не портит ведь. Исправлено 1 раз(а). Последнее : Simple777, 24.05.18 07:08 |
Re: ADIR, глюк с маской "?" | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Если ошибка в программе осталась, но она проявляет себя лишь при определенных (редких) условиях, то я бы, не убирая GO BOTTOM, добавил бы проверку на EOF() с выводом диагностики на экран и/или в файл - интересно же понять причину "глюка"! (во всяком случае это интереснее, чем при любых непонятках мастерить костыли) |
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Разумно, конечно. Но это была разовая обработка текстового файла. Теоретически в будущем может появиться необходимость обработать такой файл еще для кого-нибудь. Пожалуй, добавлю SUSPENDED по EOF()
|
Re: ADIR, глюк с маской "?" | |
---|---|
andrewk Сообщений: 174 Откуда: Красноярск Дата регистрации: 15.05.2005 |
В связи с этим же имеет смысл такая запись: select 000.0000+val(something) as nn from ... Да, когда таблица открыта в нескольких областях, где-то идёт запись (действие), в результате которой могут поменяться данные этой записи, тем более если есть relation, то по возврату в эту область go recno() или skip 0 не просто не помешает, но может спасти от непонятных результатов)) Тем более, что выполняются эти команды мгновенно. Буквально позавчера наткнулся на свой комментарий в своей же древней функции:
Да не, просто это конкретно ужасная ситуация, крах данных и прочее, причём, в совершенно обычном месте кода, потому все и возбудились. Что-то здесь не то, какое-то стечение обстоятельств. |
Re: ADIR, глюк с маской "?" | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не только с конкретно этим - при запросах с функциями ещё более изощрённая логика определения типа (и размерности) поля результата применяется. В 9-ке более красиво будет CAST использовать. По крайней мере не выглядит таким уж явным костылём Некоторые функции от set decimal зависят. Плюс та же самая "проблема" отображения результата - т.е. если всегда держать в уме что помимо явных ROUND фокс ещё и пытается "покрасивее" показать результат, основываясь на практически неуправляемых "ширине и точности вещественного числа хранящегося в переменной"... Ну тогда и не будет возникать "глюков" на пустом месте. ------------------ WBR, Igor |
Re: глюк с Value%1=0 (Double) | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Вобщем, когда Нагибулина докапывается до копейки (миллиярды ее меньше беспокоят), то нельзя пользоваться нативным оператором 123.45%1 чтобы получить копейки!
|
Re: ADIR, глюк с маской "?" | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Назачем для вычисления КОПЕЕК применять ROUND(,12)? Ты б ещё через десятичный логарифм посчитал
Применять оператор %1 для получения дробной части числа тоже, мягко говоря, "не очень". Лучше оставить его для ЦЕЛЫХ чисел, и даже желательно только натуральных, т.к. есть интересные особенности при работе с отрицательными числами. А то очередной шок будет после вычленения "копеек" из -12300.65 Не вижу решительно никакой проблемы или ошибки в приведенном примере. 64.9999999994 копеек это и есть 65 копеек (по бизнес-логике современных российских денежных знаков, где копейка всегда целое и "минимальное" выражение физической денежной суммы). То что кто-то решил отбросить часть знаков числа а не округлить - исключительно проблемы этого кого-то Для работы конкретно с денежными величинами существует (в фоксе) специальный тип currency - который по сути является целочисленным - что вполне логично для денежных сумм. Хотя и не всегда удобно с ним работать, особенно учитывая что он таки 4 знака после запятой отводит под "копейки" (валюты разные есть, где-то и не на 100 частей делят основную единицу). Ну и то что всякие там тарифы/расценки/прОценты и иже с ними всё же не совсем "денежными" единицами являются, а переход от "просто числа" к "денежному числу" тоже отдельная операция со своими правилами... ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 29.05.18 18:30 |
Re: ADIR, глюк с маской "?" | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> Не вижу решительно никакой проблемы или ошибки в приведенном примере
> Для работы конкретно с денежными величинами существует (в фоксе) специальный тип currency - который по сути является целочисленным - что вполне логично для денежных сумм Да, знаю, но в "БД" лежат числа именно в формате N(14,2), и их преобразования NTOM не нужны, и способ хранения менять не нужно. Вызывают проблемы фоксовые "операции" (типа % или *, или вообще все) с числами, связаны с представлением числа в фоксе, понимаю это... Думаю уже, типа, сделать оператор (подпрограмму) "денежное суммирование", или "денежное умножение", но смешно же... хочется пользоваться нативными операторами фокса... |
© 2000-2024 Fox Club  |