On 24 May 2009, at 04:32, ABorka wrote:

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

It is normal that dest is (implicitly) a pointer to a pointer. A "var" parameter means that the address of some variable is passed to a function, rather than only its value.

Now, an (Ansi)String is a pointer to an array of characters, with some extra data before it. So if you have a "var" parameter of the type (Ansi)String, you get a pointer to that "pointer to an array of characters". Otherwise you would be unable to change the address stored inside that pointer (you would only be able to permanently change the data in the array it points to, but not make it point to a different array in a way that persists after the function exits).

If you are only using Pascal code in the real program, this should all be handled transparently for you.


Jonas
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to