begin process at 2012 05 27 15:28:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > DÉCOUPEUR DE FICHIERS (EN C++ BUILDER ET DEV-C++)

DÉCOUPEUR DE FICHIERS (EN C++ BUILDER ET DEV-C++)


 Information sur la source

Note :
Aucune note
Catégorie :Fichiers / Disque Classé sous :découpeur, fichiers, split, build, zaagane Niveau :Débutant Date de création :13/02/2007 Date de mise à jour :14/10/2008 17:27:34 Vu / téléchargé :7 128 / 540

Auteur : zaagane

Ecrire un message privé
Site perso
Commentaire sur cette source (29)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Salut a tous,

ZM Split est un découpeur de fichiers, permet de  découper un fichier en des petites partitions afin de faciliter son transfert par Internet ou par des disquette, clés USB�

Les fonctions de découpages et de recompositions sont écrites dans des fichier �.h� séparés: respectivement �Split.h� et �Build.h� pour les rendre portable. J�ai programmé deux versions une avec une interface graphique en utilisant �Borland C++ Builder 6� et une sous console en utilisant 'Dev-c++' pour montrer la portabilité du code.

Source

  • tout est dans le ZIP
 
tout est dans le ZIP

 Conclusion

Merci a  MickCo pour ses conseils et son aide.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   ZM Split v3
    • ZM Split Devc++ version.zipTélécharger ce fichier [Réservé aux membres club]48 441 octets
    • ZM Split v3.17.02.2008 (c++ builder6).zipTélécharger ce fichier [Réservé aux membres club]356 309 octets

Télécharger le zip


 Historique

24 février 2007 10:28:08 :
le zip maitenant contient un executable marche sans setup et une capture d'ecran
05 mars 2007 09:39:12 :
cette version est bien améliorée: - pas de bloquage de l'interface. - augmenter La vitesse.
24 février 2008 13:21:21 :
Dans cette nouvelle version beaucoup d’améliorations sont ajoutés : - portabilité du code est amélioré. (Split.h, Build.h) - réglage de beaucoup de bugs - le fichier .zip maintenant contient de version une version en c++ builder et une autre en Dev-C++
25 février 2008 11:14:42 :
réglage d'un problème dans le .ZIP
14 octobre 2008 17:27:34 :
Le zip maintenant contient deux versions : - version avec une interface graphique en c++ builder 6 - version sous-console en DEV c++

 Sources du même auteur

Source avec Zip Source avec une capture AUTOCHUTDOWN EN C++ BUILDER 6
Source avec Zip EXEMPLE D'UN RÉSEAU DE NEURONES CALCULE LA FONCTION 'OU EXCL...

 Sources de la même categorie

COMPTER LE NOMBRE DE PAGES D'UN FICHIER PDF par Renfield
Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML par pgl10
Source avec Zip COPIE DE FICHIERS PAR RESEAU LOCAL par cczerty
Source avec Zip [MYLIB] GESTION DE FICHIERS par Galaad2908
Source avec Zip TEMPLATES C/C++ POUR VS 2010 par BruNews
DLL - SPLIT AVEC MULTIPLE DELIMITEUR par Jbs106

Commentaires et avis

Commentaire de yoyo269 le 14/02/2007 09:30:58

Tu ferais mieux de mettre un exécutable dans le zip et pourquoi pas une capture d'écran.
Comme ça on pourrait facilement tester.
Tout le monde n'a pas C++ Builder...loin de là meme ! ;)

YOYO, @+.

Commentaire de BruNews le 14/02/2007 09:37:26 administrateur CS

Inutile de mettre l'exe, de l'interprété ne tourne pas sans setup.

Commentaire de yoyo269 le 14/02/2007 09:46:16

LOL !
Déjà que j'avais pas une bonne opinion sur C++ Builder, là c'est fini ! :D

YOYO, @+.

Commentaire de BruNews le 14/02/2007 10:27:20 administrateur CS

Tu peux voir ici
http://www.cppfrance.com/code.aspx?ID=28232
qu'il est possible de coder sur Borland.

Produire du faux code vraiment interprété n'est l'exclusivité d'aucun IDE. Hors cppfrance, les exemples codés se font de plus en plus rares.

Commentaire de MickCo le 19/02/2007 13:09:12

Bonjour,

BruNews, il aurait été tout à fait possible de mettre un exe. Ce n'est pas du code interprété mais bien compilé. Effectivement, il faut soit installer les dll Borland ou soit créer un exe sans dépendance externe (ce qui est le plus simple à mon gout). Ca augmente la taille, mais de quelques 100aines de Ko seulement.
Ok, j'ai vu ton lien après coup.

Yoyo269, J'utilise la version 5 depuis de nombreuses années et j'ai vraiment du mal à en changer.
Pour mieux t'en rendre compte, tu devrais essayer les Turbo de chez Borland qui sont des versions light des autres produits (c++ builder, Delphi, etc.). Il y a des versions gratuites.
Après avoir essayé la plupart des IDE du marché, je t'assure que le c++builder est très très pratique d'utilisation.
Si tu a déjà entendu parler de Delphi, pour généraliser, le C++Builder c'est la version C++ de Delphi.

Commentaire de yoyo269 le 19/02/2007 15:38:08

MickCo, je connais déjà Builder.
C'est l'un des premiers que j'ai essayé et vite abandonné.
Moi je préfère tout un code du début à la fin plutôt que d'avoir qq chose de prémâché.
Car ce n'est pas comme ça que l'on apprend à bien programmer.
Ce n'est que mon avis. Mais force est de constater que beaucoup de ceux qui utilisent Builder ont beaucoup de mal pour faire autre chose après.
Ce message n'a pas vraiment de rapport avec la source mais bon...;)

YOYO, @+.

Commentaire de MickCo le 19/02/2007 18:50:26

Yoyo269,

Tu dis :
"Car ce n'est pas comme ça que l'on apprend à bien programmer." ??? Ha bon ? Et pourquoi stp ?
"Mais force est de constater que beaucoup de ceux qui utilisent Builder ont beaucoup de mal pour faire autre chose après."
Tssstsss, n'oublie pas que en parlant de C++builder, on parle aussi de Delphi, donc attention à ne pas t'attirer les foudres de la communauté Delphi  ;) En plus, comment peux tu justifier une telle déclaration ?

Je code en professionnel depuis près de 15 ans. A l'époque, je travaillais sous DOS en 32bit et avec ma propre librairie graphique, et même parfois avec du code assembleur. Tout ça pour dire que le fait de tout coder je sais ce que ça veut réellement dire.
Aujourd'hui, je trouve que c'est un vrai bonheur de ne pas me casser les pieds avec l'interface graphique. Il suffit juste de voir le nombre de ligne de code nécessaire juste à la création d'une fenêtre Windows. C++Builder (ou Delphi) permet de grandement simplifier cette tache mais en aucun te bloque pour aller au fond des chose si tu en as envie.
C'est surement déroutant au début, mais le gain de temps est vraiment appréciable. D'ailleurs, si je ne me trompe pas, VC 2005 en reprend le principe.
Le code pré-mâché ne concerne que les interfaces et les composants mis à ta disposition mais tu peux très bien faire du code natif si tu en as envie. Mais bon, a part pour savoir comment ça marche, il n'y a très peu d'intérêt vu leur qualité.


Zaagane,

Excuse nous, cette conversation n'a aucun rapport avec ta source.
Aussi parlons-en un peu, voila quelques conseils :
- Pas la peine de préciser "Form1->" quand dans le code du fichier unit1.cpp
Tu peux remplacer
Form1->RadioGroup1->Visible=false;  
par
RadioGroup1->Visible=false;
C'est juste plus lisible.

- Nomme au maximum tes composants
Form1 est beaucoup moins explicite par ex que FormPrincipale
fais en de même avec les noms de fichiers

- Fais aussi attention à l'indentation,
Chez moi, rien n'est vraiment aligné. Ca gène vraiment la lisibilité.

En tout cas, bonne continuation.

Commentaire de zaagane le 20/02/2007 09:34:39

Salut,

MickCo,  je sais ces choses  mais Merci quand même. Mais le chose qui je ne le sais pas est comment  créer un exe sans dépendance externe, je veux ta aide.  merci d’avance .

Si qql n’a pas  builder j’ai le setup  de mon logiciel

Commentaire de zaagane le 20/02/2007 18:49:58

Salut,

MickCo ,j'oblie quelque chose !

comment  créer un exe sans dépendance externe(avec c++ builder)

Commentaire de MickCo le 21/02/2007 11:48:50

zaagane,

j'utilise le C++B v5 mais je pense que ça doit être pareil.
Dans Projet->options->lieur décoche "Utiliser la RTL dynamique"
et dans l'onglet Paquets, décoche aussi "Construire avec les paquets d'exécution".
Voila, en principe ton exe n'a plus besoin des DLL de borland.

Une remarque, si tu sais ces chose, fais le d'office! En postant ta source, tu demandes aux autres de partager leurs idées avec toi. Fait déjà le premier pas en rendant tes sources lisible. Certains n'auront pas envie de faire l'effort de comprendre ce que tu as voulu faire. La plupart du temps, une source bien écrite avec des commentaires bien placé se lit tout seul. Et même pour toi, ça sera beaucoup plus facile si tu remets le nez dedans après quelques temps. Et ça devient même indispensable si tu travailles en équipe.

Commentaire de zaagane le 24/02/2007 10:10:51

Salut,

Merci bien MickCo, ca marche bien avec c++ Builder 6 et merci aussi a tes conseils.

( avec l'aide de MickCo) je modifierai le zip  en ajoutant un exécutable marche sans  les DLLs.  

Commentaire de yoyo269 le 24/02/2007 10:12:53

Ok très bien Zaagane !
Rajoute un commentaire à ta source quand tu l'auras fait, comme ça on sera averti de la mise à jour. ;)

YOYO, @+.

Commentaire de zaagane le 26/02/2007 12:49:11

Salut,

YOYO269,

Maintenant la mise a jour est prés  et vous pouvez  tester l’exécutable , mais j’ais un problème avec Le progressBar (c’est que la décomposition ou bien le regroupement est marche mais le progressBar  se bloque), merci d’avance a  votre aide.

Commentaire de yoyo269 le 26/02/2007 13:06:18

Houla ! Après un test vite faite, premiers constats (sans avoir regarder le code) :
Ton interface se bloque, donc tu as une boucle très longue (while ou for) que tu dois mettre dans un thread. Comme ça plus de bloquage de l'interface.
Autre constat, (au moins pour la découpe) c'est extrêmement lent, malgré que ton programme prenne toutes les ressources système !!!
Un bon 1/4 d'heure pour découper un divx de 700 Mo.
Avec mon découpe fichiers je suis aux alentours d'une minute.
Donc beaucoup de travail à faire au niveau de l'optimisation.

Je vais essayer de jeter un oeil sur le code si j'ai le temps ! ;)

YOYO, @+.

Commentaire de MickCo le 26/02/2007 13:33:07

Zaagane,

Juste après la ligne
ProgressBar1->Position+=1;
Rajoute :
  Application->ProcessMessages();
En fait, ça permet à Windows de traiter tous les messages en attente dont le rafraichissement de la ProgressBar.
N'hésite pas à rajouter cette ligne dès qu'un traitement est long. Par contre ne l'appelle pas trop souvent pour éviter de dégrader tes performances.

Sinon, ton prog est très lent, pourquoi lis-tu octet par octet ?
Tu devrais allouer au moins 512 octets pour la lecture et l'écriture (512o = taille d'un secteur sur disque dur). Tu devrais voir une très grosse différence de vitesse.

Mick

Commentaire de yoyo269 le 26/02/2007 13:38:50

Ben voilà ! MickCo t'as dit le principal.
Quand je te parlais de thread, apparemment avec C++ Builder il suffit de : Application->ProcessMessages();

Et pour la vitesse, lire les fichiers avec un buffer beaucoup plus gros. Moi j'utilise 16 Ko minimum.
Après c'est à toi de juger, mais comme l'a dit MickCo, tu verras certainement une (très) GROSSE différence ! lol

Tiens-nous au courant des évolutions.

YOYO, @+.

Commentaire de BruNews le 26/02/2007 13:56:49 administrateur CS

Non yoyo, aucun rapport avec un thread. Application->ProcessMessages() est un équivalent DoEvents() de VB, ça camouffle une boucle PeekMessage() qui forcera le traitement par la wndProc des messages d'interface utilisateur, bloquant de ce fait le traitement en cours.
A bannir dans un vrai prog, il n'y a que les threads pour exploiter les architectures modernes des PCs.

Commentaire de yoyo269 le 26/02/2007 14:04:49

Je connais ça BruNews ! (je m'étais déjà fait un DoEvents() avec la boucle sur PeekMessage())
Enfin je connais cette 'bidouille' je veux dire, pas que cela remplace un thread sous C++ Builder.
Pour faire un thread (un vrai) avec C++ Builder, je n'en ai aucune idée.
C'est si simple en API Win32 ! :D

YOYO, @+.

Commentaire de MickCo le 26/02/2007 15:40:54

BruNews,

Il n'y a pas de bonne ou de mauvaise solution à partir du moment où ça marche correctement. Tout le débat va se situer autour du mot "correctement".
Dans le cas présent avec un petit peu d'optimisation, son programme remplira parfaitement son rôle !
Et en quoi ne serait-ce pas un vrai programme ? Parce qu'il n'y a pas de thread ou parce qu'il risque de prendre quelques ms de traitement en plus ? Voyons ....

Commentaire de BruNews le 26/02/2007 16:12:28 administrateur CS

Dans le sens où il devrait un jour s'attaquer à qlq chose de beaucoup plus gros, autant prendre de bonnes habitudes dès le début.

Commentaire de zaagane le 26/02/2007 17:04:23

Salut,

Merci MickCo  "Application->ProcessMessages();" ca marche bien maitenant l'interface a moins de blocage. mais je dois lis caractère par caractère. sinon l'architecture globale de mon pgms sera totalement changer.

SVP YOYO je veux des Remarques constructives et une aide si possible comme celle de MickCo et non pas autres choses

  

    

Commentaire de yoyo269 le 26/02/2007 17:11:01

Ok Zaagane.
Bon courage pour la suite alors.

YOYO, @+.

Commentaire de zaagane le 26/02/2007 17:44:46

Merci quand meme YoYo. Bon courage pour toi aussi.  

Commentaire de MickCo le 26/02/2007 18:00:17

Zaagane,

Tu n'as pas grand chose à changer. Je me suis occupé que de la partie "split", à toi de faire pareil avec la partie "build"

pour la déclaration de ton buffer :
#define MAX_OCTET  32*512
char buf[MAX_OCTET] ;

Voila ta boucle de séparation du fichier :
for(int f=1;f<=nbr_partie;f++)
{
   if ((destfd = open(IntToStr(f).c_str(),O_BINARY | O_WRONLY)) == -1) // ouvrir le fichier dst.
   {
      ShowMessage("cannot open destination files");
      close(srcfd);  //fermeture du fichier source.
      return;
   }
   int reste = part_size;
   while(reste)
   {
      int nboctet = min(MAX_OCTET, reste);
      nlect = read(srcfd, buf, nboctet);
      if(nlect)
      {
         write(destfd, buf, nlect);
         ProgressBar1->Position += nlect;
         Application->ProcessMessages();
         reste -= nlect;
      }
      else
         reste = 0; //force l'arret
   }
   close(destfd);
}
close(srcfd);  //fermeture du fichier source.

Tu verra une très très grosse différence de vitesse.

Juste une remarque, YOYO t'a donné des infos qui a mon sens sont tout à fait constructives.
J'ai pu t'aider parce que j'ai de BCB5. Yoyo ne l'utilisant pas, il n'a pu te donner que des infos ou suggestions.


Yoyo, j'ai fait quelques mesures avec différente taille de buffer (sans l'affichage bien sûr). Effectivement, 512 est trop juste pour optimiser la vitesse. Semblerai qu'au delà de 4Ko, il n'y ai plus trop de différence (si la source et destination ne sont pas sur le même disque en tout cas).

Mick

Commentaire de zaagane le 26/02/2007 18:25:28

Mick,

l'erreur suivant s'affcihé "Call to undefined function "min" malgré que jai ajouté :
#include <>
#include <functional>
#include <algorithm>
#include <vfw.h>

Commentaire de zaagane le 26/02/2007 19:06:14

Bravo Mick , ça marche bien avec une grande vitesse que l’avant.

Merci beaucoup a votre aide et a vos conseils,

maintenant j’essaye de modifier le source  et je prend en considération l’aide de Mick, alors attendez mois avec une nouvelle mise a jour.  

(Je m’excuse pour les fautes de la langue)  

Commentaire de zaagane le 05/03/2007 09:46:34

Salut,

Voila maintenant une nouvelle version est prés.
j'attend vos remarques et vos conseils.
  

Commentaire de zaagane le 25/02/2008 11:36:36

Salut,

encore une nouvelle version:

- la portabilité du code est bien amélioré (split.h, build.h)
- une nouvelle interface graphique.
- une version console avec Dev c++.
- ...

Commentaire de zaagane le 14/10/2008 17:37:24

Salut,

une nouvelle mise a jour.
maintenant le zip contient les deux versions:

- version avec une interface graphique en c++ builder.
- version sous console en DEV c++.

Merci de noter le travail.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

il me manque deux fichiers pour build mon projet. [ par looping93290b ] il me manque deux fichiers pour build mon projet. iphlpapi.h et strsafe.hmerci de les envoye sur looping93290@aol.com ou de me laisser une adresse ou connexion FTP [ par claude294 ] Salut à tous, je cherche à échanger des fichiers avec le serveur FTP multimania, j'ai pris le modèle des MSDN (FTPTREE), je l'ai modifié pour inclure OPENFILENAME [ par oRTEEZ ] Bonjour a tous,Voila j'utilise la structure openfilename pour ouvrir le fichier que mon programme va traiter cela fonctionne tres bien.Mais des qu'il compatibilite de fichiers [ par liloupucienne ] Salut je voudrai lancer un exe dans mon pg et cet exe doit recevoir des parametres quelqu'un sait comment je peux faire ??je precise un peu:il s'agit Sockets : Transfert de fichiers. [ par guiguikun ] Bonjour,J'ai créé un client/serveur qui transfert des fichiers.Après le transfert, les 2 fichiers ont la même taille, mais celui qui a été transféré n [Debutant] Effacer des fichiers [ par ideosphere ] Voila je voudrai effacer tout les .txt contenu dans un repertoire alors j'ai fait ca :void __fastcall TForm1::Button1Click(TObject *Sender){if (remove Conseil sur un prog qui detecte les fichiers executables [ par seth7 ] Bonjour,Je voulais savoir si l'un d'entre vous à un programme permettant de me donner tous les fichiers executables sur mon ordinateur.Merci d'avance. Fichiers res [ par guiguikun ] Comment faire pour accéder à un fichier zip ou exe dans un fichier resource ?J'aimerais "packer" un fichier zip dans mon executable, mais comment puis Besoin de fichiers "*.h" [ par AxeL364 ] Bonjour,J'ai besoin des fichiers suivants :#include &lt;types.h&gt;#include &lt;socket.h&gt;#include &lt;netinet/in.h&gt;#include &lt;string.h&gt;#inc accéder à tous les fichiers d'un répertoire en C [ par ilyatout ] Bonjour,J'aimerais savoir comment accéder à tous les fichiers d'un répertoire donné, de facon à pouvoir effectuer un traitement sur chaqun d'eux et ce


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,599 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales