如何从列表框中的特定行获取文本 delphi

How do get the text from specific line in listbox delphi

我想从特定行获取文本。

例如

列表框内容:

第 0 行字符串 1

第 1 行字符串 2

第 3 行字符串 3

如何从每个示例的第 1 行获取文本?

我试试这个:

(listbox1.Items.Objects[1] as TText).Text

但生成随机访问冲突...

还有别的方法吗?

假设它们存在,

  • ListBox.Items[0] 是列表框中的第一个字符串。
  • ListBox.Items[1] 是列表框中的第二个字符串。
  • ...
  • ListBox.Items[ListBox.Items.Count - 1] 是列表框中的最后一个字符串。

而不是

ListBox.Items[i]

你也可以使用

ListBox.Items.Strings[i]

但需要输入的内容更多。

(TStrings.Strings属性明明是一个数组属性,因为声明为"default",所以可以通过对象上的括号访问本身。)


奖励material:您尝试过的Objects 数组属性 偶尔用于将对象(指针)与列表中的每个项目相关联。 (有时它被滥用来存储不是对象的本机大小的整数,仍然是每个项目一个。)

Items.Lines[0] - Access element 0 (first string) of Lines array -- for Kylix 

Items.Strings[0] - Access element 0 (first string) of Strings array -- for VCL/FMX

AV 在您尝试访问不可用的内存时生成,因此,换句话说,delphi 没有用于访问程序内存(二进制数据)的类型检查,它会导致广泛的未处理错误,例如错误类型错误和 NullPointer 异常,但是可以在不修改内存例程(编写其他类型定义以提供检查)的情况下处理,可以通过与 Pascal 实现中的 nil 或 CMP 进行比较来检查指针汇编程序中的函数。
更多相关信息:
每个变量、常量,当然还有方法,在执行过程中都存储在计算机内存(RAM)中,在其自己的领域中,由处理器(CPU)提供给编程,并受限于集成在主板上逻辑,所以它不能写入其他程序内存。
大多数数据类型都有自己的字节对齐方式(特定于存储 0 和 1,但是,当类型不仅仅是一个字节时,它会被扩展以包含类型信息)要知道,它里面有正确的二进制数据,例如字符串、对象和记录。
当class存储实际类型名称时,字符串存储它自己的长度和编码以字节表示其内容,用于控制函数和过程调用。
但是,delphi Pascal 似乎在指定数据地址后立即访问内存,而不检查其内容,因此在访问未指定类型的情况下会返回随机值 - 没有扩展的类型类型信息(例如不同的整数类型)和访问指定类型时的 AV。
请记住检查所有指针类型(通常它们从 P 字母开始,例如 PAnsiChar)是否包含某些内容:
方式:

// Assigned function
if Assigned(pvar) then 
DoSomething();
// = nil comparision / equation
if pvar <> nil then
DoSomething()
Else
Exit;