Hallo Leute,
ich habe zur Zeit ein problem, das meine UDF nicht genügend memory allozieren kann.
Error ist wie folgt:
Ich denke das passiert beim öffnen der Datei, bin mir allerdings nicht 100%ig sicher.
Der Quellcode ist eine modifizierte Variante von DJ Baselord.
[autoit]Func _TCPSendFile($sFile,$sPath,$sIP, $name ,$iPort = 10001, $iSleep=100,$iPartsize=8192)
TCPStartup()
;open and read the file into $hFileRead
$hFile = FileOpen($sFile,16)
$hFileRead = FileRead($sFile)
FileClose($hFile)
;calc filesize
$iFilesize = BinaryLen($hFileRead)
;if filesize is 0 return error
If Not BinaryLen($hFileRead) Then Return SetError(2,0,0)
;try to connect to server until it is successful, log the results
Do
$iConnectedSocket = TCPConnect($sIP,$iPort)
If $iConnectedSocket > 0 Then
; FileWriteLine($log, "["&$date&" "&$time&"] Event: Connection established.")
Else
; FileWriteLine($log, "["&$date&" "&$time&"] Error: Connection could not established errorcode is: "& @error)
MsgBox(0,"Connect Socket","Error during establishing connection")
EndIf
Sleep(1000)
Until $iConnectedSocket > 0
;search from the right of the filename and cut before first backslash (from the right side)
$sFile = StringTrimLeft($sFile,StringInStr($sFile,"\",-1,-1))
;loop which transfer the files and informations
Do
;send informationes over the connected socket, seperated by Chr(3)
$TCPSend = TCPSend($iConnectedSocket,@IPAddress1 &Chr(3)& @ComputerName &Chr(3) & "Transfer" & Chr(3) & "File" & Chr(3) & $sPath & Chr(3) & $sFile & Chr(3) & $iFilesize&Chr(3))
Sleep(100)
Until $TCPSend > 0
;MsgBox(0,"TCPSend",@IPAddress1 &Chr(3)& @ComputerName &Chr(3) & "Transfer" & Chr(3) & "File" & Chr(3) & $sPath & Chr(3) & $sFile & Chr(3) & $iFilesize&Chr(3))
;send the main file, which is stored in $hFileRead in the size of $iPartsize*8
Do
$TCPSend = TCPSend($iConnectedSocket,BinaryMid($hFileRead,1,$iPartsize*8))
;$hFileRead is the remainder which wasn´t transfered
$hFileRead = BinaryMid($hFileRead,1+$TCPSend)
;Sleep($iSleep)
Sleep(100)
;_GUICtrlStatusBar_SetText($StatusBar1, @TAB & "Send File", 0)
; If BinaryLen($hFileRead) >0 Then
;_GUICtrlStatusBar_SetText($StatusBar1, @TAB & ""&$name&@TAB & Round(($iFilesize/BinaryLen($hFileRead)))&"%", 1)
; Else
;_GUICtrlStatusBar_SetText($StatusBar1, @TAB & ""&$name&@TAB &"100%", 1)
; EndIf
Until BinaryLen($hFileRead) <= 0
TCPCloseSocket($iConnectedSocket)
; FileWriteLine($log, "["&$date&" "&$time&"] Eregnis: Client: "&@ComputerName&" hat die Datei "&$sFile&" erfolgreich an den Server: "&$sIP&"übertragen.")
[/autoit][autoit][/autoit][autoit]TCPShutdown()
Return 1
EndFunc
Der Fehler tritt bei dateien größer 150 MB auf.
Ich bin für jede Hilfe dankar.
Gruß Ashitaka