gpt4 book ai didi

delphi - TStringList 总是进行换行

转载 作者:行者123 更新时间:2023-12-02 22:17:24 29 4
gpt4 key购买 nike

我正在开发一个键盘 Hook 并使用 SetWindowsHookEx,并将每个击键添加到 TStringList 中。为了操纵 TStringList 内的击键,我总是使用“.Text”属性。例如,要添加键入的击键,我使用:

KeyStrokes.Text:= KeyStrokes.Text + AChr;

如果我检测到 [backspace],那么我会尝试使用以下方法删除 StringList 中的最后一个字符:

KeyStrokes.Text := Copy(KeyStrokes.Text, 1, length(KeyStrokes.Text) - 1);

当我使用相同的“.Text”属性添加到 TMemo 中时,所有这些都有效。但自从我将 TStringList 放入保存的 Log.txt 文件(使用 .SaveToFile 属性)后,我得到如下日志:

H

E

L

L

而不是“你好”。我尝试了“.Append”、“.Add”属性,但始终相同。当然,删除最后一个字母的退格键不再起作用了……如何正确击键?这甚至可以在 TStringList 中做到吗?

最佳答案

TStringList 似乎不是完成这项工作的正确工具,至少如果您要使用 Text 属性,则不是。正如您从文档中了解到的,读取 Text 属性会使用换行符连接列表中的所有项目。写入该属性会在每个换行符处分割新值,并在列表中为每个项目创建一个单独的条目。

如果您试图跟踪击键,您不希望数据结构通过插入和删除看起来像击键但不代表真实击键的内容来默默地消化您的数据。 (特别要注意的是,读取 Text 属性将在结果末尾附加一个换行符。这会影响您的退格逻辑。)

使用普通的旧字符串来跟踪字符串输入的当前状态。

关于delphi - TStringList 总是进行换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18646907/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com