Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Советы по переходу с VFP6.0SP5 на VFP8.0SP1 / 7 сообщений из 7, страница 1 из 1
20.08.2004, 13:47
    #32658952
Александр Третьяков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Советы по переходу с VFP6.0SP5 на VFP8.0SP1
Не давно перевел свой проэкт с VFP6.0SP5 на VFP8.0SP1. Хочу уважаемым колегам дать следующие советы (проблемы какие были с переходом и как их быстро решить).

1. Шрифты. С проэкте я ставил обэктам шрифт Times New Roman Cyr или Courier New CYR и т.д.. VFP8 не умеет автоматом их различать и поэтому если открыть форму или отчет в VFP8, он их заменит на default, короче будет не то что "хотел разработчик". Нужно было в VFP6.0 ставить Times New Roman, Courier New и т.д. БЕЗ Cyr или CYR!!!! Для правки был написан следующий скрип

*Заміна в формах і отчетах шрифта на інший

CLEAR
myStartDir = 'e:\buhnet\'

public oldstr,newstr

oldstr='Times New Roman CYR'
newstr='Times New Roman'

DO _chenge_all_dir WITH myStartDir

*-----------------рекурсивна процедура-------------------
PROCEDURE _chenge_all_dir
PARAMETER myDir
LOCAL i,n
LOCAL ARRAY arrFile(64000)
n = ADIR(arrFile, myDir+'\*', 'D')
FOR i = 1 TO n
*? arrFile(i,5)
*пошук піддиректорій
if (arrFile(i,5)='....D')
if AT('.',arrFile(i,1))=0
DO _chenge_all_dir WITH (myDir +'\'+arrFile(i,1))
endif
endif
*пошук файлів
if arrFile(i,5)='.A...'
do case
case AT('.FRX',arrFile(i,1))>0
DO _chenge_file1 WITH myDir+'\',arrFile(i,1)
case AT('.SCX',arrFile(i,1))>0 or AT('.VCX',arrFile(i,1))>0
DO _chenge_file2 WITH myDir+'\',arrFile(i,1)
endcase
endif
ENDFOR
ENDPROC
*------------------------------------------------


*---------------процедура заміни стрічок-------------------
PROCEDURE _chenge_file1
PARAMETERS chDir,chFile
use (chDir+chFile)
Scan
If oldstr$Fontface
? chDir+chFile
Replace Fontface With Strtran(Fontface,oldstr,newstr)
Endif
Endscan
use
ENDPROC
*--------------------------------------------

*---------------процедура заміни стрічок-------------------
PROCEDURE _chenge_file2
PARAMETERS chDir,chFile
use (chDir+chFile)
Scan
If oldstr$Properties
? chDir+chFile
Replace Properties With Strtran(Properties,oldstr,newstr)
Endif
Endscan
use
ENDPROC


не судите строго, но рабатае , вызываеш для все типов таких шрифтов.

2. SQL- запросы не работают, надо с начале проэкта написать:
SET ENGINEBEHAVIOR 70

3. Отчеты как-то нетак печатают
Открываеш каждый отчет в VFP8 в меню Report Printer Environment забираеш галочку.
Поставить в каждом отчете TTOPTION=1 (там стоит теперь TTOPTION=3 и шрифты заменяться на зашитые в принтер, правда и печатает быстро, но не всегда кирилицей :)). Для этого написан скрип

CLEAR
myStartDir = 'e:\buhnet\'

public oldstr,newstr

oldstr='TTOPTION=3'
newstr='TTOPTION=1'

DO _chenge_all_dir WITH myStartDir

*-----------------рекурсивна процедура-------------------
PROCEDURE _chenge_all_dir
PARAMETER myDir
LOCAL i,n
LOCAL ARRAY arrFile(64000)
n = ADIR(arrFile, myDir+'\*', 'D')
FOR i = 1 TO n
*? arrFile(i,5)
*пошук піддиректорій
if (arrFile(i,5)='....D')
if AT('.',arrFile(i,1))=0
? myDir +'\'+arrFile(i,1)
DO _chenge_all_dir WITH (myDir +'\'+arrFile(i,1))
endif
endif
*пошук файлів
if arrFile(i,5)='.A...'
do case
case AT('.FRX',arrFile(i,1))>0
DO _chenge_file1 WITH myDir+'\',arrFile(i,1)
? myDir+'\'+arrFile(i,1)
endcase
endif
ENDFOR
ENDPROC
*------------------------------------------------


*---------------процедура заміни стрічок-------------------
PROCEDURE _chenge_file1
PARAMETERS chDir,chFile
use (chDir+chFile)
Scan
If oldstr$Expr
Replace Expr With Strtran(Expr,oldstr,newstr)
Endif
Endscan
use
ENDPROC
*--------------------------------------------


3. Проблема с Иконками. С 8 проэктов в двух была. Поясню конкретнее. Есть иконка проэкта (нормальная!!!!), делаеш build проэкта и когда запускаеш, а иконки нет, вместо нее значок винды, притом для любой иконки. Решаеться созданием нового проэкта поверх старого, добавляеш в него класы, формы, отчеты и т.д. и ставиш туже иконку и все работает.

4. Codepage 1252
По умолчанию 6- ср1251, а 8 -1252
Поэтому пришлось включить в проэкт файлы Foxpro.int и Config.fpw, а в нем написать CODEPAGE=1251 (програмно не нашел как переключить кодовую страницу)

5. Раньше игрался с файлами ресурсов, теперь не работает (ну и бог с ним), делал для того чтобы забрать значек принтера если человеку можно смотреть отчет, а печатать нельзя.

if m.lndruk=0
* Запоминаю старый файл ресурсов
LOCAL lcResource
lcResource=SYS(2005)
SET RESOURCE TO NoPrint.dbf
* Выполняю отчет
report form cl_prih noconsole to NUL preview
SET RESOURCE TO (m.lcResource)
else
report form cl_prih preview
endif


6. Масивы
Теперь слово DIMENSION забрали с лексикона и заменили на Array

раньше я писал

Public DIMENSION a[2],DIMENSION b[5]
то теперь надо

public array a[2],b[5]



P.S. Еще раз не судите строго это те проблемы с которыми столкнулся я.
...
Рейтинг: 0 / 0
20.08.2004, 18:24
    #32659758
vklepko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Советы по переходу с VFP6.0SP5 на VFP8.0SP1
А я слышал не очень хорошие отзывы после перехода.

P.S.
Не забудьте SET TABLEVALIDATE TO 0
...
Рейтинг: 0 / 0
20.08.2004, 19:31
    #32659839
Александр Третьяков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Советы по переходу с VFP6.0SP5 на VFP8.0SP1
vklepko
Не знаю, пока проблем нет, но на 6 тоже иногда у меня писало "exeption code C000005", замедления работы вообще не заметил, правда у меня связка MSSQL2K-FoxPro. поэтому возможно и нет тормозов. Я долго не переходил, пропустил 7, пропустил 8, а перед 9 надумал переходить (начал часто работать с ActiveX и грид в 8 получше). Я месяц тому перешел с MSSQL7.0 на MSSQL2K тоже читал что MSSQL2K более тормозной, а не скажите у меня скорость возросла раза в 2-3. Поэтому и решил перейти с 6 на 8, врода как даже быстрее работает.

А про SET TABLEVALIDATE TO 0 не знал, не знал .... наверное потому что нет у меня ни локально ни глобально таблиц, все беру с сервера с помощью хранимых процедур. А другим должно пригодиться

7. SET TABLEVALIDATE TO 0 (от vklepko )
...
Рейтинг: 0 / 0
23.08.2004, 09:26
    #32660615
Aijik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Советы по переходу с VFP6.0SP5 на VFP8.0SP1
1. Шрифты. С проэкте я ставил обэктам шрифт Times New Roman Cyr или Courier New CYR и т.д... рабатает , вызываеш для все типов таких шрифтов.
Это следствие недостатков архитектуры. Все было бы проще, если бы контролы изначально реализовывались на субклассах базовых классов VFP, как, по-идее, и надо было делать с самого начала. При этом для проведедния описанных массовых изменений, Вам бы потребовалось изменить шрифт всего лишь нескольких классов контролов, лежищих в корне иерархии класссов проекта, всё остальное изменилось бы автоматически по наследованию.
ЗЫ На такое народ уже нарывался в VFP 8 Beta, когда фокс некорректно проставлял FontCharset и глючила кириллица. Те, кто субклассированием не пользовался - тоже такие скрипты писали


2. SQL- запросы не работают, надо с начале проэкта написать:
SET ENGINEBEHAVIOR 70
Нет, как раз-таки теперь они правильно работают, в соответствии со стандартами SQL


3. Проблема с Иконками. С 8 проэктов в двух была. Поясню конкретнее. Есть иконка проэкта (нормальная!!!!), делаеш build проэкта и когда запускаеш, а иконки нет, вместо нее значок винды, притом для любой иконки. Решаеться созданием нового проэкта поверх старого, добавляеш в него класы, формы, отчеты и т.д. и ставиш туже иконку и все работает.
Всё, опять же, проще. Это известный баг VFP8. Иконка исчезает при заполненном Version Info проекта. Лечится прямым присвоением _SCREEN.Icon в коде.


3. Отчеты как-то нетак печатают
По этому поводу сюда:
Проблемы с отчетами в VFP 8


4. Codepage 1252
По умолчанию 6- ср1251, а 8 -1252
Поэтому пришлось включить в проэкт файлы Foxpro.int и Config.fpw, а в нем написать CODEPAGE=1251 (програмно не нашел как переключить кодовую страницу)
По-умолчанию 1252 стало еще в VFP7, а вот Foxpro.int стал не нужен еще в VFP6
...
Рейтинг: 0 / 0
26.08.2004, 13:43
    #32666652
Александр Третьяков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Советы по переходу с VFP6.0SP5 на VFP8.0SP1
8. CDOW() W2KSRUS+SP4, W2KPRUS+SP4

6 возвращает
в среде Monday
в ехе Monday

8 возвращает
в среде Monday
в ехе Понедельник
...
Рейтинг: 0 / 0
26.08.2004, 14:02
    #32666716
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Советы по переходу с VFP6.0SP5 на VFP8.0SP1
Александр Третьяков8. CDOW() W2KSRUS+SP4, W2KPRUS+SP4

6 возвращает
в среде Monday
в ехе Monday

8 возвращает
в среде Monday
в ехе Понедельник
Вас интересует почему или как это побороть?
Если почему - то в ехе используется билиотека исполнения, переводящая корректно все на русский (а в среде исполнения она не используется и поддержки Русского интерфейса там нет по определению)...

Как с этим бороться? Тут много вариантов - я использую номер дня а затем из массива пишу по Русски :)

Good luck!
...
Рейтинг: 0 / 0
28.08.2004, 16:49
    #32669946
Александр Третьяков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Советы по переходу с VFP6.0SP5 на VFP8.0SP1
Спасибо Sergey Ch, я так и подумал и поэтому перешел тоже на номер дня недели, а про CDOW() и этот топик в часности создал для того чтобы тот кто переходит с 6 на 8 не нарвался на "подводные" камни уже в процесе использования, а убрал их еще в начале.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Советы по переходу с VFP6.0SP5 на VFP8.0SP1 / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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