Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Каким образом работает алгоритм вызова из prg ??? / 25 сообщений из 42, страница 1 из 2
17.11.2008, 08:54
    #35656991
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
Привет!!!!

Не могу никак понять

есть prg в нем бонально просто

for i = 1 to adir(laF, '\\SERVER\ШАРА\filezip_??????????.zip')
LsNaim=laF[i, 1]

do form rearch with LsNaim
endfor


в форме rearch - происходит разархивирование

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

как паузу поставить или что то в этом духе
...
Рейтинг: 0 / 0
17.11.2008, 08:57
    #35656996
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
typik,

В данной постановке задачи логичнее всего посоветовать форму rearch сделать модальной. Тогда цикл не будет продолжаться до тех пор, пока форма не скроется (.Hide)
...
Рейтинг: 0 / 0
17.11.2008, 09:14
    #35657013
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
не помогает ставил уже, хвтает тока первый файл и все, потом форма закрывается
...
Рейтинг: 0 / 0
17.11.2008, 09:16
    #35657016
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
такое ощущение что цикл бежит не зависимо от формы
...
Рейтинг: 0 / 0
17.11.2008, 09:24
    #35657031
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
typikне помогает ставил уже, хвтает тока первый файл и все, потом форма закрывается

А форма случайно не AsTopLevel?
Если ShowWindow = 2 (AsTopLevel), то модальность игнорируется.

А зачем вообще нужна форма? Вынеси распаковку в процедуру и вызывай ее.
...
Рейтинг: 0 / 0
17.11.2008, 09:36
    #35657048
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
Точно
...
Рейтинг: 0 / 0
17.11.2008, 09:45
    #35657070
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
Вот блин я использую класс например MyClass

как мне его объявить то в prg чтоб я мог с ним работать
...
Рейтинг: 0 / 0
17.11.2008, 09:50
    #35657079
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
typikВот блин я использую класс например MyClass

как мне его объявить то в prg чтоб я мог с ним работать

Класс где? Если в VCX то так:
Код: plaintext
1.
2.
loMyObj = NewObject('MyClass', 'MyLib.vcx')
...
loMyObj.SomeMetod()
...
Рейтинг: 0 / 0
17.11.2008, 09:53
    #35657084
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
спасибо
...
Рейтинг: 0 / 0
17.11.2008, 10:23
    #35657147
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
блин тож не получается....

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

заранее благодарствую
...
Рейтинг: 0 / 0
17.11.2008, 11:02
    #35657244
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
Посмотрел. Зачем столько макроподстановок

Для полного пути лучше использовать функцию ADDBS() и кавычки поубирай:
Код: plaintext
p1=ADDBS(service_1.pcopy_out1)+LssFileNaim

Это
Код: plaintext
1.
2.
3.
	    pinfile=ALLTRIM(service_1.rabcat)+"\InFile"
...
              IF DIRECTORY(&ppinfile) 
Пишется так:
Код: plaintext
1.
2.
3.
	    pinfile=ADDBS(service_1.rabcat)+"\InFile"
...
              IF DIRECTORY(ppinfile) 

Вобщем избавляйся для начала от всех & и спрашивай конткретно: строка кода такая-то, ошибка такая-то.
...
Рейтинг: 0 / 0
17.11.2008, 11:03
    #35657249
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
Опечатка у меня в:
Код: plaintext
pinfile=ADDBS(service_1.rabcat)+"\InFile"
Надо
Код: plaintext
pinfile=ADDBS(service_1.rabcat)+"InFile"

ADDBS() пробелы в конце убирает и "\" добавляет если его нет.
...
Рейтинг: 0 / 0
17.11.2008, 11:06
    #35657253
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
И это:
Код: plaintext
LoMyObj=NEWOBJECT('shm_zip2','c:\posting\class\shm_zip2.vcx')

можно лучше так писать
Код: plaintext
LoMyObj=NEWOBJECT('shm_zip2','shm_zip2')
Только проследить надо чтобы в SET PATH стоял путь до папки где shm_zip2.vcx лежит.
...
Рейтинг: 0 / 0
17.11.2008, 11:15
    #35657279
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
Угу сейчас попробую
...
Рейтинг: 0 / 0
17.11.2008, 11:20
    #35657297
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
Рекомендации поправил....

В том то и дело, что ошибок не пишет т.к. их нет,
у меня в папке VfpIn скажем есть 2 архива filezip_1311081544.zip и filezip_1411081545.zip

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

т.е. один файл и распаковывается... а второй не приделах

если я коментирую вызов класса и вообще просто хочу посмотреть то все в порядке месседж показывает что берутся 2 файла как и должно быть

при этом понять не могу почему так...
...
Рейтинг: 0 / 0
17.11.2008, 11:24
    #35657313
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
Вот причесал немного твой PRG
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
LOCAL p1,p2,p4,p5

IF !USED("service_1")
	USE service_1.dbf in  0 
ENDIF
loFSO = CREATEOBJECT('Scripting.FileSystemObject')

FOR i= 1  TO ADIR(laF,'c:\Posting\VfpIn\filezip_??????????.zip')
	LssFileNaim=laF(i, 1 )

	MESSAGEBOX(LssFileNaim)

	SELECT service_1

	p1=ADDBS(service_1.pcopy_out1)+LssFileNaim
	p2=ADDBS(service_1.path_out)
	p4=ADDBS(service_1.path_out)+"emailskarp.dbf"
	p5=ADDBS(service_1.path_out)+"emailskarp.fpt"

	pinfile=ADDBS(service_1.rabcat)+"InFile"
	poutfile=ADDBS(service_1.rabcat)+"OutFile"

	IF DIRECTORY(pinfile)
		&& Удаляем каталоги, т.к. zip чего ругается, если они есть
		loFSO.DeleteFolder(pinfile,.T.)
	ENDIF

	IF DIRECTORY(poutfile)
		loFSO1.DeleteFolder(poutfile,.T.)
	ENDIF

	IF FILE(p4)
		loFSO.DeleteFile(p4,.T.)
		loFSO.DeleteFile(p5,.T.)
	ENDIF

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
	If Empty(p2)
		return
	Endif

	LoMyObj=NEWOBJECT('shm_zip2','shm_zip2')

	LoMyObj.zipfile_name=p1
	LoMyObj.output_path=p2
	LoMyObj.output_mask="*.*"
	LoMyObj.xunzip()

	MESSAGEBOX("finish")
ENDFOR

Не запускал, но сразу возникают вопросы:
1. Ты уверен что service_1.pcopy_out1 это 'c:\Posting\VfpIn\'
2. Зачем удалять ADDBS(service_1.rabcat)+"InFile" и ADDBS(service_1.rabcat)+"OutFile" если они вроде как не используются.
...
Рейтинг: 0 / 0
17.11.2008, 12:11
    #35657481
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
За прическу спасибо огромное

Не запускал, но сразу возникают вопросы:
1. Ты уверен что service_1.pcopy_out1 это 'c:\Posting\VfpIn\'
да
2. Зачем удалять ADDBS(service_1.rabcat)+"InFile" и ADDBS(service_1.rabcat)+"OutFile" если они вроде как не используются.

не дело в том что в файле filezip_1311081500.zip там есть тоже OutFile и InFile и когда идет распаковка то вылетает сообщение вроде того что НЕ могу создать т.к. уже есть, приходится удалять....

а вот на счет того чтоб брал 2 и.т.д. архивов и распаковывал, все равно никак, берет один и все, хоть убей.... блин
...
Рейтинг: 0 / 0
17.11.2008, 12:33
    #35657575
Каким образом работает алгоритм вызова из prg ???
typik
а вот на счет того чтоб брал 2 и.т.д. архивов и распаковывал, все равно никак, берет один и все, хоть убей.... блин
ИМХО, это происходит из-за фрагмента
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
....
FOR i= 1  TO ADIR(laF,'c:\Posting\VfpIn\filezip_??????????.zip')
....
	SELECT service_1
...
p2=ADDBS(service_1.path_out)
....
If Empty(p2)
  return
Endif
....
ENDFOR
....
А вот почему р2 становится пустым на второй (и последующих) итерации - надо спросить у разработчика.... :-)
Либо service_1.path_out пишется пустая строка, либо происходит переход на конец файла, а затем Skip...
Надо просто пройтись дебаггером и проконтролировать когда и где меняется service_1.path_out...
...
Рейтинг: 0 / 0
17.11.2008, 12:35
    #35657581
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
Все происходит на этой строчке и дальше в класс

LoMyObj.xunzip()
...
Рейтинг: 0 / 0
17.11.2008, 12:42
    #35657604
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
в service_1.path_out это табличка, туда явно прописан путь и он нигде не меняется

загвоздка происходит при вызове LoMyObj.xunzip()

при этом в самом классе ну не нашел я ничего страшного,

а после просто все заканчивается и все , Деббагером смотрю, смотрел и не раз... и понять не могу что за ерунда
...
Рейтинг: 0 / 0
17.11.2008, 12:46
    #35657620
Каким образом работает алгоритм вызова из prg ???
typikВсе происходит на этой строчке и дальше в класс

LoMyObj.xunzip()
Таким образом, место вознкновения ошибки нашли :-)
Надо копать дальше, что происходит в xunzip()? Каким образом там поле service_1.path_out "обнуляется"? Скорее всего, либо происходит переход в конец файла service_1, либо для какой-то записи данное поле просто незаполнено...
...
Рейтинг: 0 / 0
17.11.2008, 12:51
    #35657642
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
сидел идел и решил попробовать

сделал так, все заработало, считал архивы которые лежат в папке в табличку и уже начал по скану идти по табличке

LOCAL p1,p2,p4,p5

IF !USED("service_1")
USE service_1.dbf in 0
ENDIF
loFSO = CREATEOBJECT('Scripting.FileSystemObject')

set deleted on
select filekarp
go top
scan
LssFileNaim=filekarp.naimfile

MESSAGEBOX(LssFileNaim)

SELECT service_1

p1=ADDBS(service_1.pcopy_out1)+LssFileNaim
p2=ADDBS(service_1.path_out)
p4=ADDBS(service_1.path_out)+"emailskarp.dbf"
p5=ADDBS(service_1.path_out)+"emailskarp.fpt"

pinfile=ADDBS(service_1.rabcat)+"InFile"
poutfile=ADDBS(service_1.rabcat)+"OutFile"

IF DIRECTORY(pinfile)
&& Удаляем каталоги, т.к. zip чего ругается, если они есть
loFSO.DeleteFolder(pinfile,.T.)
ENDIF

IF DIRECTORY(poutfile)
loFSO1.DeleteFolder(poutfile,.T.)
ENDIF

IF FILE(p4)
loFSO.DeleteFile(p4,.T.)
loFSO.DeleteFile(p5,.T.)
ENDIF

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
If Empty(p2)
return
Endif

LoMyObj=NEWOBJECT('shm_zip2','shm_zip2')

LoMyObj.zipfile_name=p1
LoMyObj.output_path=p2
LoMyObj.output_mask="*.*"
LoMyObj.xunzip()

MESSAGEBOX("finish")
ENDscan



к моему большому удивлению данная конструкция заработала

Если кто нибудь вдруг окинет взглядом предыдущую конструкцию, чтоб не воротить с таблицами, поделитесь опытом пожалуйста...
...
Рейтинг: 0 / 0
17.11.2008, 12:52
    #35657643
Каким образом работает алгоритм вызова из prg ???
typikв service_1.path_out это табличка, туда явно прописан путь и он нигде не меняется

загвоздка происходит при вызове LoMyObj.xunzip()

при этом в самом классе ну не нашел я ничего страшного,

а после просто все заканчивается и все , Деббагером смотрю, смотрел и не раз... и понять не могу что за ерунда
В классе может быть, например, что-то такое:
Код: plaintext
1.
2.
3.
4.
5.
if <условие>
  select service_1
  skip
  return
endif
Если, например, мы находимся на последней записи таблицы, то этот skip приведет нас на "фиктивную" запись, которой реально в таблице нет, но которая не генерирует EOF()... Вот у нее и будет пустое поле service_1.path_out...

Кстати, такое (переход на "фиктивную" запись) я делал в ДОСе для задания пустых значений в переменных, получаемых по gather...
...
Рейтинг: 0 / 0
17.11.2008, 12:53
    #35657647
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
Таким образом, место вознкновения ошибки нашли :-)
Надо копать дальше, что происходит в xunzip()? Каким образом там поле service_1.path_out "обнуляется"? Скорее всего, либо происходит переход в конец файла service_1, либо для какой-то записи данное поле просто незаполнено...

чтоб не лепить целыми кусками, в начале я привел во вложении там все.... и класс тоже

service_1.path_out - тут не при чем, это табличка и в ней 3 поля всего, которые в дальнейшем никак не меняются....
...
Рейтинг: 0 / 0
17.11.2008, 12:55
    #35657652
typik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом работает алгоритм вызова из prg ???
service_1.path_out я его сейчас вообще убрал и просто в переменные вписал реальные пути, все тоже самое
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Каким образом работает алгоритм вызова из prg ??? / 25 сообщений из 42, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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