2014-11-04 283 views
-3

DELPHI XE7 Win7上32位被稱爲無重載版本 代碼:DELPHI XE7 [dcc32錯誤] E2250有的POS'可以與這些參數

procedure TForm1.IdMappedPortTCP1Execute(AContext: TIdContext); 
begin 
if (pos('CONNECT',AContext)<>0) or (pos('GET',AContext)<>0) or (pos('POST',AContext)<>0) or (pos('HEAD',AContext)<>0) 
then 
(....) 
sleep(100); 
end; 

錯誤:

[dcc32 Error] Unit1.pas(49): E2250 There is no overloaded version of 'Pos' that can be called with these arguments 

請幫助我如何修復該代碼

在此先感謝

+3

'TIdContext'可能不是字符串... – 2014-11-04 13:53:19

+0

您可能想用'TIdMappedPortContext(AContext).NetData'(不是字符串)來操作。但不知道你的目標只是一個猜測。 – TLama 2014-11-04 14:03:52

+3

當出現如下錯誤消息時,明顯的第一步是:(1)確定函數的哪些重載版本存在。 (2)識別正在使用的參數。你做了那些事嗎? – 2014-11-04 14:50:44

回答

4

參數t Pos是兩個字符串。函數搜索另一個字符串(第二個參數)中第一次出現的子字符串(第一個參數)。此功能記錄在此處:http://docwiki.embarcadero.com/Libraries/en/System.Pos

您正在通過AContext,該類型的類型爲TIdContext,而且不是字符串。要修復代碼,您需要傳遞包含您想要搜索的文本的字符串。

+0

你可以給我一個例子如何使用_pos_如果我想檢查是HTTP頭髮送** CONNECT **或** POST **或** GET **命令? – 2014-11-04 23:12:40

+0

只要你能得到http頭爲一個字符串,你的代碼就可以。你能做到嗎? – 2014-11-04 23:42:37