Peek

Gets the value of an arbitrary type at an address in memory

Syntax
	KeyPgDeclareDeclare KeyPgFunctionFunction Peek ( KeyPgByvalByVal address KeyPgAsAs KeyPgAnyAny KeyPgPtrPtr ) KeyPgByrefFunctionByRef KeyPgAsAs KeyPgUbyteUByte
	KeyPgDeclareDeclare KeyPgFunctionFunction Peek ( datatype, KeyPgByvalByVal address KeyPgAsAs KeyPgAnyAny KeyPgPtrPtr ) KeyPgByrefFunctionByRef KeyPgAsAs 
	datatype

Usage
	Peek( [ datatype, ] address )

Parameters
	address
		The address in memory to get the value from.
	datatype
		The type of value to get. If omitted, KeyPgUbyteUByte is assumed.

Description
	This procedure returns a reference to the value in memory given by a 
	memory address, and is equivalent to:
		*cast(ubyte ptr, address)
			or
		*cast(datatype ptr, address)
	thus this keyword can also be used to assign a value to a memory 
	location, similarly to KeyPgPokePoke.

	Note: When using Peek, the CompilerOptexx-exx compiler option does not add code for 
	null-pointer checking (no nullity test on the value of address).

Example
	Dim i As Integer, p As Integer Ptr
	p = @i

	Poke Integer, p, 420
	Print Peek(Integer, p)

	will produce the output:

	420

Differences from QB
	* Peek did not support the datatype parameter in QB, and could only 
	  return individual bytes.
	* Peek returns a reference in FB, so can be used to set the memory 
	  contents of the address, like with KeyPgOpValueOfOperator * (Value Of).
	* DEF SEG isn't needed anymore because the address space is 32-bit flat 
	  in FreeBASIC.

See also
	* KeyPgPokePoke
	* KeyPgOpValueOfOperator * (Value Of)
