IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Aide: Problème avec la taille de mon fichier


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 18
    Points
    18
    Par défaut Aide: Problème avec la taille de mon fichier
    Je crée un fichier mais la taille de ce fichier est de -1 dans mon programme alors que dans les propriétés du fichier, il fait 868octet, de ce fait je n'arrive pas à le lire dans le programme.

    J'ai fait l'instruction suivante pour créer le fichier, le fichier est bien créé avec le contenu voulu cependent c'est la taille qui pose problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WinExec(PChar('COMMAND.COM /K ipconfig/all >'+ fichiertemp),SW_HIDE);

  2. #2
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Fichier
    Bonjour

    Drole de façon de créer un fichier. Mais enfin....

    -1 est code d'erreur qui veut dire que le fichier ne peut pas être ouvert.
    cela peut être une violation de partage windows, ou la date et l'heure de création du fichier invalide.

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    As-tu attendu que la commande WinExec de création ait fini de s'exécuter pour lire le fichier ?

    Si c'est le cas le plus simple est de mettre une instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sleep(3000) ; //  attendre 3 secondes
    entre le winexec et la lecture.

  4. #4
    Membre émérite
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Points : 2 883
    Points
    2 883
    Par défaut
    Citation Envoyé par Graffito
    Si c'est le cas le plus simple est de mettre une instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sleep(3000) ; //  attendre 3 secondes
    entre le winexec et la lecture.
    ça, ça me semble la porte ouverte à tous les bugs possibles... Rien ne prouve qu'une fois de temps en temps à cause d'un autre process un peu bloquant, l'attente ne sera pas de 3000 + 1 millisecondes... et donc ça pantera de façon aléatoire. Tu me diras, alors mettre un sleep de 10 secondes.. oui ou 15 jours ou 1 mois :-)
    Dans un cas comme celui ci il faut faire un "exec and wait", et donc attendre la vraie fin du processus avant de poursuivre le traitement. Faire autrement c'est risqué et c'est un peu du bricolage :-)

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Merlin a effectivement raison, si le programme est "critique".

    Dans ce cas, il faut faire un code du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    repeat sleep(1000) until isfileok(filenazme) ;
    la fonction isfileok testant si le fichier existe, s'il n'est pas vide et contient un carctère EOF à la fin.

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    pour executer un programme externe et être sur qu'il soit achevé je procède commse suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    34
    35
    36
     
     
    procedure run_child_prog(path,name2 : string);   
    Var  Fin         : Boolean;
         StartInfo   : Windows.TStartupInfo;
         ProcessInfo : Windows.TProcessInformation;
     
       begin
      // with form1 do
          begin
          FillChar(StartInfo,SizeOf(StartInfo),#0);
          StartInfo.cb     := SizeOf(StartInfo);
     
     
          path:=path + '\' + name2 +  #0; // + #0 car @path[1] est interpretté comme Pchar
     
          if Windows.CreateProcess(nil, @path[1],nil, nil, False,
                                   0, nil, nil, StartInfo,ProcessInfo) then
             begin
             Fin:=False;
                repeat      { On attend la fin de l'application }
                case WaitForSingleObject(ProcessInfo.hProcess, 200)Of
                   WAIT_OBJECT_0 :   Fin:=True; { L'application est termin‚e, on sort }
                   WAIT_TIMEOUT  :;             { elle n'est pas termin‚e, on continue d'attendre }
                   end;
                { Mise … jour de la fenêtre pour que l'application ne paraisse pas bloqu‚e. }
                forms.Application.ProcessMessages
                until Fin;
             { C'est fini }
             end
          else
             showmessage('Problème au départ de ' + path + '\' + name2 + 
                        '  Il n''a pas été possible de démarrer l''application’);
          end;
     
       end;
    Note : Vérifer car j'ai extrait ce bout de code d'une routine plus large et je ne l'ai pas testé en tant que telle.

  7. #7
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut LanceProc
    Bonjour.

    Désolé, je n'avais pas compris la question.
    Voici la routine que j'utilise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    {-----------------------------------------------------------------}
    {       Lance une application et attent quelle se termine         }
    {-----------------------------------------------------------------}
    Function LanceProcAtt(Nom : String) : Boolean;
    Var
      StartInfo           : TStartupInfo;
      ProcessInformation  : TProcessInformation;
     
    Begin
       Result:=True;
       ZeroMemory(@StartInfo,SizeOf(StartInfo));
       StartInfo.cb:=SizeOf(StartInfo);
       If CreateProcess(Nil,PChar(Nom),Nil,Nil,True,0,Nil,Nil,
                                StartInfo,ProcessInformation) Then
        WaitForSingleObject(ProcessInformation.hProcess,INFINITE)
       Else Result:=False;
    End;
    Si cela peut résoudre ton problème...
    A+

Discussions similaires

  1. Problème avec la taille du fichier sauvegardé
    Par callofduty dans le forum Images
    Réponses: 5
    Dernier message: 09/08/2013, 16h25
  2. Problème avec la taille du fichier .xap
    Par LefortLudovic dans le forum Silverlight
    Réponses: 13
    Dernier message: 23/05/2008, 10h19
  3. Problème avec la taille de mon swf dans une page php
    Par Gizmil dans le forum Dynamique
    Réponses: 2
    Dernier message: 14/10/2007, 21h54
  4. Problème avec la création d'un fichier d'aide
    Par Hoopsy dans le forum C++Builder
    Réponses: 21
    Dernier message: 08/08/2007, 21h45
  5. Problème avec la taille d'un fichier xml
    Par ANISSS dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 26/01/2006, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo