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 :

Problème d'Entrée / Sortie


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 111
    Points : 64
    Points
    64
    Par défaut Problème d'Entrée / Sortie
    Bonsoir,

    Je suis sous WINDOWS XP et Delphi 4 standard.

    Le code suivant teste la variable DskDef (string) pour s'assurer qu'elle correspond au disque dur du PC.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          try
            AssignFile(DskDefFile,DskDef+'DskDef.dsk');
            ReWrite(DskDefFile);
            CloseFile(DskDefFile);FDskDef:=True;
          except
            MessageDLg('Identifiant disque invalide.',mtError,[mbOK],0);
            FDsk:=False;
          end;
    Si DskDef ne correspond pas, l'exception est bien déclenchée mais auparavant une fenêtre apparait indiquant :

    Exception Processing Message c0000013 Parameters 75afbf 9c...
    Annuler Recommencer Continuer
    Que puis-je faire pour que cette fenêtre ne s'affiche pas mais que pourtant l'exception se déclenche ?

    Merci d'avance à ceux qui pourront me donner la solution.

    G. Stevens.

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Si je ne me trompe pas ton code ne fait que s'assurer de la présence du fichier DskDef.dsk sur ton disque. C'est ça ?

    Si oui dans ce cas un simple FileExists ferait l'affaire.

    Mais l'apparition de cette exception apparait lorsque tu exécutes ton programme depuis Delphi (en mode debug donc).

    @+

  3. #3
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Si oui dans ce cas un simple FileExists ferait l'affaire.
    exist elle en D4?
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 824
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 824
    Points : 15 249
    Points
    15 249
    Par défaut
    Citation Envoyé par edam Voir le message
    exist elle en D4?
    Bah, je l'ai dans des sources D3,
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    j'ai eu ce problème aussi, mais pas dans un prog, dans delphi, je faisais "aller a la déclaration (ctrl+click) sur CreateOleObject, et il mettai cette erreur !!

    après des recherches, j'ai cru comprendre que c'était un bug de windows (ça m'est arrivé après avoir mis a jour mon lecteur MemoryStick. je l'ai désactivé et depuis, plus de problème !!!!!!

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 111
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Salut

    Si je ne me trompe pas ton code ne fait que s'assurer de la présence du fichier DskDef.dsk sur ton disque. C'est ça ?

    Si oui dans ce cas un simple FileExists ferait l'affaire.

    Mais l'apparition de cette exception apparait lorsque tu exécutes ton programme depuis Delphi (en mode debug donc).

    @+

    Non, il s'agit de déterminer chez un autre utilisateur du programme quelle est l'identifiant de son disque, car ce n'est pas nécessairement c:\.

    Par ailleurs, la fenêtre ne s'affiche pas qu'en mode Debug mais aussi en exécution, et c'est bien ce qui pose problème puisque cela se passe chez l'utilisateur lambda.

    Merci.

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Si j'ai bien compris, tu veux vérifier la présence du fichier DskDef.dsk qui doit se situer dans le dossier précisé par la variable DskDef.
    Cette variable peut contenir suivant le contexte: C:\, C:\MonDossier, D:\, ...

    Le code que tu présentes dans ton premier message ne fait qu'accéder à ce fichier, ce qui devrait déclencher une exception I/O en cas d'absence.

    Ai-je tout compris ?

    D'autre part ce message:
    Exception Processing Message c0000013 Parameters 75afbf 9c...
    Annuler Recommencer Continuer
    ne ressemble pas vraiment à une exception de type EInOutError.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 111
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Salut

    Si j'ai bien compris, tu veux vérifier la présence du fichier DskDef.dsk qui doit se situer dans le dossier précisé par la variable DskDef.
    Cette variable peut contenir suivant le contexte: C:\, C:\MonDossier, D:\, ...

    Le code que tu présentes dans ton premier message ne fait qu'accéder à ce fichier, ce qui devrait déclencher une exception I/O en cas d'absence.

    Ai-je tout compris ?

    D'autre part ce message:

    ne ressemble pas vraiment à une exception de type EInOutError.

    Non, comme je te l'ai dit il s'agit de déterminer l'identifiant du disque dur de l'utilisateur lambda utilisant le programme, ce disque dur n'étant pas nécessairement identifié par c:\. Le fichier DskDef.dsk est utilisé par ailleurs mais le problème est de déterminer l'identifant du disque de l'utilisateur afin de pouvoir y créer DskDef.dsk. Récemment, un de mes utilisateurs m'a signalé que mon programme se plantait parce que son disque dur était identifié i:\ au lieu du c:\ habituel, et c'est pourquoi je cherche à parer cet os même s'il est peu courant.

    C'est pourtant bien le message que j'obtiens non seulement en débogage, ce qui serait normal, mais même en exécution.

    Merci de ton aide.

  9. #9
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,
    Citation Envoyé par Stevens.Georges Voir le message
    Non, comme je te l'ai dit il s'agit de déterminer l'identifiant du disque dur de l'utilisateur lambda utilisant le programme, ce disque dur n'étant pas nécessairement identifié par c:\.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      LettreLecteur := ExtractFileDrive(ParamStr(0));
    Te ramène 'C:', 'I:', ...
    Si cette fonction n'existe pas sous D4 tu peux facilement extraire ton lecteur de ParamStr(0) (ou Application.ExeName ce qui est la même chose).

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problèmes de entrée/sortie avec Qemu
    Par CodeurNé dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 11/05/2011, 16h48
  2. Problème d'entrée sortie
    Par Ququbs dans le forum Composants
    Réponses: 3
    Dernier message: 16/07/2010, 23h24
  3. Réponses: 15
    Dernier message: 01/11/2008, 15h57
  4. Problème d'entrée sortie
    Par judas54 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 16/02/2008, 10h34
  5. Réponses: 11
    Dernier message: 13/10/2004, 00h58

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