【问题标题】:Recommendations to read and parse an Fixed Width Text File using Delphi使用 Delphi 读取和解析固定宽度文本文件的建议
【发布时间】:2023-03-25 06:44:01
【问题描述】:

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

是否存在任何组件?

【问题讨论】:

    标签: delphi delphi-7


    【解决方案1】:

    如果您的意思是解析,请尝试使用 TStringList。致电TStringList.LoadFromFile,您将获得单行列表。然后,您可以遍历每一行并根据行中的各种固定长度列将其解析为记录或类。查看复制功能,了解如何简化此操作。

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

    【讨论】:

      【解决方案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;
      

      【讨论】:

      • 不需要打包记录来解决对齐问题吗?
      【解决方案3】:

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

      【讨论】:

      • @Andreas 我需要处理(解析)未加载的文件。
      猜你喜欢
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      • 2010-10-25
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多