Delphi TcxGrid更正列中的拆分行
我的TcxGrid中有三列,每次找到“|”时都需要拆分到下一列。 所以我需要这个: 科诺姆电信公司 a 33 我一直在考虑如何处理每一个专栏,并找出下一个字符是否是“|”,但我不知道是否可以用find方法来完成 试试类似的方法(只是从我脑子里想出来,没有经过测试): 如果您的Delphi版本不支持SplitString,您可以这样做:Delphi TcxGrid更正列中的拆分行,delphi,Delphi,我的TcxGrid中有三列,每次找到“|”时都需要拆分到下一列。 所以我需要这个: 科诺姆电信公司 a 33 我一直在考虑如何处理每一个专栏,并找出下一个字符是否是“|”,但我不知道是否可以用find方法来完成 试试类似的方法(只是从我脑子里想出来,没有经过测试): 如果您的Delphi版本不支持SplitString,您可以这样做: var I, J, K, L : Integer; S, T : String; // Some of your code omi
var
I, J, K, L : Integer;
S, T : String;
// Some of your code omitted
begin
// Some of your code omitted
for J := 0 to aFile.Count - 1 do begin
S := aFile[J];
L := 0;
I := 1;
while I <= Length(S) do begin
K := I;
while (K <= Length(S)) and (S[K] <> '|') do
Inc(K);
if K > Length(S) then
T := Copy(S, I, K - I + 1)
else
T := Copy(S, I, K - I);
cxGrid1TableView1.DataController.Values[J, L] := T;
Inc(L);
I := K + 1;
end;
end;
// Some of your code omitted
end;
var
一、 J,K,L:整数;
S、 T:弦;
//您的一些代码被省略了
开始
//您的一些代码被省略了
对于J:=0到文件。计数-1开始
S:=aFile[J];
L:=0;
I:=1;
而我你也可以使用好的旧TStringList
:
var
SL: TStringList;
iFile, I : Integer;
begin
SL := TStringList.Create;
try
SL.Delimiter := '|';
SL.StrictDelimiter := true;
for iFile := 0 to aFile.Count - 1 do
begin
SL.DelimitedText := aFile[iFile];
for I := 0 to SL.Count - 1 do
cxGrid1TableView1.DataController.Values[iFile, I] := SL[I];
end;
finally
SL.Free;
end;
end;
@MartynA他只想拆分一个包含分隔符的字符串(例如,a | b | 3
)。确切地说,当字符串遇到这个“|”@marcol1时,我需要将字符串拆分到下一列。不要将代码作为文本而不是屏幕截图发布。使用“代码示例”按钮({}
)。@UliGerhardt我尝试使用括号,但它无法正确显示我的代码…此处不接受代码图像。代码是文本,可以直接复制粘贴到您的帖子中。请删除代码图像并将其替换为文本形式的代码。有关更多信息,请参阅@fpiette谢谢您的建议,但我认为我的delphi版本不接受TStringDynArray:(@marco1 TStringDynArray已经很长一段时间不存在了。您必须找到您的版本的单位(类型或SysUtils或…)。请使用delphi“在文件中查找”搜索Delphi源目录。顺便问一下,您使用的是哪个Delphi版本?@fpiette Delphi2007…我用CTRL+MAIUSC+F搜索过,但找不到it@Marcol1no我编辑了我的答案,只使用了非常古老的Delphi功能:没有TStringDynArray和SplitString。我没有D2007要检查,但我几乎肯定它会编译。顺便说一下,为什么不升级到最新的Delphi版本?与D2007相比,它有着巨大的增强。Fwiw我能在Marco的Delphi书籍中找到的最早的参考是Delphi XE。这正是我需要的!!!谢谢!它被正确拆分了,但是我的正则表达式(使用RegexBuddy创建)无法工作…如何将我的正则表达式与SL[i]中的所有行匹配?我尝试过使用'regex.Subject:=SL[i];如果(regex.match),则开始regex.SubExpressions[regex.NamedSubExpression('Name')];showmessage(regex.SubExpressions[regex.NamedSubExpression('Name'));end;'请用您迄今为止尝试过的代码为此创建一个新问题!它不允许我创建一个新帖子,因为它的格式不太好…我只放了这个MY code…
如何正确设置格式?如果您能帮我,这就是新帖子
var
SL: TStringList;
iFile, I : Integer;
begin
SL := TStringList.Create;
try
SL.Delimiter := '|';
SL.StrictDelimiter := true;
for iFile := 0 to aFile.Count - 1 do
begin
SL.DelimitedText := aFile[iFile];
for I := 0 to SL.Count - 1 do
cxGrid1TableView1.DataController.Values[iFile, I] := SL[I];
end;
finally
SL.Free;
end;
end;