2010-05-30 33 views
0

如何在Delphi 6中爲一個子字符串搜索一個動態的字符數組並獲取一個匹配索引而不是指針?我已經在Delphi 6中看到了爲字符串執行此操作的函數,但不是用於動態字符數組。有一個稱爲SearchBuf的函數,但是當我需要的是匹配的數組索引時,該函數返回一個PChar指向匹配位置的指針。德爾福6:如何快速搜索動態數組的子串?

謝謝。

+1

您使用的是動態的任何特別的原因字符數組?我想不出他們提供的字符串優勢。 – 2010-05-30 04:32:29

+0

我正在用字符數組格式管理音頻數據的函數之間移動數據。這是一個遺留代碼的東西。 – 2010-06-04 01:32:23

+0

如果您將字符串變量的長度設置爲動態數組的大小,那麼您可以將該字符串鍵入到PChar中,並且您將擁有一個同樣好的字符數組,供函數讀取或填充。 – 2010-06-04 03:04:07

回答

1

如果您有一個指向匹配的指針,只需減去指向第一個字符的指針,即可獲得索引。

var 
    Buf, Result: PChar; 
    Index: Integer; 

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

我敢肯定,指針運算允許在Delphi 6如果不是,那麼類型轉換指針到整型第一:

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