:: Visual Foxpro, Foxpro for DOS
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
SergeySpirin
Автор

Сообщений: 203
Откуда: Москва
Дата регистрации: 20.07.2010
Ok. Спасибо. Иногда все-таки быстрее спросить

Чисто технический вопрос, а можно ли отключить совсем появление "Task Pane" при начальной загрузке? (экономлю время загрузки фокса под отладчиком
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
Рома

Сообщений: 1079
Дата регистрации: 06.06.2001
SergeySpirin
Ok. Спасибо. Иногда все-таки быстрее спросить
Чисто технический вопрос, а можно ли отключить совсем появление "Task Pane" при начальной загрузке? (экономлю время загрузки фокса под отладчиком

В Options самого Task Pane галка соответствующая имеется
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
tester

Сообщений: 72
Дата регистрации: 25.05.2010
Давно уже отказались от фоксовых репортов в пользу VFP->HTML->PDF или VFP->HTML->DOC или VFP->HTML->XLS итп
в качестве редактора любой редактор html или ActiveX HTML редактор (покупной или в нашем случае свой, на случай если надо встроить в редактор свои прибамбасы, типа выбор таблиц и полей итп)
С конвертацией тоже проблем нет + Полная свобода форматирования предоставляемая HTML и CSS.
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
SergeySpirin
Автор

Сообщений: 203
Откуда: Москва
Дата регистрации: 20.07.2010
Рома
В Options самого Task Pane галка соответствующая имеется

Сорри, я наверное слепой Поотключал все галки, но добился только что окно пустое теперь. А вот где галка, которая и окно отключает - не найду
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
SergeySpirin
Рома
В Options самого Task Pane галка соответствующая имеется

Сорри, я наверное слепой Поотключал все галки, но добился только что окно пустое теперь. А вот где галка, которая и окно отключает - не найду
Однако... TaskPane->Options-TaslPane Manager-> Самая нижняя галочка Open Task Pane Manager when Visaul FoxPro starts


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
SergeySpirin
Автор

Сообщений: 203
Откуда: Москва
Дата регистрации: 20.07.2010
ssa
Однако... TaskPane->Options-TaslPane Manager-> Самая нижняя галочка Open Task Pane Manager when Visaul FoxPro starts

Спасибо Действительно слепой.
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
SergeySpirin
Автор

Сообщений: 203
Откуда: Москва
Дата регистрации: 20.07.2010
Вопрос про Дату-Время (перестраховочный).

Получаю фоксовские переменные типа Date и DateTime через FoxApi. Перевожу в дельфийский тип DateTime, получаю интересный результат - разница ровно в 12 часов Такое ощущение, что Фокс считает, что "начало времен" случилось в полночь, а дельфи - в полдень того же дня (по Юлианскому календарю).

Конечно, 12 часов отнять не проблема, но хотелось бы, по возможности, понять причину. И спросить на всякий случай, не существует ли случайно какая-либо настройка, опция относительно "начала времен" и которую надо учитывать при таком конвертировании?
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
B3ersn3V

Сообщений: 595
Откуда: г. Киев
Дата регистрации: 22.12.2005
А если установить
SET HOURS TO 24
результат меняется?


------------------
Не от того, что мы на планете, так солнце светит!
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
SergeySpirin
Автор

Сообщений: 203
Откуда: Москва
Дата регистрации: 20.07.2010
Попробовал. Нет, ничего не изменилось.
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
Рома

Сообщений: 1079
Дата регистрации: 06.06.2001
SergeySpirin
Попробовал. Нет, ничего не изменилось.

Покажи тогда как преобразовываешь. Настройки тут должно быть ни при чем.
Date/DateTime в фоксе хранится в виде double - количество дней в целой части, время в дробной - seconds/86400.0
Как с этим дело обстоит в Delphi - без понятия.
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
SergeySpirin
Автор

Сообщений: 203
Откуда: Москва
Дата регистрации: 20.07.2010
Рома
SergeySpirin
Попробовал. Нет, ничего не изменилось.

Покажи тогда как преобразовываешь. Настройки тут должно быть ни при чем.
Date/DateTime в фоксе хранится в виде double - количество дней в целой части, время в дробной - seconds/86400.0
Как с этим дело обстоит в Delphi - без понятия.

Да преобразование-то в одну строку

case FoxVal^.ev_type of
....
'T' : Result := JulianDateToDateTime(FoxVal^.ev_real - 0.5);


Минус 0.5 - это уже я добавил увидя нюанс, в этом случае все точно. JulianDateToDateTime - стандартная дельфийская функция. DateTime в Delphi это тоже Double, только не юлианский календарь используется.

Но вообщем-то, да, настройки не должны влиять. Скорей всего разные алгоритмы, из хелпа фокса:

"The date is represented as a double-precision floating-point Julian day number calculated using Algorithm 199 from Collected Algorithms of the ACM."

Дельфийский хелп алгоритм не уточняет, но пишет, что начинает считать с полуночи

"The Julian date is the number of days, including fractional days, since 4713 BC January 1, Greenwich noon. "
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
Рома

Сообщений: 1079
Дата регистрации: 06.06.2001
SergeySpirin
Дельфийский хелп алгоритм не уточняет, но пишет, что начинает считать с полуночи

"The Julian date is the number of days, including fractional days, since 4713 BC January 1, Greenwich noon. "

noon - это полдень - так и должно быть.

Для фокса не было бы проблем тоже так считать, если бы был только тип DateTime, но имеется еще и тип Date,
время в нем неявно считается равным 00:00:00 (а не 12:00:00 как требуется по определению Юлианского дня)
Вот отсюда и вылазит разница ровно в 12 часов.

Думаю, чтобы обеспечить одинаковый результат функций при работе как с типом Date так и c DateTime
фокс сначала расчитывает номер дня в целых числах по дате (CALGO 199), а затем уже прибавляет время.



Исправлено 1 раз(а). Последнее : Рома, 23.09.10 22:13
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
SergeySpirin
Автор

Сообщений: 203
Откуда: Москва
Дата регистрации: 20.07.2010
Рома
noon - это полдень - так и должно быть.

Упсс.. Что-то я второй раз на неделе туплю То галку в упор не вижу, то глядя на белое, говорю черное

Пожалуй надо передохнуть, а то, как назло, и основной работы много и с фоксом посидеть хочется...

Спасибо

P.S. А пост-клипперные API даты-время передают строкой, в этом смысле Фокс к Дельфи ближе
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
SergeySpirin
Автор

Сообщений: 203
Откуда: Москва
Дата регистрации: 20.07.2010
Вопросы по особенностям работы фокса, в основном по работе с памятью.

Как только начал работать с фоксом, сразу обратил внимание на следующее. Делаем USE таблице, делаем BROW и либо стрелкой вниз, либо PgDn, начинаем скроллировать. Скроллирование происходит, но явно заметен эффект некоторого "дергания". Поначалу подумал, что грид написан плохо и тормозит при перерисовках...

Сейчас, тестируя свой проект, делаю тоже самое с данными фокса, но уже на дельфийской форме с дельфийским гридом (уж в нем то уверенность на все 100%). Был немало удивлен, увидев тот же эффект. Такое ощущение, что где-то раза два в секунду фокс начинает заниматься "своими делами" (в том же потоке?) и только потом возвращает управление user-коду...

Я пока работаю только в IDE и все запускаю просто из "Command Window". Собственно, вопрос, проявляется ли это в реальных программных режимах? Если это проявляется, то с этим как-то борются или это считается нормой? И т.д.

Кстати, добиться "гладкого скольжения" я могу, сделав форму модальной. В этом случае весь скроллинг "висит" на вызове API-функции, и в этом случае фокс "ждет"

И еще, при скроллировании активно потребляется память(?). Эта ситуация мне не очень понятна. Успокаивает, конечно, что та же ситуация и с обычным BROWSE. Есть здесь какое-то объяснение? Фокс кэширует данные? Для чего? И т.д.

Спасибо.
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
SergeySpirin
Автор

Сообщений: 203
Откуда: Москва
Дата регистрации: 20.07.2010
SergeySpirin
но явно заметен эффект некоторого "дергания".

Посмотрел этот момент повнимательнее. В общем-то, очевидно, что ни к browse, ни к db-движку фокса эта проблема отношения не имеет. Например, если в Command Window накоплена большая история команд, то движение по нему с помощью стрелок вверх/вниз продемонстрирует тоже самое "подергивание".

Явно, основной поток фокса обрабатывает некий таймер.. Посмотрел под Spy, WM_TIMER-а нет, но присутствует некий wm_systimer(?), по которому основной поток немного похоже и "колбасит" Ясно, почему мою модальную форму не "колбасит" - в этой ситуации, фокс не имеет возможности обрабатывать сообщения и поток данных идет из семейства _DBxxx-функций ровненько и "не дергаясь"

Про память тоже посмотрел, вроде все в конце концов возвращается. Но раз никто не ответил, зачем это нужно, то значит один фокс и знает это
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
SergeySpirin
Автор

Сообщений: 203
Откуда: Москва
Дата регистрации: 20.07.2010
И еще пара вопросов, если позволите.

- Для полей fox-dbf существует установка NullAble. Интересна ситуация с полями Date и DateTime. Поле, хотя и NOT NULL, может содержать пустую дату. Есть ли какая-либо интерпретация пустой даты, то есть даты, которая не-NULL, значение имеет тип Date, но пуста? Фокс на пустую дату выдает значение 0, что, конечно, как дату интерпретировать вряд ли нужно Или это наследие времен, когда NullAble-полей в принципе не было?

- Можно чуть подробнее про тип поля и тип данных General? Они реально используются? В каких случаях? Просто, сейчас раздумываю, что с этой "10-байтной числовой ссылкой" делать...
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
Рома

Сообщений: 1079
Дата регистрации: 06.06.2001
SergeySpirin
Явно, основной поток фокса обрабатывает некий таймер.. Посмотрел под Spy, WM_TIMER-а нет, но присутствует некий wm_systimer(?), по которому основной поток немного похоже и "колбасит"

WM_SYSTIMER обычно не обрабатывается приложением - оно используется самой Windows, например для того, чтобы отрисовывать
мигающий курсор (caret), в окне имеющем фокус ввода.
Но из-за некоторой "специфичности" фокса, в том смысле, что его контролы не являются обычными окнами, возможно, ему приходится
переопределять это стандартное системное поведение.
Могу только предложить поэкпериментировать с отключением курсора (SET CURSOR OFF/ON) на время получения данных - возможно поможет избежать таких эффектов.
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
B3ersn3V

Сообщений: 595
Откуда: г. Киев
Дата регистрации: 22.12.2005
1. VFP различает NULL-значения, EMPTY-значения и BLANK-значения
LOCAL ldTest
ldTest = {}
? VARTYPE(ldTest) && D
? ISNULL(ldTest) && .F.
? EMPTY(ldTest) && .T.
? ISBLANK(ldTest) && .T.
2. Поля типа General подавляющее число разработчиков не используют.


------------------
Не от того, что мы на планете, так солнце светит!
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
Владимир Максимов

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
SergeySpirin
И еще пара вопросов, если позволите.
- Для полей fox-dbf существует установка NullAble. Интересна ситуация с полями Date и DateTime. Поле, хотя и NOT NULL, может содержать пустую дату. Есть ли какая-либо интерпретация пустой даты, то есть даты, которая не-NULL, значение имеет тип Date, но пуста? Фокс на пустую дату выдает значение 0, что, конечно, как дату интерпретировать вряд ли нужно Или это наследие времен, когда NullAble-полей в принципе не было?

В целом, да. "Наследние темных веков" В DOS-версиях ВСЕ (т.е. вообще ВСЕ) поля DBF физически ханились как символы. Т.е. содержимое поля типа Date физически хранилась как символьная строка. Ну, а раз это символьная строка, то, естесственно, туда можно записать "пустоту". Т.е. одни пробелы. Вот эта-то "пустота" и была интерпретирована как "пустая" или "самая маленькая" дата. В FoxPro это не NULL. Это вполне определенная, но очень маленькая дата.

Разница в том, что любое сравнение с NULL даст NULL, а вот сравнение с пустой датой вернет вполне себе корректное логическое значение, исходя из предположения, что "пустая" дата - это "самая маленькая" дата

Ну, а DateTime вынуждена была поддерживать концепцию "пустой даты" в целях обратной совместимости с Date.

SergeySpirin
- Можно чуть подробнее про тип поля и тип данных General? Они реально используются? В каких случаях? Просто, сейчас раздумываю, что с этой "10-байтной числовой ссылкой" делать...

Поля типа General хранятся в файле FPT (мемо). В файле DBF записан лишь номер первого блока файла FPT с которого начинается содержимое поля General данной записи.

Использоваться-то используются (в смысле, поддержка есть), только вот очень не желательно это делать. Слишком много сопутствующих проблем возникает.
Ratings: 0 negative/0 positive
Re: Общие вопросы, а также специфичные (отчеты, FastReport))
SergeySpirin
Автор

Сообщений: 203
Откуда: Москва
Дата регистрации: 20.07.2010
B3ersn3V
1. VFP различает NULL-значения, EMPTY-значения и BLANK-значения.......

Владимир Максимов
В целом, да. "Наследние темных веков" В DOS-версиях ...........

Ok. Спасибо. Тогда все General-ы буду просто игнорировать. Насчет даты.. Пожалуй, исходя из того, что конечная цель отчеты, буду пустую дату интерпретировать как null. Вряд ли в отчете нужно будет это проверять на Empty, делать сравнения и т.п. (хотя, в скрипте FastReport это возможно, но явно не понадобится).


Рома
WM_SYSTIMER обычно не обрабатывается приложением - оно используется самой Windows

Да, я знаю это, поэтому и поставил вопросительный знак.. Но при "обычном" использовании этого недокументированного сообщения Spy (правда, я использую старенький WinSight32) обычно его игнорирует, здесь же "засек и вел" Необычность тут явно присутствует.

Рома
Могу только предложить поэкпериментировать с отключением курсора (SET CURSOR OFF/ON) на время получения данных - возможно поможет избежать таких эффектов.

Ну, здесь как бы проблема не моя Хоть утром я этом еще не был уверен. Как бы проблема в Фоксе, но раз от нее до сих по "никто не умер", то и ладно в конце концов

Да и, отчет не грид, в нем подергивание не заметить

P.S. Меня правда удивило, что никто этого подергивания в фоксе даже и не замечает ;) Похоже, вот что значит сила привычки
Ratings: 0 negative/0 positive


Эта тема закрыта.

On-line: 24 (Гостей: 24)

© 2000-2024 Fox Club 
Яндекс.Метрика