|
| Iniciado por guest, 28,oct. 2015 17:29 - 18 respuestas |
| |
| | | |
|
| |
| Publicado el 28,octubre 2015 - 17:29 |
Hi. I have a 2GB file. Im using fsplit to divide it on 10MB packages size to send it to another server (from a 32 bits machine). I send all the packages and receibe them in the server machine (64 bits machine). All perfect.
My issue is using fmerge on server to compose again the complete file. It ever say me the error code (81862) "The available disk space is not sufficient", but i have free 50 GB, and the server is NTFS formated.
My source computer is a 32 bits machine, and my target server is a 64 bit computer with 16 GB RAM. I have tried the 32 and 64 bits program version (thinking maybe about a 32 bits program limits), but nothing change.
I tried WD19 and WD20.
Thanks
Rubén |
| |
| |
| | | |
|
| | |
| |
| Publicado el 29,octubre 2015 - 10:26 |
Hi Ruben Well, in first place I think you overstimate what fsplit function does! It just split one file, "Myfile.bin" of 2811 bytes, into 3 files: myfile.bin.001 1000 bytes myfile.bin.002 1000 bytes myfile.bin.003 811 bytes
So, are the size of the created files OK?
If fsplit did his job, and the files are OK, forget about it, and about the Source Computer, the windev version, and the number of bits where they were created. What i Would try is to join the files in another computer. Maybe there is some issue (disk related or not) in this computer.
If the above didn't work, I would check the sintax you used.
(Result) = fMerge(FileName) Rember that FileName is the full path, without the extension. for example: sFile is string = fSelect("", "", "", "All the files (*.*)" + TAB + "*.*", "*.*") sFileName is string = fExtractPath(sFile,fDrive+fDirectory+fFileName) fMerge(sFileName)
If the sintax is ok, try to join fewer files (by renaming, for example, the 3rd file so only 001 and 002) maybe there are some limits/issue with fmerge.
Regards, José Antonio. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 29,octubre 2015 - 12:26 |
Hi. Thank you for your response.
The fsplit part is working ok. It generate 207 files (.001 to .207). I send a MD5 hash with each part to server. All filles parts match the hash.
The issue is when i want use fmerge to obtain again the original huge file.
The application was working for the last 6 months. The error began when the file passed the 2 GB size.
Maybe the fmerge function (write to file) has a 2 GB limit, and the fsplit function (read from file) doesn't it?
Rubén |
| |
| |
| | | |
|
| | |
| |
| Publicado el 29,octubre 2015 - 13:09 |
I don't know if the problem of fmerge is the 2 GB but in windev a lot of stuff is limited to 2 GB maybe fmerge have the same problem.
http://doc.windev.com/en-US/… |
| |
| |
| | | |
|
| | |
| |
| Publicado el 29,octubre 2015 - 13:15 |
Hi Paulo. I have tried with a 64 bits application version to try bypass 32 bits limits. The same result.
Thank you
Rubén |
| |
| |
| | | |
|
| | |
| |
| Publicado el 29,octubre 2015 - 13:44 |
| Is this a file that is defined in your Analysis? |
| |
| |
| | | |
|
| | |
| |
| Publicado el 29,octubre 2015 - 14:20 |
Is the file defined in the Analysis as being over 2gig? There is a check box for that. Also is the operating system Windows and is the disk formated NTFS? |
| |
| |
| | | |
|
| | |
| |
| Publicado el 29,octubre 2015 - 14:51 |
Hi. The file is a external file in ZIP format. I must send a copy of this file to another server. I divide the file with fsplit and send the chunks by sockets to the other machine, then i join again de chunks in the huge file with fmerge. (I tried the process in my development machine running fsplit and fmerge)
The disk partitions in both machines are NTFS (allow file sizes bigger to 2 GB). The issue is only with fmerge.
Sample code:
PROCEDURE ProcessFile()
fMakeDir(fExeDir() + "\Temp")
fDelete(fExeDir() + "\Temp\*.*")
IF fSplit("C:\BSS\Cliente\2015\10\30\Datos.zip",10000000,fExeDir()+ "\Temp\Datos.zip") = 0 THEN Info("Error partiendo el fichero:" + ErrorInfo(errMessage)) ELSE
IF fMerge(fExeDir() + "\ emp\Datos.zip",fExeDir() + "\ emp\DatosMerged.zip",fDeleteDestination) = 0 THEN Info("Error en la fusion: " + ErrorInfo(errMessage)) ELSE Info("Resultado ok") END END
Thank you
Rubén |
| |
| |
| | | |
|
| | |
| |
| Publicado el 29,octubre 2015 - 21:26 |
Hi Ruben, you have certainly reached the 2Gb limits. I have been looking on the fWrite function, which has that limit, and which is probably called through the function you are using for the merge.
You might give a try using the zip family functions, as it might resolve you issue.
Michel.
On Thu, 29 Oct 2015 11:26:00 +0100, "ÿÿÿÿÿÿÿÿÿÿ" <priv!t7r56M0r95+2p51s6+s4@news.pcsoft> wrote:
Hi. Thank you for your response.
The fsplit part is working ok. It generate 207 files (.001 to .207). I send a MD5 hash with each part to server. All filles parts match the hash.
The issue is when i want use fmerge to obtain again the original huge file.
The application was working for the last 6 months. The error began when the file passed the 2 GB size.
Maybe the fmerge function (write to file) has a 2 GB limit, and the fsplit function (read from file) doesn't it?
Rubén |
| |
| |
| | | |
|
| | |
| |
| Publicado el 30,octubre 2015 - 03:47 |
Hi
FYI:
I tested OK by using fSplit a 3GB file with 1MB/split but found no response by using fMerge ie no error returned and no output at all and I guess it's the fMerge limit (up to 2GB).
I hope the upcoming wx21 could do the fMerge right.
Cheers
King |
| |
| |
| | | |
|
| | |
| |
| Publicado el 30,octubre 2015 - 06:51 |
I get same error
i split a 4gb files to 10MB each without problem.
when try merge using fmerge() , it give error if there are more than 204 files.
same problem on 32bit or 64bit |
| |
| |
| | | |
|
| | |
| |
| Publicado el 30,octubre 2015 - 13:06 |
Hi
Considering that the write function has a STATED limit of 2 GB, and that there is a good chance that any other function of the fxxx variety is working through it, I woudl say that contacting pcsoft support is your only chance...
You can try doing a loop with fAddBuffer instead, to see if that one works better, but I'm not very hopeful
Best regards |
| |
| |
| | | |
|
| | |
| |
| Publicado el 30,octubre 2015 - 13:44 |
Thank you Fabrice. Yesterday i opened a issue report with PCSoft about fmerge.
I will try to split and merge the file by other method.
Thank you
Rubén |
| |
| |
| | | |
|
| | |
| |
| Publicado el 30,octubre 2015 - 14:01 |
Hi,
If you let the ZIP (7Zip for example) split up your files on the client side, send those over to the server and also let the 7ZIP combine the parts back to 1 ZIP.
Danny |
| |
| |
| | | |
|
| | |
| |
| Publicado el 30,octubre 2015 - 15:54 |
| You can try using zipSplit/zipMerge functions with only a few changes in your code. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 30,octubre 2015 - 17:52 |
Thank you, i will try it.
Rubén |
| |
| |
| | | |
|
| | |
| |
| Publicado el 31,octubre 2015 - 02:20 |
Hi. You can split the files with windev, and join them with the copy /b command. The sintax is copy /b source1 + source2 [+ ...] destinationfile
example: copy /b myfile.bin.001 + myfile.bin.002 + myfile.bin.003 myfile.bin
Regards, José Antonio. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 31,octubre 2015 - 03:57 |
Hi,
from fwrite() help http://help.windev.com/en-US/… <Size to Write> Size (in bytes) that must be written into the external file (up to 2 GB).
you cannot write once more than 2gb , if you want more than 2gb then you just have to open and append it
here a example function you can use , hope will help
-------------------------------------------------------------------------------------------------------
PROCEDURE xfMerge(LOCAL Arg_Source is string , LOCAL Arg_Target is string)
M_fcnt is int = 0
m_File, m_FileList are strings m_FileList = fListFile(Arg_Source + ".*") fDelete(Arg_Target) fClose(fCreate(Arg_Target))
FOR EACH STRING m_File OF m_FileList SEPARATED BY CR M_buff is Buffer
M_buff = fLoadBuffer(m_File)
m_FileID is int = fOpen(Arg_Target,foAdd+foReadWrite) IF m_FileID <> -1 THEN // Write into this file IF fWrite(m_FileID, M_buff) = -1 THEN Error("error write (, " + m_File + " )" , HErrorInfo()) BREAK END END
fClose(m_FileID)
M_fcnt += 1 END
RESULT M_fcnt
------------------------------------------------------------------------------------------------------- |
| |
| |
| | | |
|
| | |
| |
| Publicado el 31,octubre 2015 - 23:06 |
Thank you, i will try 
Rubén |
| |
| |
| | | |
|
| | | | |
| | |
|