使用Delete()时访问违反00000000;
|
我正在尝试删除字符串开头的每个字符,而不是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
如您所见,它在所有字符被删除后立即发生。我认为问题出在某种程度上,我正在尝试访问不存在的内容,但是我如何做到这一点,我看不到。
编辑:是的,我知道这是一个愚蠢的问题,所有这些东西-我只是监督了一些事情。别告诉我,你从来没有发生过;)
没有找到相关结果
已邀请:
2 个回复
傻零凰死授
无关。即使您告诉它删除不存在的字符,删除也可以。 线
尝试访问
,因此此字符最好存在。您的代码并不是特别漂亮,但是一个简单的解决方法是
你可以做
琳娘