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

C Discussion :

Convertir du Delphi en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut Convertir du Delphi en C
    bonsoir à tous et à toutes ;

    Depuis 10 joursque je travaille sur un projet qui consiste a traduire et convertir un programe créer en delphi en langage C. .

    N'ayant que de faibles conaissances en delphi j'ai commençer a convertir et adapter les fonctions en langage C/C++ .



    Merci pour toutes personnes pouvant intervenir dans ce sujet et essayer d'apporter un conseil ou une aide .



    Cordialement,
    Fred.

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    alors pour ce qui est de ta première fonction :
    - pour la déclaration de la fonction, elle renvoit un string en Delphi ( : String). mais je ne vois nulle part où le string est retourné :o
    - il faudrait que tu rajoutes une structure pour coder le type delphi TMemoryStream.
    - "for iIndex := 0 to ALength - 1 do" signifi que la variable iIndex va de 0 à ALength -1 par pas de 1. Donc en C "for (iIndex=0 ; iIndex <= ALength-1 ; iIndex++) result += ...".

    Petites choses :
    - sauf grossière erreur de ma part, "i+" ne veut rien dire en C.
    - tes opérations sur les IntToHex sont fausses. De plus, il y en a deux opérations à faire et tu n'en fait qu'une.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Salut ToTo13 ;


    Merci pour toutes ces informations et ta disponibilité .




    Code Blocks signale différentes erreurs suite à la convertion de ce code en langage C , .

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Bonjour,
    - tes opérations sur les IntToHex sont fausses.

    Bonjour ToTo13 ;

    Une seule opération :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IntToHex(Ord(Pchar(AMem.Memory)[AStart+iIndex]),2) ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function Ord ( Arg  : AnsiChar | Char | WideChar | Enumeration | Integer ) : Integer;
     
    The Ord function returns an integer value for any ordinal type Arg.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Delphi          C
     
    pchar 	      string
    integer       int
    byte 	      byte
    pchar 	      string

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    petite question :
    - Que contient exactement le type "TMemoryStream" ?

    Tu as besoin de trouver l'équivalent en C.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Bonjour,

    Tu as besoin de trouver l'équivalent en C.

    Salut ,

    Oui , exact voici à quoi ressemble le code en langage C .

    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
     
     
    int function(int  AStart, int ALength)
    {
    int ires ,ires1, incmem ;
    long  memfile;
     
     
      while (incmem < memfile-8)
      {
        ires ^ ires1;
     
       }
        ires1= strtoint(' '+(memfile,incmem,1));
     
     
     
    }
    Aucune erreur du compilateur Code::Blocks .

    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
     
    unsigned long long function2 (void)
     
    {
      int iIndex,AStart,ALenght;
     
     
      for (iIndex = 0; iIndex <= len-1; iIndex++)
      {
     
       IntToHex(int(char*,[AStart+iIndex]),2) ;
     
     
      }
     
    }
    Ce que j'ai pas compris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    itmp := AMem.Position;
    for ichk:=$16 to $1D do begin .
    while incmem < memfile.size-8 do begin
    ires1:=strtoint('$'+strMemMidH(memfile,incmem,1));
    inc(incmem,8);
    Inc () , Dec () c'est des fonctions d'incrémentation et de décrementation en Delphi .



    Merci pour votre aide .

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Depuis 10 joursque je travaille sur un projet qui consiste a traduire et convertir un programe créer en delphi en langage C. .
    Delphi est un langage objet. Je conçois qu'on veuille traduire du Delphi en C++ (dans ce cas, mauvais forum) ou du Pascal en C, mais du Delphi en C, ça me parait un peu osé, surtout si tu ne connais pas Delphi...

    D'autre part, il n'y a pas de langage C/C++. Il y a C et il a C++. Ce sont 2 langages différents et ils ont chacun leurs forums (et leurs adeptes !)

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Gio,

    Ça va être difficile, car tu ne sembles connaître ni Delphi, ni le C.

    Pour rendre le travail plus facile, il est important de présenter correctement le code : indentation régulière et cohérente, pas de sauts de ligne inutiles

    Citation Envoyé par ToTo13 Voir le message
    ...
    alors pour ce qui est de ta première fonction :
    - pour la déclaration de la fonction, elle renvoit un string en Delphi ( : String). mais je ne vois nulle part où le string est retourné :o
    ...
    Si, c'est le rôle des affectations à Result (variable automatique pour les fonctions en Delphi).

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 un composant Delphi 7 vers Delphi2005
    Par pointer dans le forum Composants VCL
    Réponses: 1
    Dernier message: 20/10/2005, 11h45
  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