Hi,
I came across some strange thing while making a simple program using
Indy 10.
If I use an IdHTTP object to load a web page that redirects to another
one, the new destination URL is not passed properly through the event
handler.
Whether this is an indy or fpc problem, I'm not sure.
Here is the event handler in a way that it should work:
Declaration in Indy:
TIdHTTPOnRedirectEvent = procedure(Sender: TObject; var dest: string;
var NumRedirect: Integer; var Handled: boolean; var VMethod:
TIdHTTPMethod) of object;
In FPC/Lazarus:
procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: String; var
NumRedirect: Integer; var Handled: Boolean; var VMethod: IdHTTPMethod);
begin
ShowMessage('Redirected to:' + dest);
end;
However, it seems that the parameter "dest" is passing a pointer to a
pointer and not just a pointer to the string (displaying only some
strange characters instead of the redirecting URL).
Therefore, the following works properly (while it should not):
procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: String; var
NumRedirect: Integer; var Handled: Boolean; var VMethod: IdHTTPMethod);
var p:pchar;
begin
asm
pushad
lea esi, dest
mov eax, [esi]
mov eax, [eax]
mov p, eax
popad
end;
ShowMessage('Redirected to:' + p);{dest}
end;
Am I missing something or there is a problem somewhere?
Indy and FPC both was compiled from the latest source available (as well
as Lazarus)
Thanks for any thoughts,
AB
PS: I did not post this on the indy support forums because it seems that
there are no questions answered (or even posted) in the past two years
there (the latest indy source is form 2007 Nov).
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel