繁体   English   中英

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

[英]How do get the text from specific line in listbox delphi

我想从特定行获取文本。

前任。

列表框内容:

行 0 字符串 1

第 1 行 字符串 2

第 3 行 字符串 3

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

我试试这个:

(listbox1.Items.Objects[1] 作为 TText).Text

但是会产生随机访问冲突...

还有别的方法吗?

假设它们存在,

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

代替

ListBox.Items[i]

你也可以使用

ListBox.Items.Strings[i]

但这需要更多的输入。

TStrings.Strings属性显然是一个数组属性,并且因为它被声明为default ,所以可以通过使用对象本身的方括号来访问它。)


奖励材料:您尝试过的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 func 进行比较来检查指针。
更多关于这个:
每个变量、常量,当然还有方法在执行过程中存储在计算机内存(RAM)中,在其自己的领域中,由处理器(CPU)提供给程序,并受集成在主板上的逻辑限制,因此它是不能写入其他程序存储器。
大多数数据类型都有自己的字节对齐(特定于存储 0 和 1,但是,当类型不仅仅是一个字节时,它会被加宽以包含类型信息)来知道它里面有正确的二进制数据,例如字符串、对象和记录。
当类存储用于控制函数和过程调用的实际类型名称时,字符串以它的内容的字节表示形式存储它自己的长度和编码。
但是,delphi Pascal 似乎在指定数据地址后立即访问内存,而不对其内容进行任何检查,因此在访问未指定类型的情况下将导致返回随机值 - 没有扩展类型信息的类型(例如作为不同的整数类型)和 AV 在访问指定类型的情况下。
请记住检查所有指针类型(通常它们以 P 字母开头,例如 PAnsiChar)中是否包含某些内容:
方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM