使用Delphi读取和解析固定宽度文本文件的建议

时间:2010-03-22 19:21:07

标签: delphi delphi-7

使用Delphi读取和解析固定宽度文本文件的最佳方法是什么?

是否存在任何组件?

提前感谢。

3 个答案:

答案 0 :(得分:5)

如果通过读取意味着解析,请尝试使用TStringList。致电TStringList.LoadFromFile,您将获得各行的列表。然后,您可以遍历每一行,并根据行中的各种固定长度列将其解析为记录或类。查看复制功能,以便更轻松。

如果没有关于你要做什么的任何细节,那么很难更具体,但这是一般的想法。

答案 1 :(得分:2)

如果它的固定宽度和ansi,你可以使用流来读取包含由ansichar数组组成的字段的记录。

type
  rTest = record
    Field1 : array[1..12] of ansichar;
    Field2 : array[1..02] of ansichar;
    CRLF   : array[1..02] of ansichar;
  end;

var
  // Sample record for testing.
  Test1 : rTest = (Field1 : '123456789012'; Field2: 'AB'; CRLF: ^M+^J);

procedure TForm1.Button1Click(Sender: TObject);
var
  St : tStream;
  rdest : rTest;
  SVar : string;
begin
  St := TMemoryStream.Create;
  // write the record from the constant 
  st.Write(Test1,SizeOf(rTest));
  st.Seek(0,soFromBeginning);
  // read the record from the stream
  St.Read(rDest,SizeOf(rTest));
  // pull out field 1 and display
  SVar := Copy(rDest.Field1,1,12);
  ShowMessage(SVar);
  // pull out field 2 and display
  SVar := Copy(rDest.Field2,1,2);
  ShowMessage(SVar);
  st.free;
end;

答案 2 :(得分:0)

您可以使用简单的TMemo或TRichEdit。但我相信Delphi的#1(?)文本编辑器组件是TSynEdit