2010-03-22 59 views

回答

5

如果读你的意思是解析,请尝试使用TStringList中。致电TStringList.LoadFromFile,你会得到一个单行的列表。然后,您可以遍历每行,并根据行中各种固定长度的列将其解析为记录或类。查看复制功能以使其更容易。

很难为无关于你正在试图做的任何细节,更具体的,但那是一般的想法。

0

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

+0

@Andreas我需要进程(解析)文件不加载。 – Salvador

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; 
+0

它不需要**对齐**记录对齐问题? –