使用Delphi读取和解析固定宽度文本文件的最佳方法是什么?
是否存在任何组件?
提前感谢。
答案 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。