Posts: 795
Threads: 136
Joined: Feb 2009
Hi Gintaras, hi all
my backup program have some flaws i want to correct with QM
1. i backup in zip file, but the backup is done first in empty file, then filled. I'd like to rename the
file after it has been fully created, i.e it's released from backup program access. I messe with the setfile stuff,
but not very efficient. Idea?
2. In this purpose, what is the good file trigger setting, regarding the status trigger (modified etc).
3. i tried to implement my own backup routine, but the qmzip examples failed in my macro.
ref qmzip qmzip_def
str zipfilename="u:\test.zip"
str zipdir="q:\jj"
HZIP zipfile=CreateZip(zipfilename, 0,ZIP_FILENAME);
error => Error in qmzip_def: unexpected character
ZipAdd(zipfilename,zipdir, 0,0,ZIP_FOLDER);
the last one fails saying it needs 6 parameters, not 5. Stuck there.
Thanks.
Posts: 12,087
Threads: 142
Joined: Dec 2002
Function WaitForFileReady
;/
function $_file [^waitmax]
;Waits until file exists, is not empty, and is not locked.
;waitmax - max number of seconds to wait. 0 is infinite.
if(waitmax<0 or waitmax>2000000) end ES_BADARG
opt waitmsg -1
int wt(waitmax*1000) t1(GetTickCount)
Dir d
rep
,if d.dir(_file) and d.FileSize
,,__HFile f.Create(_file OPEN_EXISTING); err
,,if(f) f.Close; break
,
,if(wt>0 and GetTickCount-t1>=wt) end "wait timeout"
,0.5
;info: the d.FileSize is for Firefox, which at first creates empty file, then downloads to other file...
2. Modified.
3. Why don't use zip?
Posts: 795
Threads: 136
Joined: Feb 2009
1. will test, ty. BTW, the backup program is not related to firefox, but it might work too.
2. will test too
3. what "zip" are you exactly talking about? I tried to use QM class, is there another way?
Posts: 12,087
Threads: 142
Joined: Dec 2002
str files=
;file1
;file2
;...
zip "$desktop$\file.zip" files
Posts: 12,087
Threads: 142
Joined: Dec 2002
2. Maybe "Added" is better in this case.
Posts: 795
Threads: 136
Joined: Feb 2009
Hmm, for the zip command, i only found qmzip searching in macros, and did not think about help file.
Of course, it will fit my needs perfectly.
BTW, unrelated but boring too.
I trigger a macro in firefox on middle mouse click
Acc+ AccStuff.FromMouse
POINT+ _m; xm _m
a.Role(_s)
sel _s
case "some" : mac "amac"
case "PAGETAB" :err; ret
case else mac "gotoit"
macro gotoit (menu)
....
....
something to do :mac "doit"
macro doit
here i'd like to access global variable AccStuff defined in first macro,
but i can't. Why?
Posts: 12,087
Threads: 142
Joined: Dec 2002
Never use global Acc variables. It is a COM object, and most COM objects work only in single thread. Also need to release the object, but global variable will not do it automatically when need.
Posts: 795
Threads: 136
Joined: Feb 2009
OK, i suspected that, but wanted to be sure. I would have simplified things.
Back to the zip thing, zip macro is useful, but too restricted.
What is the correct code to add files in zip?
function event $name [$newname]
event: 1 added, 2 removed, 4 renamed, 8 modified
ref qmzip qmzip_def
int hzip
sel event
case [1]
_s=name
hzip=OpenZip(_s.unicode 0 ZIP_FILENAME)
ZipAdd(hzip,"src1.txt", "u:\\src1.txt",0,ZIP_FILENAME)
Error in Macro3: expected 6 to 6 arguments, not 5. GRRRRRRRRR!!!!!!!!!!!!!
CloseZip(hzip);
Posts: 12,087
Threads: 142
Joined: Dec 2002
I don't recommend using qmzip.dll directly. You don't know all the details. Somewhere I posted the C header file, but not everything is documented there. Also, qmzip.dll will not be installed with QM in the future.
In your code, the last argument 'level' is missing. I don't remember what it is, try 0. Also, in QM don't use \\ in file paths. Also, ZipAdd fails if opened with OpenZip. Need to create new file with CreateZip. Cannot add more files to an existing zip file.
Posts: 795
Threads: 136
Joined: Feb 2009
OK, i'll play more then. Will you thne implement better zip manipulation routine in
forecoming versions? If you could handle rar archives too, it'll be great.
Posts: 12,087
Threads: 142
Joined: Dec 2002
Quote:Will you thne implement better zip manipulation routine in
forecoming versions? If you could handle rar archives too, it'll be great.
no
Posts: 795
Threads: 136
Joined: Feb 2009
OK, i'll try to use the command line version of 7-zip then.
Posts: 795
Threads: 136
Joined: Feb 2009
OK, played with your function.
Is this stupid code i tried have any chance to fail under some circumstances, or can I use it
too safely for that purpose too?
function event $name [$newname]
event: 1 added, 2 removed, 4 renamed, 8 modified
str NewName Ext
Dir d
long _size
sel event
case [1,8]
d.dir(name)
WaitForFileReady(name)
rep
_size=d.FileSize
out _size
if(_size>0) break
....
do something when file is created
Posts: 12,087
Threads: 142
Joined: Dec 2002
With WaitForFileReady don't need rep d.FileSize. It waits itself. I cannot say whether this code always will work. Need to test.
|