[fpc-pascal] Re: assign code to a method
    Jonas Maebe 
    jonas.maebe at elis.ugent.be
       
    Tue Feb 22 21:54:52 CET 2011
    
    
  
On 22 Feb 2011, at 21:24, Angel Montesinos wrote:
> one uncomments the commented line of code, that is  makes
>   codeFunction:= '',
> the program fails.
> 
> 
> What may be happening here?
This code is wrong:
   functionCode : AnsiString; {the function opCode sequence}
...
   Move(functionCode, PChar(FBlock^.code), len);
An ansistring is a pointer. Move takes formal const/var parameters. So the move() moves the pointer along with whatever data comes after it over the "FBlock^.code" pointer and whatever data comes after that. What you want, is to move the data to which functionCode points into the memory block to which FBlock^.code points. The correct statement is therefore:
   Move(functionCode[1], FBlock^.code^, len);
It would also be cleaner to use a dynamic array instead of a string to store arbitrary binary data (in that case, you'd have to use functionCode[0] above though).
Jonas
    
    
More information about the fpc-pascal
mailing list