16,748
社区成员
发帖
与我相关
我的任务
分享
program Project5;
var
f: file of Byte;
i, j,k: Integer;
myfile: string;
BTemp, BTemp2: Byte;
begin
myfile := 'k:\toolscode\2.txt';
try
AssignFile(f, myfile);
Reset(f);
j := 0;
k:=FileSize(f);
try
for i := 1 to k -1 do
begin
seek(f, j);
Read(f, BTemp);
seek(f, i);
Read(f, BTemp2);
if (bTemp2 <> 0) or ((BTemp2 = 0) and (BTemp <> 0)) then
begin
j:=j+1;
seek(f, j );
write(f, BTemp2);
end;
end;
seek(f, j);
Truncate (f);
finally
end;
finally
CloseFile(f);
end;
end.
if (buftmp[i]=#0) and (buftmp[i+1]=#0) and (buftmp[i+2]<>#0) then
if (buftmp[i]<>#0) and (buftmp[i+1]=#0) and (buftmp[i+2]=#0) then
procedure TrimFileData(srcfile,dstfile:string);
const partlen=3072*1000;
var src,dst:pbyte;
filelen,lastpart,dstsize,lastiszero:dword;
filesrc,filedst:thandle;
i,partcnt:integer;
procedure ScanPart(param1:dword; var param2,param3:dword); assembler;
asm
pushad
mov esi,src
mov edi,dst
push edx
push ecx
mov edx,[ecx]
mov ecx,eax
shr ecx,1
xor ebx,ebx
@p1:
mov ax,word ptr[esi]
cmp ax,0
jz @p2
inc ebx
mov word ptr[edi],ax
mov dx,ax
add edi,2
jmp @p3
@p2:
cmp dx,0
jz @p3
mov ax,13
mov word ptr[edi],ax
mov ax,10
mov word ptr[edi+2],ax
add edi,4
add ebx,2
xor edx,edx
@p3:
add esi,2
loop @p1
shl ebx,1
pop ecx
mov [ecx],edx
pop edx
mov dword ptr[edx],ebx
popad
end;
begin
filesrc:=fileopen(srcfile,fmopenread);
if fileexists(dstfile) then deletefile(dstfile);
filedst:=filecreate(dstfile);
filelen:=getfilesize(filesrc,nil);
partcnt:=filelen div partlen;
lastpart:=filelen mod partlen;
getmem(src,partlen);
getmem(dst,partlen*2);
lastiszero:=0;
for i := 0 to partcnt - 1 do
begin
fileread(filesrc,src^,partlen);
scanpart(partlen,dstsize,lastiszero);
filewrite(filedst,dst^,dstsize);
end;
if lastpart>0 then
begin
fileread(filesrc,src^,lastpart);
scanpart(lastpart,dstsize,lastiszero);
filewrite(filedst,dst^,dstsize);
end;
fileclose(filesrc);
fileclose(filedst);
freemem(src);
freemem(dst);
end;
procedure TrimFileData(srcfile,dstfile:string);
const partlen=3072*1000;
var src,dst:pbyte;
filelen,lastpart,dstsize:dword;
filesrc,filedst:thandle;
i,partcnt:integer;
procedure ScanPart(param1:dword; var param2:dword); assembler;
asm
pushad
mov esi,src
mov edi,dst
mov ecx,eax
shr ecx,1
xor ebx,ebx
@p1:
mov ax,word ptr[esi]
cmp ax,0
jz @p2
inc ebx
mov word ptr[edi],ax
add edi,2
@p2:
add esi,2
loop @p1
shl ebx,1
mov dword ptr[edx],ebx
popad
end;
begin
filesrc:=fileopen(srcfile,fmopenread);
if fileexists(dstfile) then deletefile(dstfile);
filedst:=filecreate(dstfile);
filelen:=getfilesize(filesrc,nil);
partcnt:=filelen div partlen;
lastpart:=filelen mod partlen;
getmem(src,partlen);
getmem(dst,partlen);
for i := 0 to partcnt - 1 do
begin
fileread(filesrc,src^,partlen);
scanpart(partlen,dstsize);
filewrite(filedst,dst^,dstsize);
end;
if lastpart>0 then
begin
fileread(filesrc,src^,lastpart);
scanpart(lastpart,dstsize);
filewrite(filedst,dst^,dstsize);
end;
fileclose(filesrc);
fileclose(filedst);
freemem(src);
freemem(dst);
end;
procedure TrimFileData(srcfile,dstfile:string);
const partlen=3072*1000;
var src,dst:pbyte;
filelen,lastpart,dstsize:dword;
filesrc,filedst:thandle;
i,partcnt:integer;
procedure ScanPart(param1:dword; var param2:dword); assembler;
asm
pushad
mov esi,src
mov edi,dst
mov ecx,eax
xor ebx,ebx
@p1:
mov ax,word ptr[esi]
cmp ax,0
jz @p2
inc ebx
mov word ptr[edi],ax
add edi,2
@p2:
add esi,2
loop @p1
shl ebx,1
mov dword ptr[edx],ebx
popad
end;
begin
filesrc:=fileopen(srcfile,fmopenread);
if fileexists(dstfile) then deletefile(dstfile);
filedst:=filecreate(dstfile);
filelen:=getfilesize(filesrc,nil);
partcnt:=filelen div partlen;
lastpart:=filelen mod partlen;
getmem(src,partlen*2);
getmem(dst,partlen*2);
for i := 0 to partcnt - 1 do
begin
fileread(filesrc,src^,partlen);
scanpart(partlen,dstsize);
filewrite(filedst,dst^,dstsize);
end;
if lastpart>0 then
begin
fileread(filesrc,src^,lastpart);
scanpart(lastpart,dstsize);
filewrite(filedst,dst^,dstsize);
end;
fileclose(filesrc);
fileclose(filedst);
freemem(src);
freemem(dst);
end;
procedure TrimFileData(srcfile,dstfile:string);
const partlen=3072*1000;
var src,dst:pbyte;
filelen,lastpart,dstsize:dword;
filesrc,filedst:thandle;
i,partcnt:integer;
procedure ScanPart(param1:dword; var param2:dword); assembler;
asm
push esi
push edi
push ebx
mov esi,src
mov edi,dst
mov ecx,eax
xor ebx,ebx
@p1:
mov ax,word ptr[esi]
cmp ax,0
jz @p2
inc ebx
mov word ptr[edi],ax
add edi,2
@p2:
add esi,2
loop @p1
shl ebx,1
mov dword ptr[edx],ebx
pop ebx
pop edi
pop esi
end;
begin
filesrc:=fileopen(srcfile,fmopenread);
if fileexists(dstfile) then deletefile(dstfile);
filedst:=filecreate(dstfile);
filelen:=getfilesize(filesrc,nil);
partcnt:=filelen div partlen;
lastpart:=filelen mod partlen;
getmem(src,partlen);
getmem(dst,partlen);
for i := 0 to partcnt - 1 do
begin
fileread(filesrc,src^,partlen);
scanpart(partlen,dstsize);
filewrite(filedst,dst^,dstsize);
end;
if lastpart>0 then
begin
fileread(filesrc,src^,lastpart);
scanpart(lastpart,dstsize);
filewrite(filedst,dst^,dstsize);
end;
fileclose(filesrc);
fileclose(filedst);
end;