delphi 写入文本 多列对齐
时间: 2024-10-14 10:18:26 浏览: 13
在Delphi中,如果你想要将文本写入文件并对齐多列,你可以使用TStreamWriter或者TStringList配合字符串处理函数。以下是一个简单的示例,演示如何创建一个多列对齐的CSV格式文本:
```pascal
uses
FileUtils,
System.SysUtils;
// 创建一个TStringList对象来存储数据
var
List: TStringList;
begin
// 初始化TStringList
List := TStringList.Create;
try
// 添加多列数据,假设我们有三列:Name, Age, City
List.Add('John Doe, 30, New York');
List.Add('Jane Smith, 28, Los Angeles');
// 对齐字段(例如,所有字段都左对齐)
var ColumnWidths: array[0..2] of Integer;
for i := 0 to High(ColumnWidths) do
ColumnWidths[i] := Length(List[0]) div 3; // 假设每列宽度相等
// 遍历每一行,调整对齐
for i := 0 to List.Count - 1 do
begin
var FieldStr: string;
for j := 0 to High(List[i]) do
begin
FieldStr := List[i].Split(',')[j];
if Length(FieldStr) > ColumnWidths[j] then
FieldStr := Copy(FieldStr, 1, ColumnWidths[j]); // 只显示指定长度
SetLength(List[i], List[i].Length + 1); // 增加空格以填充列宽
List[i][Pos(',', List[i]) + 1] := ' '; // 添加空格
List[i] := Concat(List[i], FieldStr, ',');
end;
// 删除最后一列的逗号
Delete(List[i], High(List[i]), 1);
end;
// 使用TStreamWriter写入文件
var
F: TStreamWriter;
F := TStreamWriter.Create('output.txt', False);
try
for Str in List do
F.WriteLine(Str);
finally
F.Free;
end;
finally
List.Free;
end;
end;
阅读全文