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

API, COM et SDKs Delphi Discussion :

Comment appeler une interruption en Delphi


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Par défaut Comment appeler une interruption en Delphi
    salut , j'essaies d'appeler la fonction 02h de l'écture de secteur d'une disquette
    en utilisant la methode Intr() de la librairie Dos mais mon Delphi7 ne reconnait pas le Dos .dite mois si je dois utiliser une version un peux ancienne ,je peux m'en procurer. Merci votre aide

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Pas d'accès direct aux interruptions, ports et autres segments mémoire sur un OS 32 bits. Le langage n'y est pour rien.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Pas d'accès direct aux interruptions, ports et autres segments mémoire sur un OS 32 bits. Le langage n'y est pour rien.
    plus exactement, pas d'API DOS/BIOS sous Win32 les interruptions existent toujours mais n'ont pas la même signification en mode protégé.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    plus exactement, pas d'API DOS/BIOS sous Win32 les interruptions existent toujours mais n'ont pas la même signification en mode protégé.
    Effectivement, et elles sont tellement différentes que je n'ai (volontairement) pas pris la peine d'en parler.

    Les IT DOS (21h) et VGA (10h) sont toujours partiellement utilisables pour la rétrocompatibilité binaire, mais il faut quand même le dire très vite : ça ne marche que tant que tu ne fais QUE des opérations basiques... Et ça t'envoie bouler dès que tu commences à taper dans le matériel directement, ce qui est typiquement le cas des IT disquettes / disque dur, ou des ports COM/LPT.

    Et encore : je dois avouer que je n'ai jamais essayé, mais je ne suis pas certain que le support de ces IT soit actif / possible avec un EXE 32 bits, il doit sûrement falloir le faire avec un EXE 16 bits.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Effectivement, et elles sont tellement différentes que je n'ai (volontairement) pas pris la peine d'en parler.

    Les IT DOS (21h) et VGA (10h) sont toujours partiellement utilisables pour la rétrocompatibilité binaire, mais il faut quand même le dire très vite : ça ne marche que tant que tu ne fais QUE des opérations basiques... Et ça t'envoie bouler dès que tu commences à taper dans le matériel directement, ce qui est typiquement le cas des IT disquettes / disque dur, ou des ports COM/LPT.

    Et encore : je dois avouer que je n'ai jamais essayé, mais je ne suis pas certain que le support de ces IT soit actif / possible avec un EXE 32 bits, il doit sûrement falloir le faire avec un EXE 16 bits.
    ni l'un ni l'autre, les interruptions DOS/BIOS ne sont disponibles qu'en mode réel ou en mode VM86 (la ligne de commande DOS)...même sous Windows 3.x qui était en mode protégé 16bits (Delphi 1) il n'était plus possible de les invoquer.

    encore qu'il existait sous Win16 une fonction pour invoquer une interruption en mode réel...mais j'ai oublié son nom
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    ni l'un ni l'autre, les interruptions DOS/BIOS ne sont disponibles qu'en mode réel ou en mode VM86 (la ligne de commande DOS)...même sous Windows 3.x qui était en mode protégé 16bits (Delphi 1) il n'était plus possible de les invoquer.
    Étrange, ça : j'ai pourtant de vieux exécutables 16 bits qui tapent à plein pot dans ces vecteurs et qui continuent de marcher... Faudra que je fasse une ch'tite recherche archéologique dans mes archives pour vérifier ce point.

    Après, les compilateurs Win16 et plus n'offrent plus ce support, en effet, seuls les compilateurs "DOS" le permettent. Mais l'exécutable produit reste normalement exécutable sous Win16/32, de mémoire.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    Sinon moubark, fait toi un programme en ASM compile le avec un vieux MASM... lorsque je faisais des interruptions, c'était l'outil roi !
    Tu as le bouquin "Assembleur Facile" Chez Marabou, tu verras, c'est facile jusqu'à la page 80 après on comprend que c'est un vrai bouquin de philosophie paradoxale ...

    Ou alors le Turbo Pascal 7, j'ai un pote qui avait tout codé en ASM de l'interruption clavier, horloge et graphique ... il avait même poussé le vice à utiliser la mémoire graphique sur des petits machines sans écran comme serveur de traitement ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre habitué
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Sinon moubark, fait toi un programme en ASM compile le avec un vieux MASM... lorsque je faisais des interruptions, c'était l'outil roi !
    Tu as le bouquin "Assembleur Facile" Chez Marabou, tu verras, c'est facile jusqu'à la page 80 après on comprend que c'est un vrai bouquin de philosophie paradoxale ...

    Ou alors le Turbo Pascal 7, j'ai un pote qui avait tout codé en ASM de l'interruption clavier, horloge et graphique ... il avait même poussé le vice à utiliser la mémoire graphique sur des petits machines sans écran comme serveur de traitement ...



    Merci voici j'ai essaie avec pascal mais je suis coinser avec l'affichage.
    Mon problème est comment afficher le contenu du secteur lis (se trouvant dans le Buffer).


    Mon code ci dessous lis bien le secteur ,mais m'affiche rien à l'écran.
    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
     
     
    program lecture_disquette;
    uses crt,Dos;
    var regs : Registers;
        P : Pointer;
    begin
    clrscr;
    regs.AH:=$02;              {la fonction de lecture}
    regs.CL:=$01;              {le numero de secteur à lire}
    regs.CH:=$00               {le numero de piste à lire }
    regs.DH:=$0;                {le numero de tete à lire};
    regs.AL:=$01                {le nombre de secteur à lire}
    regs.DL:=$00;               {le numero de lecteur de disquette conserné}
     
    GetMem(p,512);            {alloue de 512 octets}
    regs.ES:=seg(p^);        {pointer sur le segment du buffer}
    regs.BX:=ofs(p^);         {pointer sur l'offset du buffer }
    intr($13,regs);
     
    readln;
    end.

  9. #9
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    Utilise BinToHex pour transformer P^en chaine Hexa, et un simple ShowMessage suffira ensuite
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  10. #10
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 489
    Par défaut
    salut

    regarde du cote de DeviceIoControl

    @+ Phil

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

Discussions similaires

  1. Comment appeler une dll VB6 sous delphi
    Par zanoubya dans le forum Débuter
    Réponses: 6
    Dernier message: 05/10/2009, 18h04
  2. Comment appeler une fonction JavaScript depuis Delphi ?
    Par Alfred12 dans le forum Web & réseau
    Réponses: 4
    Dernier message: 17/06/2005, 18h15
  3. comment appeler une procédure événementielle
    Par OutOfRange dans le forum Débuter
    Réponses: 8
    Dernier message: 03/06/2005, 19h32
  4. Réponses: 2
    Dernier message: 14/07/2004, 16h55
  5. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20

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