Delphi Error E2010 Incompatible types: 'string' and 'procedure, untyped pointer or untyped parameter'

笑着哭i 提交于 2019-12-20 05:27:06

问题


I used TStringList and something that looks like:

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);

but something is wrong. For example when I run it it's alerting with the error [[DCC Error] consoleHttp.dpr(29): E2010 Incompatible types: 'string' and 'procedure, untyped pointer or untyped parameter'] in s:=http.Post('http://test.me',geo,response). What did I do wrong?


回答1:


This error means which you are passing wrong parameters to the method TIdHTTP.post. this method has several overloads

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;

but none match with the parameters which you are passing.




回答2:


do this:

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

instead of:

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

The only matching method is a procedure, but procedures don't return values. The error message is saying that you can't assign a procedure to a string.



来源:https://stackoverflow.com/questions/8176926/delphi-error-e2010-incompatible-types-string-and-procedure-untyped-pointer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!