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

Assembleur Discussion :

Int 21H AX=716Ch ne fait pas mon affaire !!


Sujet :

Assembleur

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 44
    Par défaut [Résolu] Int 21H AX=716Ch ne fait pas mon affaire !!
    Bonjour

    L'int 21H AX=716Ch (Créer un fichier avvec les noms longs) renvoie une erreur si un fichier du même nom existe (c'est normal pour ctte fonction).

    Mais alors, quelle serait la meilleure solution pour lui faire réecrire par dessus le fichier existant, comme le fait la fonction "rewrite" avec les noms courts ?

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 39
    Par défaut
    hé bien à mon avis le plus simple serrai de faire

    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
     
    ecriture:
    [....]
    mov ax,0x716C
    int 0x21
    [....] control d'erreur style if FILEEXIST saut vers erreur
    saut vers fin2procedure
    erreur:
    [....] afficher un message ecrire sur le fichier oui/non ?
    [....] saisie de la reponse
    [....]
    ecrirepardessus:
    [....]effacer l'existant ou le renomer en .old pour pouvoir 
    [....]revenir en arriere si besoin pour l'utilisateur final 
    saut vers ecriture
    fin2procedure
    [....]
    il y a surement plus propre mais plus simple je sais pas...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 44
    Par défaut
    Merci pour le pseudo-code: effectivement, je ne voyais moi non plus aucune solution plus élégante.

    Mais en continuant à chercher, je suis arrivé dans la liste de Ralph Brawn à l'int 21h AX=6C00h (http://www.ctyme.com/intr/rb-3179.htm) qui parait permettre d'effacer au non la cible.

    Mais le problème n'est que déplacé car les paramètres semblent très difficiles à positionner.

    Si un collègue très pointu sur ce type de paramétrage pouvait me les donner, je lui en serait extrêmement reconnaissant (je joue très mal avec les bits )

    voici exactement ce que je veux faire:
    En FAT 16 et 32, écraser systématiquement la cible, sans demander quoique ce soit, que le fichier existe ou pas; attribut archive;

    Merci beaucoup pour les réponses

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 028
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Il me semble que si, avec la fonction 716Ch (noms longs), tu affectes à DX la valeur 0000000000010010b (0012h), le fichier sera bien écrasé s'il existe.

    En effet, la combinaison des bits 1 et 4 fait en sorte que la taille du fichier soit remise à zéro si le fichier existe et que le fichier soit créé s'il n'existe pas.

    Quel code d'erreur la fonction te renvoie-t-elle ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 44
    Par défaut
    Merci beaucoup Alcatîz, c'est effectivement la solution.

    J'avais d'abord cru à un autre type d'erreur, mais cela ne venait pas de cette fonction.

    Merci encore

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/01/2010, 04h12
  2. Réponses: 8
    Dernier message: 30/09/2009, 09h21
  3. Réponses: 2
    Dernier message: 27/04/2009, 13h09
  4. Mon PC ne fait pas BIP ..
    Par sliderman dans le forum Composants
    Réponses: 1
    Dernier message: 09/05/2008, 08h22
  5. [NASM] Int 21h qui ne fonctionne pas sur mon mini OS
    Par andromeda dans le forum Assembleur
    Réponses: 4
    Dernier message: 07/04/2007, 18h03

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