RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 - 30 août 2006 à 18:59
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 - 2 sept. 2006 à 18:49
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
2 sept. 2006 à 18:49
Autant pour moi,!!!
Merci Caribensila, j'avais déjà la tête dans son code!

jean_Jean
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
2 sept. 2006 à 16:10
--> Jean_Jean Relie l'Explication finale de Florenth. Il a ajouté un commentaire sur ce sujet que, semble-t-il, tu as zappé. héhéhé
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
2 sept. 2006 à 16:04
Bonjour Florenth!
je travaille actuellement sur ton code que j'adapte à mes besoins.
j'ai à gérer un fichier (genre log) sur le déroulement d'un processus: texte, valeurs entières et réelles. Jedécide donc d'utiliser le stream...
c'est je pense, l'aspect, l'intérêt même de ton code est comme tu le dit toi-même de "traiter facilement les fichiers indépendament du format d'aligmenent des octets dans les mots, à savoir BigEndian ou LowEndian".
j'ai cherché la signification de ces 2 derniers termes et ne les ai pas trouvé: que signifie bigendian et LowEndian. je dormirai peut être moins bête ce soir!

Merci
Jean_Jean
Si tu écrits plusieurs Integer dans un ordre différent, comment fait-tu pour les identifier ? Tu utilise une constante unique en plus des TValueType ?
Dans tous les cas, j'ai bien compris idée. j'ai aussi fait un composant du genre qui permet de centraliser tout les flux dans un seul. On peut donc saugegarder configuraitn, et autres fichiers en un seul sans se préocuper ni de l'ordre, ni du lieu de stockage, le composant se charge de tout. Et c'est compatible Design-time (utilisation de TCollection).
C'est un peu différent du tien mais dans mon cas, couplé avec le TExStream, c'est super utile.
Utilisateur anonyme
2 sept. 2006 à 12:03
Bon en fait je me suis mal exprimé :
l'interêt est de pouvoir lire les données peut importe l'ordre d'écriture.

Je m'en suis servi il y a longtemps déjà pour mon composant de Sauvegarde et je peu recharger n'importe quel partie sans être obligé de lire toutes les données depuis le début. Quand ton fichier ne fait que 10 Ko c'est pas un problème mais quand le fichier fait en 5 et 20 Mo où plus tu es bien content de pouvoir le faire.

Par contre je n'ai pas utilisé de nom comme l'a fait Caribensila juste les TValueType et d'autres type existant déjà sous Delphi
@+
Cirec
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
1 sept. 2006 à 20:01
oui, c'est à nous de bosser!
On reviendra après...Mais si t'as d'autres idées Florenth, ne te gêne surtout pas :))
Super
jean_jean
Mais l'unité est stable maintenant ! A mon goût, il ne manque rien (à vous de trouver des lacunes, chacun son boulot ^^)
Je ne fais que rajouter des exemples. A venir donc, un exemple de TBitStream (quand j'aurais un peu de temps).
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
1 sept. 2006 à 00:47
Des commentaires, des commentaires..?
On attend que ça se stabilise! mdr



PS: J'ai la première version. C'est un collector déjà super didactique! ;)
J'ai mis à jour la procédure SwapBytes. Elle accepte désormais n'importe quel type (paramètre non typé) et, contrairement à mon intuition du dépert, je n'ai pas eu besoin de recourir à l'assembleur. La procédure finale est même archi-simple, il falait juste y penser.
J'ai été agéablement surpris que cette procédure est deux fois plus rapide que l'inversion "traditinnelle" avec "shl" et "or" ! elle permet de faire 1'500'000'000 (un miliard cinq cent millions) d'inversion d'un nombre de 32 bits (Integer) par seconde ! Autant dire que la différence de performance ne se fait même pas sentir entre low et big-endian.

j'ai aussi rajouté un code d'exemple de la classe TEndianExStream, je conseille à tous ceux qui ont une ancienne version de ExStream.pas de télécharger la nouvelle.

Et des commentaires s'il vous plait, posez-en, même si c'est pour dire que tout fonctionne !! ^^ Merci d'avance !
Pour faire plaisir à JuioDelphi (mdr), j'ai ajouté un exemple.
Sinon, les fonctions SwapBytes*** qui concernent les flottants n'ont pas l'air très correctes mais je n'a pas encore touvé un moyen simple d'y remédier (le débugging est délicat, passage obligé par la fenetre CPU mais évidement, ça ne marche pas).

Je prévois de mettre ça à jour quand j'aurais enfin trouvé la solution 8à mon avis, ça va encore devoir se jouer avec de l'assembleur ...)

J'ai aussi remplacé le while par un if (voir mon autre commentaire)
Oui Cirec mais ce n'est pas le but.
Quel est l'intéret de lire un fichier dont on ne connait pas la structure ?
En plus, l'utilisation des TValueType oblige que on l'écrive avant d'écrire la valeur elle même. Dans ce cas, tu consomme un peu plus d'espace disque (pas grand chose certes ...) et tu empèches la lecture de fichiers autres que ceux que tt as écrit.

Par exemple, si je veux lire un fichier Word (je dis ça au hazard), il faut évidemment que je connaisse la structure. Sinon, à quoi sert de lire un fichier juste pour dire qu'on l'a lu ?

Mais ton idée est quand mêem intéréssante, ce serait bien que tu la développes un peu plus car là, j'ai du mal à comprendre l'utilité.
Merci Jean, ça fait plaisir de voir que ça sert !

Petite précision (au cas où certains me feraient la remarque): dans la méthode Flush() du TBitStream, il faudrait remplacer le "while" par un "if" mais ça ne gène pas trop vu que le nombre de bits dans le buffer ne dépasse jamais les 8 en dehors de WriteBits()
Utilisateur anonyme
31 août 2006 à 11:55
Salut,
interessant(comme toujours)
mais il est toujours impossible de lire le flux dans un ordre différent de celui de l'écriture.

En utilisant les TValueType
TValueType = (vaNull, vaList, vaInt8, vaInt16, vaInt32, vaExtended,
vaString, vaIdent, vaFalse, vaTrue, vaBinary, vaSet, vaLString,
vaNil, vaCollection, vaSingle, vaCurrency, vaDate, vaWString,
vaInt64, vaUTF8String, vaDouble);

tu pourrais faire en sorte que l'on puisse lire le fichier même si on en connait pas la structure (l'ordre des données)

@+
Cirec
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
31 août 2006 à 08:07
Super pédagogique ton code florenth! :)
Je viens de parcourir ton code. je cherchais ce type de code pour gagner un peu de temps!
Je vais l'itilisr d'ici peu.
nouveau sur le site, j'aprécie!!!

Bien à toi
Jean_Jean
Je veux bien en mettre mais tu pourrais me donner une idée simple ?
Sinon, je doute un peu que tu en aie besoin ^^
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
30 août 2006 à 18:59
Je veux un exemple =)
Rejoignez-nous