Sign in Join
Wiki copytemporary

@/fr: what changed

Revision 3 to 4. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11@
22
33L'opérateur d'adessage @ retourne l'adresse d'une [[variable/fr|variable]], d'une [[Procedure/fr|procédure]] ou d'une [[Function|fonction]].
44
55L'opérateur d'adresse @ renvoie l'adresse d'un identifiant associé à une adresse (généralement une variable ou une routine, mais aussi une étiquette).
66
77Normalement, la valeur que @ renvoie est un pointeur non typé. Si vous gérez beaucoup de pointeurs et que vous souhaitez atténuer les problèmes de transmission de références de cible de type incorrect, vous devez utiliser la directive {\$ typedaddress on}.
88
99Voici un exemple qui démontre ce qui produit avec des pointeurs non typés, du code valide et fonctionnel, mais qui génère sémantiquement un résultat erroné:
1010
1111``` pascal
1212program untypedAddressDemo(input, output, stderr);
1313
1414 procedure incrementIntByRef(const ref: PByte);
1515 begin
1616 inc(ref^);
1717 end;
1818 var
1919 foo: integer;
2020 begin
2121 foo := -1;
2222 incrementIntByRef(@foo);
2323 writeLn(foo);
2424 end.
2525```
2626
2727Il était prévu d'obtenir 0 (zéro), mais le programme renvoie -256 à la place. Avec {\$ typedaddress on}, la compilation échoue avec une erreur de type incompatible. Vous attendez généralement ce dernier comportement (échec de compilation) au lieu de perdre du temps avec des heures de débogage.
2828
2929Autres remarques
3030
31-`    En ASCII, le caractère @ (signe AT): a la valeur 64.`
31+```
32+ En ASCII, le caractère @ (signe AT): a la valeur 64.
33+```
3234
3335## Read more
3436
3537- [L'opérateur @](http://www.freepascal.org/docs-html/ref/refse69.html)
3638
3739- [Opérateur typé d'adresse (@)](http://www.freepascal.org/docs-html/prog/progsu69.html)
3840
3941---
4042*From the Free Pascal wiki, page "@/fr", as it stood on 2020-01-25 after a change by Bart, 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).*
4143Category: Symbols/fr

Back to history