You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将RichEdit多行字符串存入字符串数组及回显为空问题排查

问题根源

  1. 索引越界隐患:TRichEdit.Lines 属于 TStrings 类型,默认索引从 0 开始,你直接用1~26取值,如果原内容不足27行(索引0到26)会直接触发越界错误。
  2. 回显为空的核心原因:调用 redOutOffset.Clear 之后,Lines 的 Count 属性会重置为0,此时 Strings[K] 指向的是不存在的行索引,直接赋值不会新增行,也不会触发显示,属于无效操作。

正确实现代码

procedure TfrmEncryption.sedOffsetClick(Sender: TObject);
var
  K : integer;
begin
  // 先判断现有行数是否足够,避免越界
  if redOutOffset.Lines.Count < 26 then Exit;
  
  // 保存内容到数组,此处假设数组按1基设计,若为0基可直接循环0~25无需索引转换
  for K := 1 to 26 do
  begin
    arrOffset[K] := redOutOffset.Lines.Strings[K-1];
  end;

  redOutOffset.Clear;

  // 回显使用Add方法新增行,不要直接给不存在的Strings[K]索引赋值
  for K := 1 to 26 do
  begin
    redOutOffset.Lines.Add(arrOffset[K]);
  end;
end;

补充说明

如果需要严格匹配原行号位置赋值,可在清空后先插入26条空行再给指定索引赋值,和上述Add方法效果一致。空行、特殊格式的行内容都可以正常保存和回显。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:48:03