Convertisseur C vers PB : please help !!

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

Merci beaucoup, Fred. Entre ce forum et le forum anglais, je suppose que tu as des tonnes de demandes et c'est vraiment sympa d'avoir pris le temps de me répondre. Certains points restent malheureusement obscurs pour moi :

1-
Q : KeskeC que ces _STRUCT_NAME(s) et _STRUCT_NAME(s1)
Que signifient les (s) et (s1)

R : Ce sont des macros, va falloir aller voir dans les .h ce que ca veut dire.
OK, j'avais juste besoin de cette info. Cool.

2-
Q : Que signifie ce "struct wavehdr_tag *lpNext;" au milieu de la structure ?

R : Ca veut dire que c'est un pointer vers la structure wavehdr_tag. Et comme c'est celle en cours de creation, tu peux pas encore utiliser son alias (WAVEHDR).
Génial ! Sur ce coup là, et si j'ai bien compris, PureBasic est plus fort que C !

3-
Q : Structure mmtime_tag

R : Tu peux ignorer tous les LPxxx car en PureBasic y'a pas moyen de faire ca directement dans le type (faut specifier le pointer).
Là, je nage un peu. OK pour ignorer les déclarations du type *LPMMTIME.mmtime_tag mais je n'ai vraiment pas compris le pourquoi et ton "(faut specifier le pointer)". me laisse supposer qu'il va vraiment falloir que je comprenne !
(toujours pour Structure mmtime_tag)

R : quand t'as un _tag ou tag_ dans le nom de la structure, c'est que c'est pas la bonne
Est-ce que je dois toujours déclarer une structure "Machin" quand je trouve une structure "Machin_tag" dans un header ? OU est-ce que tu veux dire que si je trouve un "Machin_tag", cela veut dire qu'il y a une "vraie" structure "Machin" déclarée ailleurs ?
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

en principe, quand t'as un tag_Machin c'est que c'est un 'typedef' et que le nom reel est declaré juste apres le dernier } de la structure. Example:

Code : Tout sélectionner

typedef struct tag_Machin {
  int a;
} MACHIN;
Donc là tu dois creer une structure MACHIN.
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

tu as déja quelque chose de fonctionnel ?
j'ai un source C à convertir, et ça me gonfle un peu de le faire à la main

c'est du C tout simple sans objet, y'a des pointeurs sur des string mais c'est tout.

patrick
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

Merci encore, Fred.

Patrick :
Tu trouveras le code tel qu'il est aujourd'hui dans la rubrique
"Convertisseur C->PureBasic : Ca commence à marcher".
Pour le moment, je ne l'ai testé que sur des headers et je ne sais pas s'il te rendra déjà service. Mais je serais super content si tu voulais bien me donner tes premières impressions.
Attention : le code est en 2 parties.
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

...
Dernière modification par Dr. Dri le lun. 10/oct./2005 8:53, modifié 1 fois.
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

Merci pour tes encouragements.

N'étant pas un maniaque du C, j'ai en effet sous-estimé la richesse de sa syntaxe et donc la complexité de ce traducteur.

Cela dit, aucun des problèmes que j'ai rencontré jusqu'à présent ou que tu soulève toi-même ne me semble insurmontable. C'est juste que ça fait un gros boulot !

Je continue à avancer. Tes remarques me sont très utiles.
Merci, et continue à m'en envoyer si tu pense à d'autres choses !
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

...
Dernière modification par Dr. Dri le lun. 10/oct./2005 8:54, modifié 1 fois.
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

- Oulah.. pour l'assembleur, on verra : la plupart des codes à traduire n'en comportent pas.
- Je me suis plongé à fond dans les docs du C aprés avoir réalisé que je ne pouvais pas construire un bon traducteur sans maîtriser parfaitement les deux langues. Merci à Julien pour m'avoir recommander http://www-ipst.u-strasbg.fr/pat/program/tpc.htm Ce site est vraiment excellent et je commence à y voir un peu plus clair.
- Je suis en train de refondre mon code pour le construire sur le modèle d'un compilateur C (et donc avec un préprocesseur). Au rythme où ça va, je ne vous proposerais pas de nouvelle version avant au moins 3 semaines. Mais quand ça sera le cas, je vais être bien embêté, parceque mon code pèse déjà dans les 130 ko et que j'ai maintenant des fichiers annexes indispensables pour le fonctionnement. Est-ce que quelqu'un peut me "prêter" un espace sur un site Web ou FTP pour que je puisse faire une URL sur mon code quand ça sera prêt ?
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

je peut "t'heberger" si tu veut :)
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

Super, merci Cederavic. Je te posterai un message quand ce sera prêt.
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

ok :)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ce n'est peut-être plus d'actualité , mais voici un autre lien

http://www.ann.jussieu.fr/courscpp/index.html
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

de rien pour le lien :wink:
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

Super, ton site, Comptois. Vraiment trés, trés complet... et un peu décourageant ! Il répertorie (entre autre) la totalité des opérateurs du C. Et ben ça en fait quand même 52 !!!! Gasp !
Je suis en train d'avancer sur le preprocesseur qui doit intégrer un interpréteur assez complet pour gérer les #ifdef et les #if. Pfffff...
En fait, ce convertisseur représente autant de boulot que de créer un language de programmation. Mais bon, j'avance doucement.

Pour Dr. Dri : Oui, les macros existe bien en C et en C++. On les utilise même d'avantage en C qu'en C++.
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

En fouillant pour autre chose , je viens de tomber sur ça, c'est pour visual basic , mais ça devrait quand même aider pour purebasic .

Conversion en Visual Basic de déclarations en langage C

Les procédures des DLL sont très souvent documentées avec la syntaxe du langage C. Pour appeler ces procédures depuis Visual Basic, vous devez les traduire en instructions Declare valides et les appeler avec les arguments corrects.

Dans cette traduction, vous devez notamment convertir les types de données C en types de données Visual Basic, et spécifier si chaque argument doit être appelé par valeur (ByVal) ou implicitement par référence (ByRef). Le tableau suivant donne la liste des types de données courants en langage C et leurs équivalents Visual Basic pour les versions 32 bits de Windows.

Type de données en langage C En Visual Basic, déclarez comme Appelez avec

ATOM ByVal variable As Integer Une expression qui se résout en un type Integer
BOOL ByVal variable As Long Une expression qui se résout en un type Long
BYTE ByVal variable As Byte Une expression qui se résout en un type Byte
CHAR ByVal variable As Byte Une expression qui se résout en un type Byte
COLORREF ByVal variable As Long Une expression qui se résout en un type Long
DWORD ByVal variable As Long Une expression qui se résout en un type Long
HWND, HDC, HMENU, etc. (descripteurs Windows) ByVal variable As Long Une expression qui se résout en un type Long
INT, UINT ByVal variable As Long Une expression qui se résout en un type Long
LONG ByVal variable As Long Une expression qui se résout en un type Long
LPARAM ByVal variable As Long Une expression qui se résout en un type Long
LPDWORD variable As Long Une expression qui se résout en un type Long
LPINT, LPUINT variable As Long Une expression qui se résout en un type Long
LPRECT variable As type Toute variable de ce type défini par l'utilisateur
LPSTR, LPCSTR ByVal variable As String Une expression qui se résout en un type String
LPVOID variable As Any Toute variable (utilisez ByVal quand vous passez une chaîne)
LPWORD variable As Integer Une expression qui se résout en un type Integer
LRESULT ByVal variable As Long Une expression qui se résout en un type Long
NULL As Any or
ByVal variable As Long ByVal Nothing ou ByVal 0& ou vbNullString
SHORT ByVal variable As Integer Une expression qui se résout en un type Integer
VOID Sub procedure Non applicable
WORD ByVal variable As Integer Une expression qui se résout en un type Integer
WPARAM ByVal variable As Long Une expression qui se résout en un type Long
Normalement c'est sous la forme d'un tableau , c'est un peu plus difficile à lire comme ça , désolé :)
Répondre