例如在A文件中:FSCI40 BCGZ 04060059287 00000 10000 21425 30000 40000 51526=
45005 00000 11122 21823 30000 41121 52024=
45011 00000 11122 21723 30000 41121 51924=FSCI40 BCGZ 040600
59488 00000 10000 21723 30001 40000 51825=
59487 00000 10000 21724 30001 40000 51825=如何提取里面的部分字符生成文件B:
59287 00000 10000 21425
59488 00000 10000 21723
45005 00000 11122 21823 30000 41121 52024=
45011 00000 11122 21723 30000 41121 51924=FSCI40 BCGZ 040600
59488 00000 10000 21723 30001 40000 51825=
59487 00000 10000 21724 30001 40000 51825=如何提取里面的部分字符生成文件B:
59287 00000 10000 21425
59488 00000 10000 21723
打开A文件OpenFile
读A文件数据ReadFile
写B文件WriteFile
intxt :Tstringlist;
outtxt :Tstringlist;
...
begin
intxt :=Tstringlist.Create;
outtxt :=Tstringlist.Create;
intxt.LoadFromFile(Flatedit1.Text);
for i:=0 to pred(intxt.Count) do begin
s :='';
sout :='';
s :=intxt[i];
s1 :=copy(s,1,4);
if s1=='59287' then begin
s2 :=copy(s,1,16); //你要选取多少位
end;
outtxt.Add(s2);
end;
intxt.Free;
outtxt.Free;
end;
先读到一个TSTRINGLIST 中。把要另存的字符串取出来,写入另一个TSTRINGLIST 中 ,最后SAVETOFILE即可。
//这是我以前的程序中的一段,不能运行,但是,你可以看看方法。。
procedure TForm1.BWriteClick(Sender: TObject);
var openfile :File;
Writefile:File;
buf:array[1..2048] of char ;
begin
if openname='' then
showmessage('请先打开存盘文件!');
if openname<>'' then
begin
assignfile(openfile,openname);
reset(openfile,1);
assignfile(writefile,writename) ;
rewrite(writefile,1);
try
blockread(openfile,buf,sizeof(buf));
blockwrite(writefile,buf,sizeof(buf));
end;
closefile(openfile);
closefile(writefile);
except
showmessage('文件错误,或无法完成该修改');
end;
end;
>>在原文件里定位到 要截取的地方 seek(openfile,intseek); 请问是什么意思,具体该如何做,就是说如何查找符合要求的字符串?而且我要提取的并不是整行,而是一行里面的部分。
begin
readln(readfile,s);
if pos('59287',s)>0 then
writeln(writefile,s);
if pos('59488',s)>0 then
writeln(writefile,s);
end;但我得出的文件内容是:
59287 00000 10000 21425 30000 40000 51526=
59488 00000 10000 21723 30001 40000 51825=其实我想得出的是:
59287 00000 10000 21425
59488 00000 10000 21723就是把后面的去掉。
assignfile(readfile,'FSBCGZ04.06');
reset(readfile);
rewrite(writefile,'aa.txt');
while not eof(readfile) do
begin
readln(readfile,s);
delete(s,24,20);
if pos('56846',s)>0 then
writeln(writefile,s);
if pos('56944',s)>0 then
writeln(writefile,s);
delete(s,24,2);
end;
closefile(readfile);
closefile(writefile);
end;