问题
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