Devenir membre club
Connectez vous
Aide & règlement
Votre 1ère visite
Le règlement
Contacter les admins
Contacter le webmaster
Questions & réponses
Comment soutenir CodeS-SourceS
Comment faire un lien vers CodeS-SourceS
Autres questions
A propos & don
A propos du réseau
Les modérateurs
Remerciements
Faire un don
Le livre d'or
Tous les livres
Les dernières parutions
Les plus consultés
Les critiques
Le top des ventes
Le top favoris des membres
Recevoir des livres blancs
Tous les thèmes
Les derniers messages
Les nouveaux messages
Poser une question
Le Chat - IRC
Tous les tutoriels
Ajouter un tutoriel
Les tutoriels en vidéo
Les formations vidéos
Tous les codes
Ajouter un code
Filtrer par catégorie
Filtrer par date
Les plus récents
Les mis à jour
Les codes par jour
Filtrer par niveau
Niveau débutant
Niveau initié
Niveau expert
Filtrer par type
Les codes avec capture
Les codes avec zip
Les codes .Net
Filtrer par qualité
Les plus populaires
Les plus populaires du mois
Les plus téléchargés
Les mieux notés
Top par catégorie
Top des favoris
Filtrer par auteur
Tous les auteurs
Le top des membres
Les snippets
Déposer votre CV
Consulter les offres d'emploi ou de stage
Consulter les CVs
Déposer une offre d'emploi ou de stage
Modèles de CV et lettres
Trouver une convention collective
Les écoles d'informatique
Toutes les écoles
Ajouter une école
Les outils
Outils pour développeurs
Trouver des ressources
Base de données de CodeS-SourceS
Télécharger les meilleurs logiciels
Comparer les prix
Envoyer des ecards
Création de bannières
Annuaire de la prog
Tous les sites
Ajouter votre site
Le dico de la prog
Toutes les définitions
Ajouter une définition
Les évènements
Tous les évènements
Les évènements à venir
Ajouter un évènement
Téléchargements
CodeS-SourceS Toolbox
CodeS-SourceS Toolbar
Toolbar pour FireFox
Fonds d'écran
Les compil's
Nos partenaires
Magazine Programmez
Frontier.fr
Xiti
ProgOnline
Winwise
Editions Eyrolles
Toute la liste
Les RFC
CS
VB, VB.NET
ASP.NET,ASP
C, C++
ColdFusion
PHP
Javascript
Delphi
Flash
Java
Graphisme
Irc
Assembleur
C#
Mobilité
SQL
Foxpro
Python
Regex
Flex
Windev
Ce site au démarrage
begin process at 2012 02 11 08:14:02
Accueil
Codes
Tutoriels
Forum
Livres
Emploi
Services
Connexion
Trouver un code source :
dans
Tout le site
Codes
Tutoriels
Forum
Blogs
Livres
RFC
Icones
News .NET
Boutique
[ Dernières recherches ]
Veuillez saisir votre recherche... Ex: smtp, lire un fichier, rs232
Options de recherche :
Tous les codes
Tous les codes en .Net
Tous les codes sauf .Net
Langages disponibles :
Tous les langages
ASP / ASP.NET
Assembleur
C / C++ / C++.NET
C# / C#.NET
ColdFusion
Delphi
Flash
Flex, Air, ActionScript
Foxpro
Graphisme
IRC
JAVA / J2EE
Javascript / Ajax / DHTML
PDA / PocketPC
PHP
Python
Regex, Regular Expression, Expression régulière
SQL
Visual Basic, VB6, VB.NET, VB 2005, VB
13 commentaire(s) de cbeyls
sur des sources sur tout
CodeS-SourceS
Déposé sur
Sérialisation dans un fichier xml
Je crois que tu oublies une remarque importante.
XmlSerializer est une classe de sérialisation légère qui permet de sérialiser un objet avec ses champs public. Mais les champs "private", utilisés par la logique interne d'un objet, ne sont pas sérialisés! De plus, on ne peut pas sérialiser les HashTable.
Pour une sérialisation XML complète, il faut utiliser la classe SoapFormatter.
Posté le :
21/02/2005 11:53:15
Déposé sur
Crc32 compatible winrar et winzip ( basé sur le code c++ de c...
> et pour éviter que l appli se freeze je mettais tout ça dans un thread , mais dans la fonction directement c'est beaucoup mieux !
En fait c'est mieux de le mettre dans un 2e Thread, mais dans les sources que j'ai téléchargées ici, tu fais tout dans le même. Et puis, quand tu crées un 2e Thread, il y a un problème: seul le Thread de l'interface graphique est capable de modifier l'interface graphique, donc dans un 2e Thread, la progressBar ne bougerais pas (même si je n'ai pas testé mais c'est toujours le même problème avec les interfaces graphiques WinForms). Quand un 2e Thread doit modifier l'interface graphique, il faut utiliser un delegate et différer son exécution mais bon, on va dire que c'est hors sujet! L'avantage majeur d'utiliser un 2e Thread c'est que, quand l'utilisateur clique sur la croix pour fermer le programme, le Thread graphique peut dire au 2e: Stop! Autrement dit, Thread.Abort()
Ici ce n'est pas le cas, tout se fait dans le même Thread, résultat, une fois que le calcul du CRC est commencé, impossible de l'arrêter comme ça. Alors pour l'arrêter, on pourrait ajouter une méthode Stop() à la classe, qui fait passer un booléen à false et qui permet de sortir de la boucle qui calcule le CRC. C'est juste une suggestion.
La progressBar pose un autre problème: vu la façon dont on l'utilise, la taille du fichier en bytes est passée à MaxValue qui est un int. Ca limite l'utilisation à des fichiers de maximum 2 exposant 31 bytes, autrement dit 2 gigabytes. Pour les fichiers plus gros, ça ne fonctionne pas avec cette méthode.
J'ai pour principe de toujours séparer l'interface graphique du reste du code, donc moi la progressBar je l'ai virée et je n'ai donc pas tous ces problèmes, même s'il est vrai que ça pourrait être bien de connaître le statut de la progression, mais alors via d'autres moyens comme par exemple enregistrer un callback sous la forme d'une fonction qui prend en paramètre une valeur qui représente un pourcentage de progression, par exemple.
Niveau performances, j'ai fait des tests avec plusieurs fichiers sur différents disques durs, et il me semble que la valeur idéale pour le buffer de lecture est de 16384 bytes. Ca ne va pas plus vite que 4096 bytes, mais ça consomme un peu moins de CPU. Au-delà, ça commence à ralentir donc je ne conseille pas.
Posté le :
10/02/2005 01:30:25
Déposé sur
Crc32 compatible winrar et winzip ( basé sur le code c++ de c...
J'ai encore oublié un petit détail :)
if( pBar != null )
{
pBar.Minimum = 0;
pBar.Maximum = (int)myStream.Length;
pBar.Value = 0;
}
Faut mettre la valeur de la progressBar à zéro au début, voilà ;)
J'espère que tu as tout pigé, si jamais tu as des questions, n'hésite pas à me contacter.
Posté le :
09/02/2005 04:59:22
Déposé sur
Crc32 compatible winrar et winzip ( basé sur le code c++ de c...
Hello, c'est encore moi. J'ai vu que tu as changé ta source, c'est sympa. Mais j'ai encore quelques remarques.
En fait j'ai écrit une classe optimisée pour mon usage personnel en m'inspirant de ton code et d'une source en C (l'algorithme est le même, apparemment, c'est le plus rapide, en tous cas j'ai pas trouvé mieux), j'ai enlevé la progressBar, mis quelques commentaires en anglais et j'ai utilisé un Stream en entrée au lieu d'un nom de fichier. C'est un bout de ce code que je t'ai copié-collé.
Seulement, comme toi tu utilises une progressBar, il y a quelques petites choses que tu devrais changer:
1) Tout d'abord d'un point de vue purement esthétique et pratique, je ne vois pas l'intérêt du 2e paramètre, le booléen enableProgress. Si j'étais toi, je l'enlèverais et je demanderais à l'utilisateur d'attribuer la valeur null à l'argument pBar s'il ne souhaite pas de progressBar. Ensuite au lieu de tester
if(enableProgress)
tu testerais
if(pBar != null)
2) Je t'ai dit que tu n'aurais plus besoin de la variable offset, mais tu l'emploies toujours pour la progressBar. Il y a toujours moyen d'utiliser la progressBar sans cette variable, mais il faut un peu adapter ton code. Au début, remplace
long fileSize = myStream.Length;
if( enableProgress ) pBar.Maximum = ( int )fileSize + 2 ;
par
if( pBar != null )
{
pBar.Minimum = 0;
pBar.Maximum = (int)myStream.Length;
}
J'avoue aussi que je n'ai pas compris pourquoi tu faisais +2, normalement la taille du fichier devrait suffire. Ensuite, dans le code de la boucle, remplace:
if( enableProgress ) pBar.Value = offset ;
par
if( pBar != null )
{
pBar.Value += readBytes;
Application.DoEvents();
}
Le Application.DoEvents() c'est pour éviter que ton interface graphique ne plante complètement pendant le calcul du CRC32, et continue à réagir aux événements de la souris et à rester "vivante". Ceci parce que tu effectues le calcul du CRC32 dans le cadre du Thread qui s'occupe de l'affichage. Si tu n'appelles pas DoEvents() ton application est incapable de réagir à la souris ou au clic sur un bouton pendant tout le calcul ! Si tu veux éviter que quelqu'un clique sur un bouton pendant le calcul, grise les boutons ou change le pointeur en sablier avant le calcul et revient à la normale après, mais laisse le DoEvents(), ça évitera à Windows de croire que le programme est planté si tu t'acharnes à la souris dessus.
3) Dernière remarque, mais cela je suppose que tu le sais déjà, le calcul est plus rapide lorsque le code est compilé en mode Release par rapport au mode Debug.
Posté le :
09/02/2005 04:53:32
Déposé sur
Crc32 compatible winrar et winzip ( basé sur le code c++ de c...
petites précisions:
- j'ai donc déclaré readBytes en tant que int juste avant cette boucle.
- BUFFER_SIZE est une constante qui est la taille du buffer, dans ton exemple c'était 4096 mais personnellement je l'ai augmentée à 16384.
Posté le :
04/02/2005 19:26:14
Déposé sur
Crc32 compatible winrar et winzip ( basé sur le code c++ de c...
Pour la lecture, ceci devrait suffire et plus besoin des variables offset, ni diff, ni fileSize:
// Read the Stream to its end and fill the buffer
while( ( readBytes = stream.Read(buffer, 0, BUFFER_SIZE) ) != 0 )
{
// Compute the new CRC32 for the current buffer content
for(int i=0; i < readBytes; ++i)
{
crc32 = ( crc32 >> 8 ) ^ lookupTable[ ( crc32 & 0xFF ) ^ buffer[i] ];
}
}
Posté le :
04/02/2005 19:18:25
Déposé sur
Crc32 compatible winrar et winzip ( basé sur le code c++ de c...
Pour les ToString(), effectivement je n'avais pas fait attention au fait que la portion de code est commentée :)
Par contre, pour la lecture, je comprend ce que tu veux faire mais je t'explique que ce n'est pas la bonne façon de faire. Si tu demandes à lire 4096 bytes dans un Stream, tu peux très bien te retrouver par exemple avec 4090 bytes même si tu en as demandé 4096 et qu'il reste plus de 4096 bytes à lire, il faut donc toujours tester quel est le nombre de bytes que la fonction Read renvoie. Je posterai le code correct plus tard dans la journée.
Posté le :
04/02/2005 15:27:01
Déposé sur
Crc32 compatible winrar et winzip ( basé sur le code c++ de c...
Les ToString() pendant la création de la lookup table, ça me paraît totalement farfelu!
De plus, tu pourrais générer la table uniquement la première fois que la fonction est appelée et ensuite la laisser en mémoire, pour gagner un peu de temps lors des appels suivants à la méthode.
Quant à la lecture dans le fichier, tu peux la faire directement avec
int bytesLus = myStream.Read( byteArray , 0 , 4096 );
sans calculer la taille restate auparavant. La méthode Read renvoie le nombre de bytes effectivement lus. Attention, elle peut très bien en renvoyer moins que la taille du buffer même si on n'est pas à la fin du fichier! (même si c'est très improbable). C'est écrit dans la documentation du SDK:
Stream.Read: Valeur de retour: Nombre total d'octets lus dans la mémoire tampon. Cela peut être inférieur au nombre d'octets demandé si ce nombre n'est pas actuellement disponible ou égal à zéro (0) si la fin du flux a été atteinte.
Posté le :
04/02/2005 05:48:40
Déposé sur
Ms agent (companons)
Ce code utilise ActiveX et par conséquent ne fonctionne que dans Microsoft Internet Exploser, de plus uniquement sous Windows, ce qui est très dommage.
Posté le :
22/01/2005 02:02:47
Déposé sur
Afficher l'heure du navigateur dans la bare de status
Concernant le code original, il est bien, mais le start est mal fait. J'enlèverais le
TimerRunning = true;
de la fonction display() et j'écrirais le start() comme cela:
function start() {
if(! TimerRunning) {
TimerRunning = true;
display();
}
}
Posté le :
22/01/2005 01:58:31
1
2
Nos sponsors
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.
par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article
par Patrick Guimonet
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3
par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article
par ROMELARD Fabrice
MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !
MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !
par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article
par Vko
[FRAMEWORK 4] LES TASKS ET LE THREAD UI
[FRAMEWORK 4] LES TASKS ET LE THREAD UI
par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article
par fathi
WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE
WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE
par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article
par JeremyJeanson
La suite
RSS
Côté IT
Utiliser Office 365 pour un projet d?équipe - PART 2
Utiliser Office 365 pour un projet d?équipe - PART 1
SharePoint 2007 : Installation du Service Pack 3 de MOSS
SharePoint 2007 : Installation du Service Pack 3 de WSS V3
Installation de SQL Server DENALI CTP3
Mise à jour de Windows 2003 R2 vers Windows 2008 R2
Upgrade de SQL Server 2005 vers SQL Server 2008 R2
La suite
RSS
Offres d'emploi
Recherche Recherche développeur web ASP et ASP.Net
Recherche Analyste Programmeur Adélia
Recherche Développeur eZ Publish confirmé
Recherche AP (H/F) ACCESS EXCEL VBA
Recherche SUPPORT INFORMATIQUE / DEVELOPPEUR
Recherche Developpeur web
Recherche développeur Web
Déposer une offre
La suite
RSS
Formations Video
Coffret : Ateliers sur la mode
Atelier sur la mode : Motifs et matières
Atelier sur la mode : La planche tendance
Atelier sur la mode : De retour de pige et repérage
Corel Painter 12 : Les fondamentaux
Coffret : Microsoft Office 2010 de A à Z
De Microsoft Office 2003 à 2007 et 2010
La suite
RSS
Appels d'offres
Passerelle Pericles sur site Joomla 17
Budget :
499€
Infogerance Serveur Debian Linux
Budget :
2 400€
Developpeur applications iphone - ipad - android
Budget :
800€
La suite
RSS
Logiciels
Academy System (17.2.1.0)
ACADEMY SYSTEM (17.2.1.0)
Logiciel de gestion des établissements. - élèves/étudiants (inscription, dossier, absence...) -...
Cliquez pour télécharger Academy System
Easy-Planning (1.0.0.1)
EASY-PLANNING (1.0.0.1)
Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ...
Cliquez pour télécharger Easy-Planning
COLLECTOR PLUS (3.00B)
COLLECTOR PLUS (3.00B)
COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par : - L...
Cliquez pour télécharger COLLECTOR PLUS
PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)
PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)
PONAMEDIA TV DEVIENS HELLLOOO FLASH LA TV SUR VOTRE ORDINATEUR. Toute une plateforme Multi...
Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO
LettresFaciles 2011 (8.0.0.1)
LETTRESFACILES 2011 (8.0.0.1)
LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types. Son inte...
Cliquez pour télécharger LettresFaciles 2011
+ de logiciels à télécharger
Vidéos drôles
Halloween Party
Terry Tate Office Linebacker Superbowl 2003
Jeu vidéo instructif
C'est un véritable vol !
Banana Song
Comment attraper la grippe A
Parodie Pub Window 7
La suite
RSS
Sondage...
Votre navigateur n'utilise pas le javascript, pour
voter aux sondages de ce site, cliquez ici
Statistiques
1 873 499
membres
33
nouveaux aujourd'hui
16 151
membres club
Comparez les prix
ARCHOS 5 Internet Tablet 32 Go - Tablette Internet
Entre 296€ et 297€
Visiter le guide achat
CalendriCode
Février
2012
L
M
M
J
V
S
D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Consulter la suite du CalendriCode
Photothèque
Visiter la photothèque
CS Tool Box