[fpc-pascal] Move with pointers to memory

Frederic Da Vitoria davitofrg at gmail.com
Wed Nov 13 11:07:21 CET 2013

2013/11/13 Rainer Stratmann <rainerstratmann at t-online.de>

>  On Wednesday 13 November 2013 10:52:23 you wrote:
> > 2013/11/13 Rainer Stratmann <rainerstratmann at t-online.de>
> > > Is there a description of the behaviour of const and var in this case?
> > > Why is it not both const or both var?
> >
> > "source" is where the data "comes from", so the procedure won't modify it
> > (if there is no memory overlap between source and dest), so it is
> declared
> > as "const"
> > "dest" is where the data is copied to, so the procedure will necessarily
> > modify it (if "count" is <> 0), and the procedure should modify so it is
> > declared as "var". Actually, IMO it could be declared as "out", this
> would
> > avoid a meaningless warning.
> But why does it work without specifying the vars more exactly like in other
> cases?

You mean, how can it work without using typed variables? In Pascal, you
don't have to give the type of a parameter, although 99.99% of the times
you should do it. If you don't do it, you could as well use assembly :-)
Actually, that's probably how Move is written: in assembly language. Of
course, since the types were not given in the parameter declaration of
Move, the compiler can't know the size of the data, and you have to give
the compiler some indication. That's what "count" is for. Move considers
the memory as 2 big arrays of bytes, one starting at "source", and the
second at "dest".

Frederic Da Vitoria

Membre de l'April - « promouvoir et défendre le logiciel libre » -
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20131113/7a4758b3/attachment.html>

More information about the fpc-pascal mailing list