:: Обсуждаем проекты
FoxPro for Windows 2.6.1
foxygenex
Автор

Сообщений: 9
Дата регистрации: 08.12.2013
FoxPro for Windows 2.6.1 - это неофициальный релиз стандартной версии
FPW 2.6a, выполненный через тщательную модификацию бинарных ESL/EXE модулей с
полным сохранением их размера и функционала.
Обновление не только приводит пользовательский интерфейс к современным
стандартам, но также существенно расширяет возможности некоторых встроенных
команд FoxPro.
Перечень улучшений которых удалось добиться путем анализа и внесения правок
поверх бинарного кода ESL/EXE версии FoxPro for Windows 2.6 приведен ниже:

- @ ... TO рисует линии произвольной ширины и в произвольных направлениях
с различными растровыми масками наложения (INVERT, XOR, MERGE ... )
- POPUPs, COMBOs и LISTs могут содержать любые пользовательские иконки,
пунктирная рамка фокуса убрана, улучшены кнопки скроллинга
- @ ... BOX рисует обьемные 3D рамки различного вида - обычные, плоские,
вдавленные, инвертированные и активные в т.ч. с сохранением внутренней
зоны прорисовки
- в пользовательских TITLE/HALFHEIGHT окнах используется тема Ubuntu Ambiance
- улучшенные @ ... PUSH кнопки могут быть окрашены в произвольные цвета и
держат программно заданные размеры без авторасширения
- картинки в @ ... PUSH BMP растягиваются под размер кнопок, рамка кнопок по
умолчанию скрыта
- @ ... CHECK/RADIO переключатели прорисовываются только в 3D формате
- @ ... SPINNER и COMBO прорисовываются без черных оконтуривающих рамок
- @ ... EDIT рисуется без черного контура, SCROLLBARs имеют привычный вид
- в @ ... MENU и POPUP рамки, заголовки и подзаголовки прорисовываются в
обьемном формате, по умолчанию используется системный BTNFACE цвет,
черный цвет рамок высветлен до стандартного
- @ ... FILL закрашивает области как положено, предварительная очистка @ CLEAR
не требуется
- WAIT WINDOW выглядит почти как всплывающее окно ToolTip
- RGB() значения стандартных COLOR PAIR высветлены до более приемлимых оттенков
- шрифт Window/DIALOGs установлен по умолчанию в 'MS Shell Dlg'/'Tahoma',8
увеличенное окно COMMAND со шрифтом Coutrier,10 перемещено в правый
нижний угол
- движения колесика мыши [Ctrl+]MouseWheel теперь перехватываются FoxPro и
преобразуются в стандартные коды клавиш вверх/вниз
- вшитые таблицы раскладки DOS-437 и DOS-850 заменены на кириллические
DOS-866 и WIN-1251.

Версия ориентирована прежде всего на кодеров старой закалки, продолжающих
поддерживать приложения классических DOS/Win сборок, а во вторую очередь - на
учащихся и новичков, для которых сверхобьемный набор команд современных версий
VFP3-VFP9 и устаревший Win3.x-подобный интерфейс старого лиса FPW 2.6a является
непреодолимым препятствием в освоении FoxPro.
Усовершенствованная библиотека среды исполнения вместе с описанием и примерами
размещена по адресу (извините, пока на моем кривом английском):

myten.ru

Библиотека может быть свободно использована в ваших проектах.
Замените ваш ESL модуль на новый FOXW2601.ESL, датируемый 20-12-2013,
переименуйте его в FOXW2600.ESL и ваши старые приложения обретут новое дыхание !
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
korsak

Сообщений: 269
Откуда: Киров (Вятка)
Дата регистрации: 27.03.2007
интересно
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
BOBAN

Сообщений: 633
Откуда: Солигорск
Дата регистрации: 05.07.2004
Эта, а в VFP9 юникод можещь засунуть ?
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Мдэ, а правки ESO и ESL могут довести до цугундера...


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
foxygenex
Автор

Сообщений: 9
Дата регистрации: 08.12.2013
Переход от ANSI к UNICODE это тотальное расширение всех 256 байтовых строковых буферов в 512 байтовые как пример, причем не только статических в .data секции, но и всех динамически выделяемых областей, а также в составе структур, которых в VFP наверное несколько сотен. Короче, это нереально, проще переписать VFP9 заново...
И как правильно заметил Влад, к VFP9 как к продукту которому еще не истекло 15 лет с момента релиза, применимы все цугундерные правила в полном обьеме.
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
rubey

Сообщений: 49
Дата регистрации: 14.06.2010
Попробовал как описано, но новыые возможности не появились. Возможно какие нюансы в замене библиотеки. Не подскажете как правильно подключить измененную библиотеку ESL ?
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
foxygenex
Автор

Сообщений: 9
Дата регистрации: 08.12.2013
Здесь возможны варианты:

0. "Нулевой вариант" - ваше приложение по стечению обстоятельств не использует ни один из визуальных эл-тов управления, которые подверглись модификации в FPW 2.6.1: PUSH/Radio/CheckBox/Menu/Dialogs и т.п. Соответственно, никакой визуальной разницы не будет.

1. Ваше приложение, возможно, не является приложением v.2.6 или подгружает ESL по другому пути. Советую запустить одну из утилит filemon/procmon.exe М.Руссиновича и по логам доступа к файловой системе отследить, библиотека с каким именем и по какому пути подгружается скомпилированным EXE. Напоминаю, что FOXW2601.esl это условное "релизное" имя, а FOXW2600.esl - это рабочее имя моей версии библиотеки.
Проверить факт подгрузки легко - по новой оранжево-желтой иконке окна приложения или ее отсутствию.

2. "Силовой вариант" - сливаем ESL библиотеку и скомпилированный EXE в монолитный исполняемый модуль. Полученный самодостаточный (standalone) EXE запустится сам по себе без посторонней помощи.
Этот трюк в FPW 2.6 (а после только в VFP3) возможен благодаря недокументированным функциям FindExeSection() / HaveExeSection() от разработчиков FoxPro.

Для сборки используем примитивный код линковщика, приведенный ниже:
*-----------------------------------------------------------
*----------- FPW 2.6.1 Standalone Linker v.2.1 -------------
*--------------------- Valery Kuznetsov ------- 14-06-2003 -
set cons off
set talk off
set echo off
set scor off
set status bar off
clear all
close all
*---IN: compact FoxPro EXE -------
#define YourEXE 'TEST-EXE.exe'
*---OUT: standalone ESL+EXE -------
#define DestEXE 'DEST-EXE.exe'
#define Run_EXE DEST-EXE.exe
*----------------------------------
#define ESL_SIZE 2101209
#define EXE_CODE 9440
#define ESL_SIGN 1715463
H_esl= FOPEN('foxw2601.esl')
H_exe=FCREATE(DestEXE)
if H_esl>0.and.H_exe>0
*----------- 1-st part -------------
do while FSEEK(H_esl,0,1)<ESL_SIZE
=FWRITE(H_exe,FREAD(H_esl,65535))
enddo
=FSEEK(H_exe,ESL_SIZE)
=FCHSIZE(H_exe,ESL_SIZE)
*----------- 2-nd part -------------
H_app=FOPEN(YourEXE)
=FSEEK(H_app,EXE_CODE)
do while !FEOF(H_app)
=FWRITE(H_exe,FREAD(H_app,65535))
enddo
*----- enabling feature ---------
=FSEEK(H_exe, ESL_SIGN)
=FWRITE(H_exe,'EXE')
*--------------------------------
=FCLOSE(H_exe)
*-- fixing shared drive error ----
RUN attrib +r Run_EXE
*---------------------------------
endif
clear all
close all
*-----------------------------------------------------------
*-------------------- end of the code ----------------------
*-----------------------------------------------------------

Значения TEST-EXE.exe и DEST-EXE.exe настраиваете под себя.
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
korsak

Сообщений: 269
Откуда: Киров (Вятка)
Дата регистрации: 27.03.2007
foxygenex
На некоторых WinXP ошибка "Подсистеме Win 16 недостаточно pесуpсов для пpодолжения pаботы"
Нашел патч для wow32.dll www.vttoth.com - но он подходит только для старых dll-ок. Не приходилось сталкиваться?
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
foxygenex
Автор

Сообщений: 9
Дата регистрации: 08.12.2013
Возможно это результат воздействия на работу ntvdm.exe ныне действующего или ранее установленного антивируса. Symantec в свое время грешил этим.
И на всякий случай проверить значение параметра реестра \WOW\wowsize. У меня он равен "16" т.е. стандартно на виртуальную x86 DOS-машину выделяется 16МБайт памяти RAM.
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
korsak

Сообщений: 269
Откуда: Киров (Вятка)
Дата регистрации: 27.03.2007
Этот параметр не влияет. Там в другом дело
Цитата:
Windows NT 4.0 and Windows 2000 have a limit of 16384 GDI objects per session. This means that the only way to get around this is to log on in a different new session using Terminal Services/Remote Desktop.
The console session (session 0) controls the actual physical display and input devices (keyboard mouse), and there is no way to get around this limit. Please note that this has nothing to do with the per-process limit for GDI objects, which can be tuned from the registry. As far as I know, there is no way to get around this per-session limit for GDI objects, other than recompiling Windows from source code

In Windows XP and later versions (2003, etc.) the limit was extended to 65536 GDI objects per session.

This poses a serious problem for the Win16 subsystem, because, for some reason, it always shifts the GDI handles to the right by two bits, when converting them from 32 to 16 bits. This means that the actual handle cannot be larger than 14 bits.

When the limit was updated for Windows XP, rather than eliminate this bizarre shift to the right, Microsoft programmers decided to simply crash the 16-bit application that happens to be served a handle larger than 16384 by the GDI system.
вот наконец то нашел пропатченный файл sysadmins.ru
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
foxygenex
Автор

Сообщений: 9
Дата регистрации: 08.12.2013
Спасибо за инфу, весьма поучительно.
Скопировал себе dll-ку тоже, хотя никогда с таким не сталкивался. Проблему с приложением, которое скушало тысячи хэндлов надо все-таки решать. Влияет на работоспособность ОС в целом. Наверное где-то в цикле у него идет куча CreateObject(), но парные CloseHandle() отсутствуют.

Кстати, в FPW 2.6.1 разблокирована отладочная функция SYS(998,[ResId]), показывающая сколько обьектов, какого типа и с какими характеристиками открыто и используется в FoxPro. Сразу после старта у меня выдает:
? sys(998) ---> картинок=15шт., курсоров=10шт., иконок=5шт., кистей=40шт., шрифтов=9шт.
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
korsak

Сообщений: 269
Откуда: Киров (Вятка)
Дата регистрации: 27.03.2007
Насколько я понял - это проблема не чисто фоксовая, так что решить тут наверно ничего не получится
И у меня на глючном компе вчера была ошибка - а сегодня уже нет. В общем простить MS за кривые руки и отпустить ;)



Исправлено 1 раз(а). Последнее : korsak, 28.12.13 09:32
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
foxygenex
Автор

Сообщений: 9
Дата регистрации: 08.12.2013
На сайте выложена для загрузки утилита-компоновщик самодостаточных EXE-файлов (standalone EXE) Linker.exe v.3.0 (1МБ).
myten.ru
Помимо собственно сборки ESL библиотеки и скомпилированного приложения в монолитный исполняемый бинарник, в диалоговом окне также можно задать дополнительные опции сборки: заменить графическую иконку, запустить приложение FoxProW изначально в свернутом состоянии, подавить окно-заставку, изменить атрибуты выходного файла для запуска с сетевых дисков.

В дальнейших версиях перечень опций модификации будет расширен, но для первого релиза хватит и того минимума, что есть.
Линковщик сам по себе скомпонован как самодостаточный исполняемый файл.
Исходный код в архиве прилагается.
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
foxygenex
Автор

Сообщений: 9
Дата регистрации: 08.12.2013
Потратил 2 дня на борьбу с дефолтным раскрытием главного окна SCREEN в максимум при том, что в коде линковщика командами MODIFY/ZOOM предписано центрировать главное окно FoxPro в определенных размерах с самого начала.
Выяснилось что это не баг, а фича.

Через оконное сообщение WM_SIZE(Wparam=2.MAX) запускается цепочка расчета его координат, создание основного и фонового hDC в максимальных размерах. Косвенный вызов функции просчета при свернутом окне не помогает.
Поэтому максимум что было сделано в версии Linker 3.1 - менее агрессивный режим раскрытия при выборе опции старта (*)Min - на доли секунды прорисовывается только заголовок-Title окна в полупрозрачном режиме, иконки Desktop смаргивают и все.

Попутно выяснилось, что в FoxPro for Windows v.2.6 молчаливо реализована команда - "SIZE WINDOW TO ...| BY ...", пояснения к ней даны только начиная с версии VFP3.
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
баловство все это ;)


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
medstrax
Забанен

Сообщений: 5964
Дата регистрации: 23.03.2007
По моему баловство весьма полезное. Хотя бы собственные скиллы заапгрейдить. Помнится не так давно столкнулся с нездоровой работой строковых фунок в фоксе, захотелось кое-что переписать в рантайме. Пока руки не дошли, время не хватает, но в лбом случае толк какой-то будет
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
medstrax
По моему баловство весьма полезное.
Как занятие - возможно, как "конечный результат"... Ну мне, например, не надо И не думаю что целевая аудитория этого проекта будет сколь-нибудь значительной. Олдфаги уходят, софт переписывается, молодёжь на фокс, тем более FP*, ты уже калачом не заманишь (да и технологически ты FP* под "новые реалии" не подтянешь как бы ни старался - косметика одна).
medstrax
столкнулся с нездоровой работой строковых фунок в фоксе, захотелось кое-что переписать в рантайме.
А смысл трогать рантайм, если как раз для этого придуманы fll? "Потрогав" рантайм в этой части ты с большой долей вероятности чего-нить где-нить сломаешь (я тя уверяю, вовсе не от "тупости" там все эти многочисленные "копирования строки туда-сюда" сделаны - это по сути защита). И так в определённых случаях можно "дописаться" до C005 - а убери ты "лишние защиты" - и их число (сбоев т.е.) заметно возрастёт...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: FoxPro for Windows 2.6.1
foxygenex
Автор

Сообщений: 9
Дата регистрации: 08.12.2013
И все-таки напишу наверное еще пару демоутилит просто для показа доп.возможностей 2.6.1 и того как их задействовать в исходном коде. В одной будет представлен интерактивный построитель 2D графиков, в другой - аналог
VFP Grid'а со скроллированием содержимого БД.

2МБ exe-утилиты наверняка могут пригодиться для какой-нибудь простой переконвертации, переиндексации, наполнения DBF вне основного рантайма VFP в продакшне.

Некоторые патчи начал делать еще 9 лет назад и просто не хочется, чтобы наработанное ушло "в стол".
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

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

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