Sign in Join
Wiki copytemporary

Cardinal/ru: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-**Cardinal** - это целочисленный тип, определенный в качестве псевдонима типа **DWord** для 32-битных платформ. Также как и **DWord** (двойное слово) этот тип данных является 32-битным и интерпретируется как беззнаковое целое. Минимальное значение этого типа 0x0000000, а максимальное - [[Hexadecimal/ru|0xFFFFFFFF]]) (4,294,967,295).
2-
3-В системах на базе процессоров x86 тип **Cardinal** часто используется для хранения адресов памяти, как [[Pointer/ru|указатель]]:
1+**Cardinal** \- это целочисленный тип, определенный в качестве псевдонима типа **DWord** для 32-битных платформ. Также как и **DWord** (двойное слово) этот тип данных является 32-битным и интерпретируется как беззнаковое целое. Минимальное значение этого типа 0x0000000, а максимальное - [[Hexadecimal/ru|0xFFFFFFFF]]) (4,294,967,295).
42
5-``` pascal
6- var
7- anAddress: Cardinal;
8- anObject: TObject;
9- begin
10- anAddress := Cardinal(Self);
11- with TObject(anAddress) do
12- begin
13- // anAddress is casted as a TObject.
14- end;
15- end;
3+В системах на базе процессоров x86 тип **Cardinal** часто используется для хранения адресов памяти, как [[Pointer/ru|указатель]]:
164```
5+var
6+ anAddress: Cardinal;
7+ anObject: TObject;
8+ begin
9+ anAddress := Cardinal(Self);
10+ with TObject(anAddress) do
11+ begin
12+ // anAddress is casted as a TObject.
13+ end;
14+ end;
15+```
1716
18-Однако, из-за того, что в 32- и 64-битных системах порядок следования байт в памяти *от младшего к старшему*, использование типа **Cardinal** больше не рекомендуется для операций (арифметики) с адресами памяти (указателями). Вместо него рекомендуется использовать типы **NativeInt** или **NativeUInt**. Эти типы соответствуют размерам регистров центрального процессора, которые могут использоваться для работы с адресами памяти, и всегда будут иметь правильный размер. Например, в 64-битных операционных системах тип **NativeUInt** будет аналогичен типу **UInt64** или **QuadWord**, а в 32-битных **NativeUInt** будет аналогичен типу **DWord** или **Cardinal**.
17+Однако, из-за того, что в 32- и 64-битных системах порядок следования байт в памяти _от младшего к старшему_ , использование типа **Cardinal** больше не рекомендуется для операций (арифметики) с адресами памяти (указателями). Вместо него рекомендуется использовать типы **NativeInt** или **NativeUInt**. Эти типы соответствуют размерам регистров центрального процессора, которые могут использоваться для работы с адресами памяти, и всегда будут иметь правильный размер. Например, в 64-битных операционных системах тип **NativeUInt** будет аналогичен типу **UInt64** или **QuadWord** , а в 32-битных **NativeUInt** будет аналогичен типу **DWord** или **Cardinal**.
1918
19+Типы данных
20+---
21+Простые типы | [[Boolean/ru|Boolean]] | [[Byte/ru|Byte]] | Cardinal | [[Char/ru|Char]] | [[Currency/ru|Currency]] | [[Extended/ru|Extended]] | [[Int64/ru|Int64]] | [[Integer/ru|Integer]] | [[Longint/ru|Longint]] | [[Pointer/ru|Pointer]] | [[Real/ru|Real]] | [[Shortint/ru|Shortint]] | [[Smallint/ru|Smallint]] | [[Word/ru|Word]]
22+Сложные типы | [[Array/ru|Array]] | [[Class/ru|Class]] | [[Record/ru|Record]] | [[Set/ru|Set]] | [[String/ru|String]] | [[Shortstring/ru|Shortstring]]
23+
2024---
21-*From the Free Pascal wiki, page "Cardinal/ru", as it stood on 2020-02-10 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
25+*From the Free Pascal wiki, page "Cardinal/ru", as the Internet Archive kept it on 2025-01-19, last changed on 2020-02-11. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history