gpt4 book ai didi

string - 使用Delete()时发生访问冲突00000000;

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

我试图删除字符串开头的每个字符,这不是 Alpha 字符。

但是,当字符串中只有非字母字符(如“!!”或“?!?”)时,它会抛出访问冲突!

这是我的代码:

  // The Log(); is a routine that adds stuff to my log memo.
Log('Begin Parse');
while not IsLetter(ParsedName[1]) do
begin
Log('Checking Length - Length is '+IntToStr(Length(ParsedName))+' ...');
if Length(ParsedName) <> 0 then
Begin
Log('Deleting Char ...');
Delete(ParsedName,1,1);
Log('Deleted Char ...');
End;
Log('Checking Length - Length is now '+IntToStr(Length(ParsedName))+' ...');
end;
// It never reaches this point!
Log('End Parse');

这是我的日志产生的结果:

21:51:19: Checking Length - Length is 2 ...
21:51:19: Deleting Char ...
21:51:19: Deleted Char ...
21:51:19: Checking Length - Length is now 1 ...
21:51:19: Checking Length - Length is 1 ...
21:51:19: Deleting Char ...
21:51:19: Deleted Char ...
21:51:19: Checking Length - Length is now 0 ...
21:51:19: Access violation at address 007A1C09 in module 'Project1.exe'. Read of address 00000000

如您所见,它在所有字符被删除后立即发生。我认为问题在于,不知何故,我试图访问不存在的东西,但是如何我正在这样做,我看不到。

编辑:是的,我知道这是一个愚蠢的问题以及所有这些问题 - 我只是监督了一些事情。别告诉我这从来没有发生在你身上;)

最佳答案

这个问题与删除无关。即使您告诉它删除不存在的字符,删除也会起作用。

线路

while not IsLetter(ParsedName[1]) do

尝试访问ParsedName[1],因此该字符最好存在。您的代码不是特别漂亮,但一个简单的解决方法是

while (length(ParsedName) > 0) and not IsLetter(ParsedName[1]) do

你可以这样做

while (length(ParsedName) > 0) and not IsLetter(ParsedName[1]) do
Delete(ParsedName, 1, 1);

关于string - 使用Delete()时发生访问冲突00000000;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5654881/

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