|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 694 ![]() |
Bonjour !
Je m'intéresse depuis quelque temps à la programmation Win32 que j'ai essayée, avec VP d'un côté, avec Delphi de l'autre. Maintenant j'essaie de fondre les deux versions de mes programmes dans un seul fichier. Je n'ai pas trouvé comment compiler un fichier PAS avec Delphi ; en revanche j'ai constaté que Virtual Pascal compile les fichiers DPR. Je vous propose un programme qui affiche la date de Pâques pour l'année courante (à partir d'une table contenant les années 1900 à 2199). La compilation a été testée avec Virtual Pascal 2.1 et Delphi 6. La seule partie du code que j'ai dédoublée est relative à l'année courante. Virtual Pascal ne reconnaissant pas, apparemment, le type SystemTime, j'ai bricolé ce que j'ai pu provisoirement. Autre chose que je n'ai pas trouvée, l'équivalent Delphi du $IfDef VPascal ou du $IfDef FPC. J'ai vu comment on pouvait indiquer une version de Delphi mais pas l'environnement Delphi en général. Code :
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
|
|
#2 | |||
![]() ![]() ![]() |
Bonjour,
Le type TSystemTime est défini ainsi dans la RTL de Virtual Pascal : Code :
Citation:
Pour une directive genre $IFDEF Delphi, je n'ai rien trouvé non plus.
__________________
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] |
|||
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 694 ![]() |
Cela résout parfaitement le problème. Merci pour l'indication.
J'ai écrit un petit programme en mode console pour essayer la chose, et effectivement ça fonctionne aussi avec Delphi et FreePascal sans qu'on ait à changer quoi que ce soit. Code :
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 694 ![]() |
Bonjour !
Je continue mes recherches sur un style de programmation compatible avec les principaux compilateurs Pascal. Je trouve l'idée très intéressante et si je propose ici mes exemples, ce n'est pas que je prétende avoir quelque chose de neuf à proposer, mais c'est plutôt pour recueillir les connaissances des uns et des autres. Voici un essai d'adaptation de l'exemple GENERIC.DPR de Delphi 1. (J'ai téléchargé Delphi 1 sur ce site.) J'ai refait le fichier "res", et remplacé les endroits du code qui ne passaient pas. Malheureusement, je n'ai pas réussi à compiler avec Free Pascal : pour certaines erreurs j'avais une solution mais pas pour toutes. Si vous y arrivez, faites-le moi savoir. L'archive ci-jointe (9 Ko) contient l'exécutable, le code et les ressources.
__________________
L'Art est long et le Temps est court. |
|
|
00
|
|
|
#5 | ||||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 694 ![]() |
Bonsoir !
Voici un programme dans lequel j'ai voulu réunir quelques connaissances sur la ligne de commande. Le programme s'utilise en faisant glisser au moyen de la souris un fichier texte sur l'exécutable. Une copie du fichier est produite, dans laquelle toutes les majuscules ont été remplacées... par des minuscules. Le programme s'exécute sans ouvrir de console. Aucune unité n'a été déclarée, et le code se compile aussi bien avec TP7 (exécutable incroyablement petit par rapport aux autres !) qu'avec Delphi XE2. (Toutefois avec TP7 je n'ai pas trouvé comment empêcher la console de s'ouvrir.) Pour éviter un avertissement de Delphi XE2 concernant la fonction Chr(), j'ai écrit une procédure de remplacement : Code :
Code :
__________________
L'Art est long et le Temps est court. |
||||
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 694 ![]() |
Bonjour !
Je vous propose un nouvel exemple de code utilisant l'API win32. Comme dans l'exemple précédent, le programme affiche la date de Pâques pour l'année courante mais cette fois il va la lire directement dans le fichier texte que j'ai laissé tel quel. J'ai refait aussi l'interface. A la place d'une fenêtre j'ai mis une simple boîte de message. Code :
__________________
L'Art est long et le Temps est court. |
||
|
|
10
|
|
|
#7 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 694 ![]() |
Pour ma procédure ShowMessage, je viens de trouver une variante qui me permet de ne pas utiliser l'unité Strings.
Code :
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
|
|
#8 | |||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 433 ![]() |
Citation:
msg := msg + #0; note que sous Delphi les strings sont des pointeurs qui possèdent déjà un #0 terminal (je ne sais pas si c'est le cas sous VP), tu peux donc tout simplement transtyper un string en PChar : PChar(msg). et pour ttl, tu dois pouvoir passer "nil" à la place...oui la chaîne '' en dur qui sera traitée comme un PChar (par Delphi en tout cas)
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|||
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 694 ![]() |
Merci Paul pour ces indications.
Code :
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
|
|
#10 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 694 ![]() |
J'ai écrit un petit programme pour mémoriser les principales fonctions de l'unité Strings.
Ces fonctions (pardon si vous le savez déjà) sont disponibles dans Delphi. Il n'y a que le nom de l'unité qui soit différent. Au lieu de dédoubler la déclaration des unités, j'ai ajouté un alias dans les options de mon projet Delphi : Strings=SysUtils; Code :
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
|
|
#11 | ||||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 694 ![]() |
En ce Mercredi-Saint, je vous propose une version retravaillée de mon programme "date de Pâques".
J'ai ajouté une fonction qui renvoie une date relative au jour de Pâques d'une année donnée. Les arguments de la fonction sont l'année et la différence de jours. Cela permet de connaître, par exemple, la date du mercredi des Cendres (46 jours avant Pâques). La partie interface est réutilisable : il suffit de mettre ce que vous voulez à la place de l'unité u_paques. Code :
Code :
__________________
L'Art est long et le Temps est court. |
||||
|
|
10
|
|
|
#12 | ||||||
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 417 ![]() |
Boa,
Pour le nombre de jours par mois, au lieu de Code :
Code :
Code :
Et bien entendu, en pratique j'aurais déclaré un type, puis une constante de ce type (toujours anticiper qu'on puisse devoir passer des données en paramètre, et c'est bien plus simple avec un type déclaré).
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
||||||
|
|
20
|
|
|
#13 |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 694 ![]() |
Merci droggo pour le coup d'œil et pour l'idée. J'ai fait la modification.
__________________
L'Art est long et le Temps est court. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com