mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-31 06:30:18 +00:00
41 lines
1.9 KiB
Text
41 lines
1.9 KiB
Text
|
The '''_OFFSET''' function returns the memory offset of/within a given variable.
|
||
|
|
||
|
|
||
|
{{PageSyntax}}
|
||
|
|
||
|
::: offset%& = _OFFSET(''variable'')
|
||
|
|
||
|
|
||
|
* The ''variable'' parameter can be any type of numerical or [[STRING|string]] variable name.
|
||
|
* Application parameter or [[TYPE|type]] names may include lp, ptr or p which designates them as a pointer type.
|
||
|
* _OFFSET function return values should be stored in [[_OFFSET]] type variables. As no other variable type is 'elastic' like [[_OFFSET]], there can be no guarantee that any other variable type can hold the value of an _OFFSET.
|
||
|
* Returns the memory offset of variables, user-defined-types & elements, arrays & indices and the base offset of [[STRING]]s.
|
||
|
* Offset values are currently only useful when used in conjunction with [[_MEM]] or [[DECLARE LIBRARY]] procedures.
|
||
|
* OFFSET values are used as a part of the [[_MEM]] variable [[type]] in QB64. Variable.OFFSET returns or sets the current position in memory.
|
||
|
* '''Warning:''' QB64 variable length strings can move about in memory AT ANY TIME. If you get the _OFFSET of a variable length sting on one line and use it on the next it may not be there anymore. '''To be safe, move variable length strings into fixed length strings first.'''
|
||
|
|
||
|
|
||
|
''Example:'' Using memcpy with the _OFFSET function values as parameters.
|
||
|
{{CodeStart}} '' ''
|
||
|
{{Cl|DECLARE DYNAMIC LIBRARY|DECLARE CUSTOMTYPE LIBRARY}}
|
||
|
{{Cl|SUB}} memcpy ({{Cl|BYVAL}} dest {{Cl|AS}} {{Cl|_OFFSET}}, {{Cl|BYVAL}} source {{Cl|AS}} {{Cl|_OFFSET}}, {{Cl|BYVAL}} bytes {{Cl|AS}} {{Cl|LONG}})
|
||
|
{{Cl|DECLARE LIBRARY|END DECLARE}}
|
||
|
|
||
|
a$ = "1234567890"
|
||
|
b$ = "ABCDEFGHIJ"
|
||
|
|
||
|
memcpy {{Cl|_OFFSET (function)|_OFFSET}}(a$) + 5, {{Cl|_OFFSET (function)|_OFFSET}}(b$) + 5, 5
|
||
|
{{Cl|PRINT}} a$ '' ''
|
||
|
{{CodeEnd}}
|
||
|
{{OutputStart}}12345FGHIJ
|
||
|
{{OutputEnd}}
|
||
|
|
||
|
|
||
|
''See also:''
|
||
|
* [[_OFFSET]] {{text|(variable type)}}
|
||
|
* [[DECLARE LIBRARY]]
|
||
|
* [[DECLARE DYNAMIC LIBRARY]]
|
||
|
* [[Using _OFFSET]]
|
||
|
|
||
|
|
||
|
{{PageNavigation}}
|