例如在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

解决方案 »

  1.   

    1,可否读 TSTRINGLIST里去处理呢?
      

  2.   

    建立一个文件CreateFile
    打开A文件OpenFile
    读A文件数据ReadFile
    写B文件WriteFile
      

  3.   

    我知道是readfile和writefile,但我是要选A文件的部分内容而不是全部,该如何去做
      

  4.   

    var
    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;
      

  5.   

    用TStringList处理。
    先读到一个TSTRINGLIST 中。把要另存的字符串取出来,写入另一个TSTRINGLIST 中 ,最后SAVETOFILE即可。
      

  6.   

    在原文件里定位到 要截取的地方   seek(openfile,intseek);   
    //这是我以前的程序中的一段,不能运行,但是,你可以看看方法。。
    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;
      

  7.   

    A文件是文本文件还是二进制文件?如果是文本文件,可以用上面的办法,否则需要用文件流TFileStream
      

  8.   

    word 文件也可当作是 二进制文件来。你不会是想从word想取出部分内容。如果是想去搞定word文件格式,不大可能把。。
      

  9.   

    xiamang(瞎忙):
    >>在原文件里定位到 要截取的地方   seek(openfile,intseek);   请问是什么意思,具体该如何做,就是说如何查找符合要求的字符串?而且我要提取的并不是整行,而是一行里面的部分。
      

  10.   

    yong liu chu li ba 1`
      

  11.   

    我可以用pos提取整行写进去,但我想只写部分,该如何做?while not eof(readfile) do
            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就是把后面的去掉。
      

  12.   

    搞定,只需要在readln后面加上一句delete就可以啦.begin
            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;