1

yop,


Je veux enregistrer des QString (seul la partir c_str m'intéresse bien sûr) et des QDate dans un fichier. Je ne connais pas le format d'une QDate et je n'ai aucune envie de rentrer dedans. Je voudrais juste savoir quel est le moyen le plus simple pour écrire ces types de données dans un fichier :
- quel format de fichier (binaire, xml, format perso ?) ?
- comment écrire des données que je ne connais pas (les QDate en l'occurence) ?

J'avais déjà fait ça, mais pour un fichier où je ne mettais que des strings. Là, si je transforme mes QDate en strings, je ne saurai pas comment les recréer au bon format en ouvrant le fichier.

Merci d'avance pour vos idées. smile

2

Je connais pas Qt, mais essaie de voir du côté de la sérialisation : http://www.siteduzero.com/tutoriel-3-103409-stocker-et-serialiser-des-objets-avec-qt.html

3

avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

Merci bien, ça me fait de la lecture. smile

5

Pen^2 (./2) :
Je connais pas Qt, mais essaie de voir du côté de la sérialisation : http://www.siteduzero.com/tutoriel-3-103409-stocker-et-serialiser-des-objets-avec-qt.html
Afin de simplifier la sérialisation d'objet, Qt à créé une classe dédiée à la sérialisation : QVariant. D'une manière extrêmement générale, on peut considérer que QVariant est la représentation d'un objet quelconque sérialisé.

C'est vraiment n'importe quoi:[ul][li]La classe dédiée à la sérialisation est QDataStream, pas QVariant.[/li][li]QVariant ne sérialise rien du tout, c'est juste un conteneur pour type générique, du coup il contient un identifiant de type et les données en ce type.[/li][li]On peut effectivement sérialiser un QVariant avec QDataStream, mais tout ce que ça fera, c'est écrire d'abord un identifiant du type et ensuite sérialiser les données de la manière prévue par ce type.[/li][li]On peut envoyer n'importe quel type sérialisable directement à QDataStream, sans passer par QVariant, c'est plus rapide et rendra le fichier sérialisé plus compact. QVariant ne sert que quand on ne connaît pas le type à l'avance.[/li][/ul]
Bref, je déconseille fortement ce tutoriel.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

6

Je déconseille fortement le site du zéro en général, il porte plutôt bien son nom. Il est truffé de tutos de qualité douteuses.
avatar

7

Arrête, c'est là que j'ai lu mon premier tuto de C++, quand on voit le résultat, je dirais que certains tutos sont brillantissimes ! #triclasse#

8

Autre Qquestion pendant que j'y suis : j'ai des objets "Contact" (nom, téléphone, etc...) dans une liste. Je veux ajouter et supprimer des Contact de cette liste. Je veux aussi, quand j'insère un Contact, qu'il soit trié, pour qu'en parcourant la liste de Contact, ils sortent suivant l'ordre alphabétique de leur nom.
La doc me conseille QList, parce que ya pas mieux toussa toussa.
Mais y a-t-il un conteneur plus adapté à ce que je veux faire ?

(bonus : si ce conteneur se sérialise directement grâce à QDataStream, c'est parfaitement parfait)

9

(désolé, mais j'avais prévenu que je ne connaissais pas spécialement Qt tripo — j'avais lu en diagonale rapide et j'avoue que je ne voyais pas trop le rapport avec les variants, mais bon...)

edit : mais bon, il fallait bien te renseigner sur la sérialisation, quand même, hein embarrassed

10

Folco (./8) :
Autre Qquestion pendant que j'y suis : j'ai des objets "Contact" (nom, téléphone, etc...) dans une liste. Je veux ajouter et supprimer des Contact de cette liste. Je veux aussi, quand j'insère un Contact, qu'il soit trié, pour qu'en parcourant la liste de Contact, ils sortent suivant l'ordre alphabétique de leur nom.
La doc me conseille QList, parce que ya pas mieux toussa toussa.Mais y a-t-il un conteneur plus adapté à ce que je veux faire ?

Oui, parce qu'une QList n'est pas triée d'office. Insérer sans casser le tri est possible, mais en O(n). Trier après coup est évidemment en O(n log(n)) minimum.

Pour ton usage, une QMap<String, T> (ou QMultiMap si tes noms ne sont pas forcément uniques) est clairement plus efficace qu'une QList<T>, même si la QMap prendra un peu plus de place en mémoire: La QMap est toujours triée (donc tu n'as pas besoin de t'occuper de ça) et insérer (sans casser le tri, évidemment) est en O(log(n)).
(bonus : si ce conteneur se sérialise directement grâce à QDataStream, c'est parfaitement parfait)

C'est bien le cas, mais tu devras écrire les fonctions pour sérialiser ta structure T (dans le cas le plus simple, en sérialisant dans l'ordre chaque membre de la structure tout simplement).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

11

Folco (./7) :
Arrête, c'est là que j'ai lu mon premier tuto de C++, quand on voit le résultat, je dirais que certains tutos sont brillantissimes ! triclasse.img
Certes on arrive a en faire quelquechose, mais autant ne pas apprendre de chose fausse qu'il faudra désapprendre par la suite.
Si tu cherche à te documenter sur un langage, je conseillerais plutôt developpez.com qui est nettement plus sérieux notamment au niveau de la qualité des tutos.

avatar

12

Merci Uthin !