通过 line/index 从备忘录中复制文本

Copying text from a Memo by line/index

我想知道是否有办法从备忘录的特定行复制文本。例如,我想将我的备忘录第3行的内容存储到一个字符串中,然后对该字符串进行一些操作并将其复制到另一个memo/edit.

我已经尝试了一些变体,但 none 有效:

str_temp = Memo1->Lines[2].Text;
Memo2->Lines->Append(str_temp);

当我从 Lines[0] 询问时,它只是将备忘录中的所有内容复制到字符串中:

str_temp = Memo1->Lines[0].Text;
Memo2->Lines->Append(str_temp);

Lines 属性 是指向 TStrings 对象的 指针 。所以 Memo1->Lines[2].Text 与对 指针算术 执行 (*(Memo1->Lines+2)).Text 相同,这在语法上是有效的,但在逻辑上是错误的,因为它最终会访问无效的内存。而 Memo1->Lines[0].Text(*(Memo1->Lines)).Text(又名 Memo1->Lines->Text)相同,这既合法又有效,但不是您想要的结果。

TStrings有个Strings[]属性,就是你需要用的,eg:

String str_temp = Memo1->Lines->Strings[2];

或者,TStrings 有一个在内部使用 Strings[]operator[],例如:

String str_temp = (*(Memo1->Lines))[2];