Un editeur de dbc avec Qt
Salut,

Est-ce qu'on pourrait avoir un fichier .zip avec toute la solution dedans ? Comme ça on pourra mieux t'aider.

Sgt Fatality
Code :
const QVariant *byte = (QVariant *) malloc (sizeof(QVariant));
byteSize = GetByteSize(filenameFRT , 1);
if(fread(&byte , byteSize , 1 ,f) == 1) //Devrait être byteSize

Pourquoi utiliser un QVariant ?
Tu devrais (normalement) faire un free() à un moment si tu utilise malloc()
Tu dois aussi tester la validité du pointeur retourné par malloc()

Code :
for(int a = 0 ; a < columnNumber ; ++a)//Nombre de collonnes
    {
      for(int i = 0 ; i < recordCount ; ++i ) //recordCount étant le nombre de chose a lire
      {
          //Lecture de la donnée
          const QVariant *byte = (QVariant *) malloc (sizeof(QVariant));
          if(byte) //  <============= Pointeur Valide ?
          {
           byteSize = GetByteSize(filenameFRT , 1);
           if(fread(byte , byteSize , 1 ,f) == 1) //Devrait être byteSize
           {
            ......
           }  
           free(byte); // <================= free memory alloc
         }
     }
  }
Merci Branruz j'ai rajouté ça . J'ai toujours la même chose , DBCB.exe a cessé de fonctionner + code d'erreur -1073741819

Je vous ai fait un zip : http://www.megaupload.com/?d=JWK7DV32

J'ai cette partie du code dans le constructeur pour les test . Si j'ai du temps plus tard je ferrais ça un peut mieux
Édition :
Le QVariant c'est pour le type de la variable que je ne peux pas savoir a l'avance . Donc le QVariant remplis le role d'un void en modifiant le type de la variable une fois remplie
Édition :
Ah petit changement , maintenant j'ai un segmentation fault

Je cherche Clin
En fait, tu lis toujours 4octets par 4 octets. ( Wiki )
Pas besoin de se prendre la tete avec le QVariant.
Pourquoi tu l'ecris pas en C, Qt te sers juste pour le gui, nan ?
Tu devrais aussi inverser les boucles for(..) je pense
car la tu lis la meme colonne pour chaque enregistrement
au lieu de lire chaque colonne pour un meme enregistrement Blink

genre,
Code :
unsigned int Val;
for(int a = 0 ; a < columnNumber ; ++a)//Nombre de collonnes
    {
      for(int i = 0 ; i < recordCount ; ++i ) //recordCount étant le nombre de chose a lire
      {
          //Lecture de la donnée
            if(fread(&Val,sizeof(Val), 1 ,f) == 1)
           {
            ......
           }  

     }
  }
Ouai mais attend des fois j'ai des string des fois des int a stocker . Donc le type je le sais pas a l'avance d'où l'utilité du QVariant . Après j'ai des soucis a utiliser la bibliothèque standard avec Qt

Je ne vois pas en quoi je lis toujours la même colonne ...

J'vais éssayer ton code
Édition :
OMG ça marche ... MERCI BRANRUZ !!!!!!!!!!!! ENFIN

Je laisse ouvert au cas où j'ai encore besoin d'aide plus tard Smile

Voicis donc le code final :

[code=cpp] unsigned int Val;
for(int a = 0 ; a < columnNumber ; ++a)//Nombre de collonnes
{
for(int i = 0 ; i < recordCount ; ++i ) //recordCount étant le nombre de chose a lire
{
//Lecture de la donnée
if(fread(&Val,sizeof(Val), 1 ,f) == 1)
{
//Affichage de la donnée
QStandardItem *item = new QStandardItem;
item->setData(Val , 0);
model->setItem(i , a , item);// j , a
}

}
}

ui->DViewer->setModel(model);
[/code]
(24-05-2011 16:57)Asedic a écrit :  Ouai mais attend des fois j'ai des string des fois des int a stocker . Donc le type je le sais pas a l'avance d'où l'utilité du QVariant . Après j'ai des soucis a utiliser la bibliothèque standard avec Qt
Dans l'ordre de lecture du fichier:
[Tu lis l'entete]
Tu lis entierement la zone binaire (des int, des unsigned et des float)
Tu charge ensuite la zone de texte si elle existe
2 chose differentes...

(24-05-2011 16:57)Asedic a écrit :  Je ne vois pas en quoi je lis toujours la même colonne ...
Bah, chacun sa méthode pour l'ordre de lecture, ca marche aussi comme ca.

Bon courage pour la suite, t'es bien partis la Gg
Oui maintenant que ça marche comme ça ... Hihi Le problème ça sera l'édition , faudra tout repenser a mon avis ...

Sinon comment ça se fait que j'arrive pas a ouvrir les gros fichiers genre spell.dbc ? Il reste sur "(ne répond pas)"
Édition :
J'ai rien dis , après création d'une progressbar : Le chargement du fichier spell.dbc est hyper long ! A peine 10% en 5 minutes ... J'utilise presque pas mon processeur , il va falloir multithread nan ?
Édition :
J'vais lire ça : http://doc.trolltech.com/4.4/threads-mandelbrot.html
oé, ça dépends des fonctions que tu utilise à ce qu'ont ma dit.
tu as essaye "processEvents() " ?
http://doc.trolltech.com/4.6/qcoreapplic...cessEvents

Je vais regarder ça merci Clin
Asedic a écrit :Le chargement du fichier spell.dbc est hyper long ! A peine 10% en 5 minutes

bon 10% en 5min tu a un probleme qd meme mais je rappel qd meme
que le fichier spell.dbc c'est plus de 58000 spells environ qui possede chacun
231 colonnes (en 335.12340)

58000*231 => ca fait pas mal de fread(...) ca. Heureux

Asedic a écrit :.....après création d'une progressbar
Oui le truc qui ralenti bien le programme sur des lectures en rafale, une progressBar. Clin

NB: Pour un traitement du spell.dbc 335.12340, le mien charge en 2 - 3 min
donc c'est qd meme long, ne te fais pas avoir Clin

Retourner en haut Accueil