Delphi Error E2010 Несовместимые типы: «строка» и «процедура, нетипизированный указатель или нетипизированный параметр» - PullRequest
1 голос
/ 18 ноября 2011

Я использовал TStringList и что-то похожее на:

geo: TStringList;
response: TStringStream;
  begin
  http:=tidhttp.Create(nil);
  try
    { TODO -oUser -cConsole Main : Insert code here }
    geo:=TStringList.Create;
    response:=TStringStream.Create('');
    geo.Add('name=stas');
    geo.Add('pass=431');
    s:=http.Get('http://test.me');
    writeln(http.ResponseText);
    writeln(s);
    s:=http.Post('http://test.me',geo,response);

но что-то не так. Например, когда я запускаю его, он выдает предупреждение с ошибкой [[DCC Error] consoleHttp.dpr(29): E2010 Incompatible types: 'string' and 'procedure, untyped pointer or untyped parameter'] в s:=http.Post('http://test.me',geo,response). Что я сделал не так?

Ответы [ 2 ]

4 голосов
/ 18 ноября 2011

Эта ошибка означает, что вы передаете неверные параметры методу TIdHTTP.post. этот метод имеет несколько перегрузок

function Post(AURL: string; ASource: TIdStrings): string; overload;
function Post(AURL: string; ASource: TIdStream): string; overload;
function Post(AURL: string; ASource: TIdMultiPartFormDataStream): string; overload;
procedure Post(AURL: string; ASource: TIdMultiPartFormDataStream; AResponseContent: TIdStream); overload;
procedure Post(AURL: string; ASource: TIdStrings; AResponseContent: TIdStream); overload;
procedure Post(AURL: string; ASource, AResponseContent: TIdStream); overload;

, но ни один из них не соответствует параметрам, которые вы передаете.

3 голосов
/ 18 января 2012

сделать это:

http.Post('http://test.me',geo,response);

вместо:

s:=http.Post('http://test.me',geo,response);

Единственный метод сопоставления - это процедура, но процедуры не возвращают значений. Сообщение об ошибке говорит, что вы не можете назначить процедуру для строки.

...