Bonjour,

Je me permets d'ouvrir ce post (qui n'a pas de question) car je trouve que le titre de celui-ci n'est pas très parlant (alors que le thème est le même), et qu'il est toujours bon de se rafraichir la mémoire, , sinon gare aux effets de bord !

C'est un coup de bol qui m'a permis de détecter le problème exposé ci-dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
function Calcule(_word: word; _byte1,_byte2: byte): int64;
begin
  Result := _word * _byte1 * _byte2 * 500;
  // devrait être 40 000 000 000, donne 1 345 294 336
  Result := Int64(_word * _byte1 * _byte2) * 500;
  // OK : transtypage obligatoire, donc !
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(Calcule(20000, 16, 250)));
end;
Je n'ai pas l'impression que ce transtypage soit obligatoire sous Delphi (je ne l'ai pas sous la main), je testerai ce soir...

Bonne journée,