Absolute/fr
Deutsch · English · Español · Français · Suomi · Русский
Ce modificateur de déclaration indique la variable déclarée est à la même adresse que la variable qui suit absolute. Toutefois, aucune cohérence entre les valeurs des deux variables n'est assurée.
Var
sintI: ShortInt;
lintI: LongInt absolute sintI;
begin
// Affichage correct
lintI := 20;
ShowMessage(inttostr(lintI) + ' ' + inttostr(sintI)); // Anzeige: 20 20
// Affichage absurde
lintI := 2000;
ShowMessage(inttostr(lintI) + ' ' + inttostr(sintI)); // Anzeige: 2000 -45
end;// Example on little endian x64 processor
Uses SysUtils;
Var
anInt : Integer;
anotherInt : Integer absolute anInt;
firstByte : Byte absolute anInt;
begin
// with both Integer variables at the same memory location, a change to one is reflected
// in the other
anInt := 20;
WriteLn(IntToStr(anInt) + ' ' + IntToStr(anotherInt)); // Outputs: 20 20
// a value of 20 fits in the first byte:
WriteLn('firstByte: ' + IntToStr(firstByte)); // Outputs: firstByte: 20
anotherInt := 333;
WriteLn(IntToStr(anInt) + ' ' + IntToStr(anotherInt)); // Outputs: 333 333
// 333 is too large a value to fit in one byte
// little-endian x64 - least significant byte is first in memory:
// 333 = 101001101 = 01001101 00000001 in memory = 0x4D 0x01 = decimal: 77 1
WriteLn('firstByte: ' + IntToStr(firstByte)); // Outputs: firstByte: 77
end.From the Free Pascal wiki, page "Absolute/fr", as it stood on 2020-12-19 after a change by E-ric, 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.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
