12
votes

Que signifie "$" avant un numéro à Delphi?

J'essaie de convertir le code DELPHI en vb.net et je ne suis pas sûr de cette ligne:

stream.Seek($42, soFromBeginning);


0 commentaires

3 Réponses :


15
votes

$ est le préfixe pour une constante hexadécimale. Dans vb.net, c'est & h, vous écririez et H42.


6 commentaires

Les littéraux entier de Delphi permettent «X», «0x» et «$» pour désigner une notation hexadécimale.So '$' n'est pas le préfixe.


@ AZ01 Je peux croire 0x (bien que je n'étais pas au courant de cela et je n'ai pas encore d'essayer), mais je suis absolument certain que ni la hache ni Xa n'est un littéral entier.


@ AZ01 et maintenant que j'ai essayé, je vois que 0x est absurde aussi loin que Delphi est également concerné.


@ AZ01 pensait probablement à Strings être converti en entiers. La fonction val accepte $ , x , x , 0x et 0x en tant que préfixes hexadécimaux et val est ce qui est utilisé par strtoint et lire . Mais val n'est pas ce qui est utilisé lors de l'analyse du langage Delphi; Le compilateur n'accepte que $ pour les numéros hexadécimaux.


@ROBKENNEDY Merci pour cela, je suis heureux de voir qu'il y a actuellement une vérité dans la demande de @ AZ01, même si elle n'est pas liée à cette question. Il est peut-être intéressant de noter que je suis incapable de trouver la syntaxe précise acceptée par val , strtoint ou lecture documenté dans l'aide, même dans l'aide de Delphi 7.


Oui, tu as raison, mon commentaire initial est totalement sorti, mais il est trop tard pour supprimer maintenant les commentaires ...



1
votes

La valeur de 42 $ est le décalage depuis le début du flux.

dans vb.net qui serait: xxx


0 commentaires

5
votes

Le code requis pour vb.net est presque identique: xxx

Les points de note sont les suivants:

  • $ dans Delphi est le préfixe de Hexadecimal.
  • Le Sofrombinting correspond à deamorigin.begin .

0 commentaires