开发者

Delphi 6: How to search a dynamic array for sub-string quickly?

开发者 https://www.devze.com 2023-01-01 07:23 出处:网络
How can I search a dynamic array of char in Delphi 6 for a sub-string and get back an index to a match, not a pointer?I\'ve seen functions in Delphi 6 that do this for strings but not for dynamic char

How can I search a dynamic array of char in Delphi 6 for a sub-string and get back an index to a match, not a pointer? I've seen functions in Delphi 6 that do this for strings but not for dynamic char arrays. There is a function called开发者_如何学编程 SearchBuf but that function returns a PChar pointer to the match location when what I need is the array index of the match.

Thanks.


If you have a pointer to the match, simply subtract the pointer to the first character, and you'll have your index.

var
  Buf, Result: PChar;
  Index: Integer;

Result := SearchBuf(Buf, ...);
if Assigned(Result) then
  Index := Result - Buf
else
  Index := -1; // not found

I'm pretty sure that pointer arithmetic is allowed in Delphi 6. If not, then type-cast the pointers to integral types first:

Index := Cardinal(Result) - Cardinal(Buf);
0

精彩评论

暂无评论...
验证码 换一张
取 消