Pour les bytes nuls, une boucle permet de trouver le bon nombre assez facilement. Leur nombre varie de zéro jusqu'à 31... Une taille de zéro = 0 bytes nuls et une taille de un = 31 bytes nuls. À partir de 31, on continue de soustraire pour trouver le reste. Assez simple, mais cela ne s'applique que pour la section SCNF. Les autres sections utilise probablement une autre gamme de chiffres pour chaque taille.
Voici la boucle que j'ai créer:
Code:
function null_bytes_length(data_size:Integer): Integer;
var current_num, total_null_bytes:Integer;
begin
//Trouve le bon nombre de bytes nuls
current_num := 0;
total_null_bytes := 0;
while current_num <> data_size do
begin
if total_null_bytes = 0 then
begin
total_null_bytes := 31;
end
else
begin
Dec(total_null_bytes);
end;
Inc(current_num);
end;
Result := total_null_bytes;
end;
Il y a peut-être une manière plus simple d'intégrer ça, mais j'ai pas trop cherché.
Pour la «solution de rechange» pour ne pas faire planter le jeu avec la taille des sections, je pense qu'il serait quand même bien de mettre une option à quelque part pour l'activer ou la désactiver.