📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
SD: TSaveDialog;
Button1: TButton;
Bevel1: TBevel;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
start: TEdit;
size: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
function ExtFileSeek(Handle: Integer; const Offset: Int64; Origin: Integer): Int64;
var
Form1: TForm1;
implementation
{$R *.dfm}
function ExtFileSeek(Handle: Integer; const Offset: Int64; Origin: Integer):Int64;
begin
Result := Offset;
Int64Rec(Result).Lo := SetFilePointer(THandle(Handle), Int64Rec(Result).Lo,
@Int64Rec(Result).Hi, Origin);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ExitProcess(0);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Buf: array[0..511] of Byte; //数据缓冲区
ShowText, TmpStr: string;
StarSector:integer;
FileHandle: THandle;
i: Cardinal;
Fsize:integer;
Curr,pos,Compare: Int64;
FileStream:Tfilestream;
begin
if (start.Text='') or (size.Text='') then
begin
showmessage('起始和文件大小不能为空!');
ExitProcess(0);
end else
begin
StarSector:=strtoint(trim(start.text));
Fsize:=strtoint(trim(size.text));
FileHandle := CreateFile('\\.\Physicaldrive0', GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING, 0, 0);
if FileHandle = INVALID_HANDLE_VALUE then
begin
MessageBox(GetDesktopWindow, '打开磁盘失败', 'ERROR', MB_OK);
ExitProcess(0);
end;
pos:=int64(StarSector);
Curr:=Int64(pos*512);
if SD.Execute then
begin
FileStream:=TFileStream.Create(SD.FileName,fmCreate);
end else
Exit; //如果点取消则退出操作
Compare:=(Curr+FSize);
while Curr<=Compare do
begin
Curr:=ExtFileSeek(FileHandle,Curr,0);
FileRead(FileHandle,buf,sizeof(buf));
FileStream.Write(Buf,Sizeof(Buf));
Curr:=Curr+512;
end;
FileStream.Free;
Application.MessageBox('保存文件成功!','系统提示',MB_OK);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -