Какого файла, на какие части. А вообщем, очевидно: 1) если дан размер части, писать соответствующими блоками в новые файлы 2) если дано число частей, тогда разделить размер файла на число частей, получить размер части и перейти к 1)
Great ну не совсем очевидно, хотя отчасти Вы правы, но если надо разбить текстовый файл из N строк на M частей по K строк.
Это невозможно. Начиная с vc2004 эту фишку отменили - мотивировали тем, что вирусы при переполнении буфера часто ей пользуются
Slaven в состав пакета www.masm32.com входит пример AsmCut мож чо найдеш.. Код (Text): ;*************************************************************** ;Author:Smallwaves ;Data:2001.11.14 ;Title:Asm cut evaluation using file-mapping ;Describle: ; This file describles how to cut and combine files using ; file-mapping,I did know it had some errors but although ; it was working very good by my test,So WHAT CAN I SAY?... ;Homepage: http://smallwaves.yeah.net(Chinese) ;CopyRight: (c)Smallwaves's asm studo 2001 ;***************************************************************** .386 .model flat,stdcall option casemap :none include \MASM32\INCLUDE\windows.inc include \MASM32\INCLUDE\user32.inc include \MASM32\INCLUDE\gdi32.inc include \MASM32\INCLUDE\kernel32.inc include \MASM32\INCLUDE\comctl32.inc include \MASM32\INCLUDE\comdlg32.inc include \MASM32\Macros\Macros.asm includelib \MASM32\LIB\user32.lib includelib \MASM32\LIB\gdi32.lib includelib \MASM32\LIB\kernel32.lib includelib \MASM32\LIB\comctl32.lib includelib \MASM32\LIB\comdlg32.lib DlgProc Proto :DWORD, :DWORD, :DWORD, :DWORD GetFileName Proto :dword, :dword CutFile Proto c :ptr, :dword .const IDD_DIALOGCUT equ 101 IDI_ICON1 equ 102 IDC_CUTFILENAME equ 103 IDC_SELECTCUT equ 104 IDC_CUTSIZE equ 105 IDC_CUT equ 106 IDC_COMBINEFILENAME equ 107 IDC_SELECTCOMBINE equ 108 IDC_COMBINE equ 109 IDC_STATIC1 equ 110 IDC_STATIC2 equ 111 IDC_STATIC3 equ 112 IDC_STATIC4 equ 113 RGB MACRO red, green, blue xor eax, eax mov al, blue ; blue rol eax, 8 mov al, green ; green rol eax, 8 mov al, red ; red ENDM .data szBuffer db MAX_PATH DUP (0) FilterStringCut db "All files(*.*)",0,"*.*",0,0 FilterStringCombine db "000 file(*.000)",0,"*.000",0,"All files(*.*)",0,"*.*",0,0 ofn OPENFILENAME {0} .data? hInstance HINSTANCE ? .code ;******************************************************************** Start: invoke InitCommonControls mov hInstance,FUNC(GetModuleHandle,NULL) invoke DialogBoxParam,hInstance,IDD_DIALOGCUT,NULL,Offset DlgProc,NULL invoke ExitProcess,NULL ;******************************************************************** DlgProc Proc hWnd:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD Local hBrush :dword Local rect:RECT Local LogBrush:LOGBRUSH mov eax,uMsg ;****************** .if eax == WM_CLOSE ;****************** invoke EndDialog,hWnd,NULL ;*************************** .elseif eax == WM_INITDIALOG ;*************************** invoke LoadIcon,hInstance,IDI_ICON1 invoke SendMessage,hWnd,WM_SETICON,ICON_SMALL,EAX invoke SetDlgItemInt,hWnd,IDC_CUTSIZE,1440,FALSE ;************************* .elseif eax==WM_ERASEBKGND ;************************* mov LogBrush.lbStyle,BS_SOLID RGB 85,160,124 mov LogBrush.lbColor,eax invoke CreateBrushIndirect,addr LogBrush mov hBrush,eax invoke GetClientRect,hWnd,addr rect invoke FillRect,wParam,addr rect,hBrush mov eax,TRUE ret ;******************************* .elseif eax == WM_CTLCOLORSTATIC ;******************************* invoke GetDlgCtrlID,lParam .if eax == IDC_STATIC1 || eax==IDC_STATIC2 ||eax==IDC_STATIC3 || EAX==IDC_STATIC4 RGB 255,255,0 invoke SetTextColor,wParam,eax RGB 85,160,124 INVOKE SetBkColor,wParam,eax invoke GetStockObject,NULL_BRUSH .else mov eax,FALSE ret .endif ret ;************************ .elseif eax == WM_COMMAND ;************************ mov eax,wParam .if eax == IDC_SELECTCUT invoke GetFileName,hWnd,addr FilterStringCut .if eax!=FALSE invoke SetDlgItemText,hWnd,IDC_CUTFILENAME,addr szBuffer .else .endif .elseif eax ==IDC_SELECTCOMBINE invoke GetFileName,hWnd,addr FilterStringCombine .if EAX!=FALSE invoke SetDlgItemText,hWnd,IDC_COMBINEFILENAME,addr szBuffer .else .endif .ELSEIF EAX==IDC_CUT invoke EnableWindow,lParam,FALSE invoke GetDlgItemInt,hWnd,IDC_CUTSIZE,NULL,TRUE INVOKE CutFile,addr szBuffer,eax INVOKE EnableWindow,lParam,TRUE .ELSEIF EAX==IDC_COMBINE invoke EnableWindow,lParam,FALSE ;invoke CutFile,addr szBuffer,0 invoke EnableWindow,lParam,TRUE .endif .else mov eax,FALSE ret .endif mov eax,TRUE ret DlgProc Endp ;******************************************************************** GetFileName proc hWnd:dword,lpFilterString:dword mov ofn.lStructSize,sizeof ofn push hWnd pop ofn.hWndOwner push hInstance pop ofn.hInstance mov eax,lpFilterString mov ofn.lpstrFilter,eax mov ofn.lpstrFile,offset szBuffer mov ofn.nMaxFile,MAX_PATH mov ofn.Flags,OFN_FILEMUSTEXIST OR OFN_PATHMUSTEXIST\ OR OFN_LONGNAMES OR OFN_EXPLORER OR OFN_HIDEREADONLY invoke GetOpenFileName,addr ofn ret GetFileName endp ;******************************************************************** CutFile Proc c lpFileName :ptr, dwParam :dword Local lpFile [MAX_PATH] :BYTE invoke lstrcpy, addr lpFile, addr lpFileName ret CutFile endp ;******************************************************************** end Start ;с этого слова заканчивается код программы