I tell you:
Adding 1 and adding 2 is completely determined by the pointer type. If the pointer type is pansichar, then adding 1 points to the address of the next byte. If the pointer type is pwidechar, add 1 to point to the next two bytes.
Memory is a continuous storage unit, measured in bytes. When accessing data from memory, the computer will calculate which piece of data to fetch to the program based on different types and sizes.
For example, if a pointer points to $10000, if you want to retrieve a byte of data, the system will
give you the content at $10000. If you want to retrieve an integer type data, the system will give you the contents from $10000 to $10003. Because byte is one byte, integer is 4 bytes, and so on.
Besides, this array is actually stored using a continuous address. array[0..100] of byte is 100 bytes after @array[0] in memory
If you add 1 to the first address, it points to the second element, add 2 to point to the third element, and so on. . . .