gpt4 book ai didi

delphi - 尝试分割字符串但没有成功

转载 作者:行者123 更新时间:2023-12-02 12:36:05 25 4
gpt4 key购买 nike

我在尝试将一个字符串分成两部分时编写了这段代码,稍后我会将其保存到数据库中。现在我已经成功地将 3 个单词的字符串(如“单词单词编号”)分成 3 个字段,但是当我尝试将只有 1 个单词和数字(如“单词编号”)的字符串拆分为 2 个字段时,我收到了我无法理解的错误消息。

procedure Split
(const Delimiter: Char;
Input: string;
const Strings: TStrings) ;
begin
Assert(Assigned(Strings)) ;
Strings.Clear;
Strings.Delimiter := Delimiter;
Strings.DelimitedText := Input;
end;

procedure TForm2.Button64Click(Sender: TObject);
var
A: TStringList; i,c:integer;
begin
c:=0;
//for i:= 0 to ListBox1.Items.Count do
//begin
A := TStringList.Create;
// try
// Split(' ',listbox1.Items.Strings[0], A) ;
Split(' ',ListBox1.Items.Strings[ListBox1.ItemIndex], A) ;
// finally
// A.Free;
for i := 48 to 57 do
if A[1]<>char(i) then
c:=1
else
if A[1]=char(i) then
c:=2;

if c=1 then
begin
edit81.Text:=(A[0]+' '+A[1]);
edit82.Text:=A[2];
end
else
if c=2 then
begin
edit81.Text:=A[0];
edit82.Text:=A[1];
end;
end;

错误消息是:

First chance exception at $7C812FD3. Exception class EStringListError with message 'List index out of bounds (2)'. Process paligs.exe (732)

我正在尝试从 edit81 字段中的字符串和 edit 82 字段中的数字获取所有单词。

我的图片来自表单:/image/7vnS8.jpg

最佳答案

这里您要学习的最重要的事情是如何解释编译器产生的错误消息。有时它们并没有多大帮助,但在这种情况下,这些消息会告诉您需要了解的所有信息。

错误信息是:

List index out of bounds (2)

这意味着您正在访问列表的元素 2,但该元素 2 不存在。这意味着列表的值为 0 或 1。当您写入 A[2] 时,列表会引发异常,因为 A[2] 不存在。

这完全是可以预料到的。如果您拆分'word number',则结果为:

A[0] = 'word'
A[1] = 'number'

并且没有索引为 2 的元素。

您的代码访问 A[2] 的原因可以在此处找到:

对于 i := 48 到 57 做 如果 A[1]<>char(i) 那么 c:=1 别的 如果 A[1]=char(i) 那么 c:=2;

显然,对于 i 的任何值,'number' 永远不会等于 char(i),因此设置 c1。然后导致执行此代码:

if c=1 then
begin
edit81.Text:=(A[0]+' '+A[1]);
edit82.Text:=A[2]; // BOOM!
end

关于delphi - 尝试分割字符串但没有成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17170040/

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