Re: [C++] Help D20
gohu a dit : "Bon a a vachement avancé avec anonymHax, le truc c'est que notre fonction inite du I18nFileAccessor
déconne complètement pour une raison assez inconnue: la valeur de la pos que on lit est complètement
louphoque (parfois meme négative ou inexistante dans la mémoire)
voici notre fonction,
Merci d'avance pour votre aide
Cliquez pour révéler
Cliquez pour masquer
void I18nFileAccessor::Initiate()
{
uint pos = _reader->readInt();
_reader->setPosition(pos);
uint indexesCount = _reader->readInt();
for (int i = 0; i < indexesCount; i += 9)
{
uint index = _reader->readInt(); // index(i) ???
_reader->readBool();
uint offset = _reader->readInt();
_indexes[index] = offset;
}
int i = _reader->readInt();
while(i > 0)
{
uint oldPos = _reader->getPosition();
QString index = _reader->readUTF();
uint offset = _reader->readInt();
_textIndexes[index] = offset;
i -= _reader->getPosition() - oldPos;
}
_self = true;
}
"
Pas saisi un truc. Vous le sortez d'où votre readBool en plein milieu ?
La fonction Init ressemble à ça en AS chez moi :
public function init(param1:Uri) : void {
var _loc5_:* = 0;
var _loc6_:* = 0;
var _loc8_:String = null;
var _loc2_:File = param1.toFile();
if(!_loc2_ || !_loc2_.exists)
{
throw new Error("I18n file not readable.");
}
else
{
this._stream = new FileStream();
this._stream.endian = Endian.BIG_ENDIAN;
this._stream.open(_loc2_,FileMode.READ);
this._indexes = new Dictionary();
this._textIndexes = new Dictionary();
_loc3_ = this._stream.readInt();
this._stream.position = _loc3_;
_loc4_ = this._stream.readInt();
_loc7_ = 0;
while(_loc7_ < _loc4_)
{
_loc5_ = this._stream.readInt();
_loc6_ = this._stream.readInt();
this._indexes[_loc5_] = _loc6_;
_loc7_ = _loc7_ + 8;
}
while(this._stream.bytesAvailable > 0)
{
_loc8_ = this._stream.readUTF();
_loc6_ = this._stream.readInt();
this._textIndexes[_loc8_] = _loc6_;
}
_log.debug("Initialized !");
return;
}
}
Et aucune trace de readBool.
Et capté le += 9 aussi. Chez moi c'est += 8.
PS : Effectivement, si je passe l'épisode des index, avec le ReadBool et le += 8, je lis des textes tout à fait correct. Seul PB, au bout d'un moment ça plante parce que la clé à déjà été ajoutée.