Difference between revisions of "PtrInt"
From Lazarus wiki
Jump to navigationJump to search (categorize page, insert links in dead-end page, rework) |
|||
Line 1: | Line 1: | ||
− | ''' | + | The data types '''{{Doc|package=RTL|unit=system|identifier=ptrint|text=<syntaxhighlight lang="delphi" inline>ptrInt</syntaxhighlight>}}''' (“Peter Int”) and '''{{Doc|package=RTL|unit=system|identifier=ptruint|text=<syntaxhighlight lang="delphi" inline>ptrUInt</syntaxhighlight>}}''' are signed and unsigned [[Integer|<syntaxhighlight lang="pascal" inline>integer</syntaxhighlight>]] [[Data type|data types]] respectively having the same [[SizeOf|<syntaxhighlight lang="delphi" inline>sizeOf</syntaxhighlight>]] of a [[Pointer|<syntaxhighlight lang="delphi" inline>pointer</syntaxhighlight>]]. |
− | + | == application == | |
+ | * Use <syntaxhighlight lang="delphi" inline>ptrInt</syntaxhighlight> if an <syntaxhighlight lang="pascal" inline>integer</syntaxhighlight> value will eventually be [[Typecast|typecasted]] to a <syntaxhighlight lang="delphi" inline>pointer</syntaxhighlight>. | ||
+ | * Regardless of the size taken up by its elements, an [[Array|<syntaxhighlight lang="pascal" inline>array</syntaxhighlight>]] cannot have more than <syntaxhighlight lang="delphi" inline>high(ptrInt)</syntaxhighlight> elements. Additionally, the range type must be a subrange of <syntaxhighlight lang="delphi" inline>ptrInt</syntaxhighlight>.<sup>[https://www.freepascal.org/docs-html/current/user/userse62.html]</sup> | ||
+ | |||
+ | == notes == | ||
+ | * <syntaxhighlight lang="delphi" inline>PtrInt</syntaxhighlight>/<syntaxhighlight lang="delphi" inline>ptrUInt</syntaxhighlight> are not necessarily the same size of <syntaxhighlight lang="delphi" inline>ALUSInt</syntaxhighlight>/<syntaxhighlight lang="delphi" inline>ALUUInt</syntaxhighlight>. | ||
+ | * The introduction of <syntaxhighlight lang="delphi" inline>ptrInt</syntaxhighlight> was a mistake. New code should not use it. | ||
+ | * {{Doc|package=RTL|unit=system|identifier=intptr|text=<syntaxhighlight lang="delphi" inline>IntPtr</syntaxhighlight>}} and {{Doc|package=RTL|unit=system|identifier=nativeint|text=<syntaxhighlight lang="delphi" inline>nativeInt</syntaxhighlight>}} are aliases for <syntaxhighlight lang="delphi" inline>ptrInt</syntaxhighlight>. | ||
+ | * {{Doc|package=RTL|unit=system|identifier=uintptr|text=<syntaxhighlight lang="delphi" inline>UIntPtr</syntaxhighlight>}} and {{Doc|package=RTL|unit=system|identifier=nativeint|text=<syntaxhighlight lang="delphi" inline>nativeUInt</syntaxhighlight>}} are aliases for <syntaxhighlight lang="delphi" inline>ptrUInt</syntaxhighlight>. | ||
+ | * <syntaxhighlight lang="delphi" inline>PtrInt</syntaxhighlight> and <syntaxhighlight lang="delphi" inline>ptrUInt</syntaxhighlight> are redefined by the <syntaxhighlight lang="delphi" inline>unit</syntaxhighlight> <syntaxhighlight lang="delphi" inline>unicodeData</syntaxhighlight>. | ||
+ | |||
+ | [[Category: Data types]] | ||
+ | [[Category: FPC]] |
Revision as of 00:07, 23 January 2022
The data types ptrInt
(“Peter Int”) and ptrUInt
are signed and unsigned integer
data types respectively having the same sizeOf
of a pointer
.
application
- Use
ptrInt
if aninteger
value will eventually be typecasted to apointer
. - Regardless of the size taken up by its elements, an
array
cannot have more thanhigh(ptrInt)
elements. Additionally, the range type must be a subrange ofptrInt
.[1]
notes
PtrInt
/ptrUInt
are not necessarily the same size ofALUSInt
/ALUUInt
.- The introduction of
ptrInt
was a mistake. New code should not use it. IntPtr
andnativeInt
are aliases forptrInt
.UIntPtr
andnativeUInt
are aliases forptrUInt
.PtrInt
andptrUInt
are redefined by theunit
unicodeData
.