Description
-
Fires during file sending or receiving.
Syntax
-
Private Sub
object_Progress64(PositionLo, PositionHi,
TotalLo, TotalHi)
The Progress64 Event syntax has these parts:
| object |
A wodFtpDLX
object. |
| PositionLo |
A Long value. Lower long value
of 64bit integer for current transfer position. |
| PositionHi |
A Long value. Higher long
value of 64bit integer for current transfer position. |
| TotalLo |
A Long value. Lower long value
of 64bit integer for total number of bytes that should be
transferred. |
| TotalHi |
A Long value. Higher long
value of 64bit integer for total number of bytes that should be
transferred. |
Remarks
-
This event can be used for monitoring file transfers. It
is fired during file transfer started by GetFile or
PutFile
methods. It will be fired several times, depending on your
network speed (thus length of packets sent/received), file
size, or something else. There is no default rule on exact
number of times it will be fired. Once transfer is
finished, Position argument will
have the same value as Total
argument.
Once transfer is finished, Position argument will have the
same value as Total argument. As long as file size does fit
in 32bit long integer,
Progress event
will be fired instead of this event. If position or total arguments
does not fit anymore in 32bit long integer, Progress64 event will be
fired. Depending on the programming language you use, you will need
to convert these values to appropriate int64 integer.
Also, once file transfer is finished Done event will
be fired.
NOTE: it is possible that Position or Total
values become negative - it is because unsigned values are used, but
VB (and other environments) expect to see signed values. If this
happens, we suggest you use following code (VB example):
- Private Const MAX_UNSIGNED = 4294967296#
' HEX 1,0000,0000
Private Sub Ftp1_Progress(ByVal Position As Long, ByVal Total As
Long)
Ftp1_Progress64 Position, 0, Total, 0
End Sub
Private Sub Ftp1_Progress64(ByVal PositionLo As Long, ByVal
PositionHi As Long, ByVal TotalLo As Long, ByVal TotalHi As Long)
If TotalLo <> 0 And TotalHi <> 0 Then
Dim pos As Double
Dim tot As Double
pos = PositionLo
If (pos < 0) Then pos = pos + MAX_UNSIGNED
tot = TotalLo
If tot < 0 Then tot = tot + MAX_UNSIGNED
If TotalHi <> 0 Then
pos = pos + PositionHi *
MAX_UNSIGNED
tot = tot + TotalHi *
MAX_UNSIGNED
End If
Debug.Print "Progress " & pos & "/" & tot
Else
Debug.Print "Progress " & PositionLo & "/" &
TotalLo
End If
End Sub
|