一个文件中,其中有一部分字段要在delphi中删除 请问怎么做啊?谢谢

解决方案 »

  1.   

    先把文件放入stringlist,然后找到指定的字段,以空串替换
      

  2.   

    用临时文件处理

    TFileStream流数据移动截取都OKhttp://lysoft.7u7.net
      

  3.   

    用内存映射文件的做法,只是我测试内存映射文件时玩的,最好还是用TFileStream来实现:
    function TakeFile(FilePath: String): Boolean;
    var
      lpReOpenBuff: OFSTRUCT;
      FFileHandle: THandle;
      FMapHandle: THandle;
      FFileSize: Integer;
      MySize: Integer;
      FData: PChar;
      hMem: HGLOBAL;
      pMem: PChar;
    begin
      Result := True;
      FFileHandle := OpenFile(PAnsiChar(FilePath), lpReOpenBuff, OF_READWRITE);
      if FFileHandle = HFILE_ERROR then
        begin
          Result := False;
          Exit;
        end;
      try
        FFileSize := GetFileSize(FFileHandle, nil);
        MySize := FFileSize;
        FMapHandle := CreateFileMapping(FFileHandle, nil, PAGE_READWRITE, 0, MySize, nil);
        if FMapHandle = 0 then
          begin
            Result := False;
            Exit;
          end;
      finally
        CloseHandle(FFileHandle);
      end;
      try
        FData := MapViewOfFile(FMapHandle, FILE_MAP_ALL_ACCESS, 0, 0, FFileSize);
        if FData = nil then
          begin
            Result := False;
            Exit;
          end;
      finally
        CloseHandle(FMapHandle);
      end;
      try
        hMem := GlobalAlloc(GPTR, MySize);
        pMem := GlobalLock(hMem);
        pMem[0] := FData[0]; //取原文件的第一个字符
        pMem[1] := FData[3]; //取原文件的第4个字符
        CopyMemory(FData, pMem, MySize); //将pMem的数据Copy到FData的内存上
      finally
        UnmapViewOfFile(FData);
        GlobalFree(hMem);
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      TakeFile('C:\1.txt');
    end;1.txt 原来内容是 abcd
          现在内容是 ad
    //以上方法中,并不是真正意义上的删除了文件内容,只是移动文件内容把后面剩余位填充空字符的过程,文件大小没变。不过也可以手动删除文件尾部的这些空位。
    //所以此方法只是一个练习,并不可取!:)
      

  4.   

    如果是文本文件就好辦,用臨時文件也好,用TSTRINGS也好,刪除一些以後再保存就好了如果是EXCEL就得用EXCEL處理了,主要是看到你說刪除一些字段,我想應該是EXCEL文件之類的了