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

Delphi Discussion :

convertir en delphi


Sujet :

Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 51
    Par défaut convertir en delphi
    quelqu'un peut m'aider à convertir ce bout de code en delphi


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    static private byte[] MakeRequest()
     {
     // request for reading Analog Input is always 8 bytes long.
     byte[] write = new byte[8];
     write[0] = _Id; // device id
     write[1] = 0x04; // Read A I
     byte[] start = BitConverter.GetBytes((ushort)_StartAddress); // ushort = 2 bytes
     write[2] = start[1]; // msb first
     write[3] = start[0];

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 940
    Billets dans le blog
    6
    Par défaut
    Bonjour, peut-être un code de ce type ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    type 
      TRequest = array [0..7] of Byte;
     
     // request for reading Analog Input is always 8 bytes long.
    function MakeRequest: TRequest;
    var
      Start: array of Byte;
    begin
      Result[0] := _Id; // device id
      Result[1] := 4; // Read A I
      Start := BitConverter.GetBytes( Word( _StartAddress)); // Word = ushort = 2 bytes
      Result[2] := Start[1]; // msb first
      Result[3] := Start[0];
      SetLength(Start, 0); // pour libérer le tableau dynamique
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 51
    Par défaut
    bonjour en fait voila le code que j'ai

    Code C : 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
    static private byte[] MakeRequest()
    {
    // request for reading Analog Input is always 8 bytes long.
    byte[] write = new byte[8];
    write[0] = _Id; // device id
    write[1] = 0x04; // Read A I
    byte[] start = BitConverter.GetBytes((ushort)_StartAddress); // ushort = 2 bytes
    write[2] = start[1]; // msb first
    write[3] = start[0];
    byte[] noReg = BitConverter.GetBytes(_NoAI); // ushort = 2 bytes
    write[4] = noReg[1]; // msb first
    write[5] = noReg[0];
    byte[] writeTemp = { write[0], write[1], write[2], write[3], write[4], write[5], 0, 0 };
    // Note two zeros at the end.
    byte[] _crc = new byte[2];
    crcCalculator(writeTemp, ref _crc);
    write[6] = _crc[0];
    write[7] = _crc[1];
    return write;
    }

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 940
    Billets dans le blog
    6
    Par défaut
    Donc, en fait, il vous reste à finir de le traduire sur ce modèle (et à tester/déboguer)...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 51
    Par défaut
    j'ai essayé de suivre ton modèle mais lorsque je compile je reçois des erreurs

    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
    Function   MakeRequest : Byte;
     var
     start: array of byte;
     noReg: array of byte;
    begin
      char[0] := Id; // device id
      char[1] := 0x04; //read
      start   := BitConverter.GetBytes((Word)_StartAddress));
      char[2] := start[1];   //msb first
      char[3] := start[0];
      SetLength(Start, 0);
      noReg   := BitConverter.getBytes(_NoAI);
      char[4] := noReg[1];   //msb first
      char[5] := noReg[0];
      SetLength(noReg, 0);
      charT   := char[0] + char[1] + char[2] + char[3] + char[4] + char[5] + 0 + 0 ;
    end;

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 51
    Par défaut
    premier erreur c'est là char[0] := Id;
    Images attachées Images attachées  

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 940
    Billets dans le blog
    6
    Par défaut
    Char est un mot réservé du langage Pascal. Dans la syntaxe Char[0], il attend que l'on transtype en Char la variable suivante, comme dans Char(8) ; il ne s'agit pas d'un tableau de Char : tu as changé de syntaxe en changeant de langage !
    Il faut donc nommer une variable de type tableau de 8 octets (Byte) ou caractères (Char), équivalents.La fonction est censée retourner ce tableau, et pas un octet seul : ton code ne respecte pas l'exemple ni la source.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  8. #8
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 51
    Par défaut
    oui effectivement vous avez raison

    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
    Function   MakeRequest : TRequest;
     var
     start: array of byte;
     noReg: array of byte;
     
    begin
      result[0] := Id; // device id
      result[1] := 0x04; //read
      start   := BitConverter.GetBytes((Word)_StartAddress));
      result[2] := start[1];   //msb first
      result[3] := start[0];
      SetLength(Start, 0);
      noReg   := BitConverter.getBytes(_NoAI);
      result[4] := noReg[1];   //msb first
      result[5] := noReg[0];
      SetLength(noReg, 0);
      resultT   := result[0] + result[1] + result[2] + result[3] + result[4] + result[5] + 0 + 0 ;
    end;

  9. #9
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 51
    Par défaut
    et pour declarer id et converter
    Images attachées Images attachées  

  10. #10
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 106
    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 106
    Par défaut
    BitConverter étant un objet de votre projet (une classe Microsoft), il faut le réinventer
    D'ailleurs, les + entre result[] me semble totalement hors sujet, c'est une simple addition et non une concaténation

    Vous faites mention à des variables qu'il faut déclarer et affecter, traduire un bout de code sans tout son contexte n'est pas une bonne façon de faire.
    A mon avis, il sera plus simple de repartir du besoin d'origine, en Delphi, cette construction de TRequest doit pouvoir être nettement plus simple

    Que doit recevoir en Entrée cette fonction MakeRequet et que doit-elle fournir en Sortie ?
    Refaites l'analyse technique de cela, ensuite, on pourra vous aider à faire un code Delphi écrit en Delphi et non un bricolage à partir d'un code C++ qui n'a pas la même logique
    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

Discussions similaires

  1. Réponses: 14
    Dernier message: 26/12/2011, 17h38
  2. Convertir code Delphi en C++
    Par colorid dans le forum Débuter
    Réponses: 3
    Dernier message: 16/03/2009, 19h50
  3. [Débutant] Convertir du Delphi en C++
    Par Miss Ti dans le forum Débuter
    Réponses: 7
    Dernier message: 27/05/2008, 17h01
  4. Convertir du Delphi en C
    Par Fred.77 dans le forum C
    Réponses: 7
    Dernier message: 22/12/2007, 17h50
  5. [TP]Convertir Delphi en BP7
    Par Christophe Fantoni dans le forum Turbo Pascal
    Réponses: 28
    Dernier message: 19/11/2002, 17h30

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