PowerBuilder

English version

Voici quelques trucs et codes pour PowerBuilder.
Toute remarque, suggestion, question bienvenue. N'hésitez pas à me laisser un mail.

Vous pouvez consulter la liste de mes liens PB (sur Del.icio.us)

Vous appréciez mon travail ? Montrez-le :

Extensions PBNI

PBNI = PowerBuilder Native Interface, c'est un SDK fourni par Sybase qui permet d'écrire des extensions pour PB en C++ (avec Microsoft Visual Studio)

Fork me on GitHub

PbniRegex + PbRegexCoach

Pour tenter de pallier aux problèmes de performances de unvo_regexp j'ai fait une extension pbni pouvant utiliser des expressions régulières compatibles perl (réutilise le moteur PCRE). Cette extension ajoute aussi une fonction globale de replaceall.
Cette extention est faite à partir du SDK fourni avec PB et des exemples que j'ai pu trouver sur Codexchange.

Fonctionnalités principales de l'objet uo_regex :

Pour tester cette extension j'ai aussi créé PbRegexCoach (inspiré de The Regex Coach) :
PbRegexCoach
Cette application réutilise aussi plusieurs composants de Nicolas Georges : redimensionneur automatique, splitters horizontal et vertical dérivés de ceux de Roland Smith. Nicolas a aussi publié un exemple d'utilisation de pbniregex.
Extension pbniregex.zip (sources incluses) + PbRegexCoach - Dernière mise à jour : jeudi 26 janvier 2017.

ChangeLog

PbniHash

Fork me on GitHub

La table de hachage (ou hashtable, dictionnaire, tableau associatif) est une structure de données très utile mais malheureusement absente de Powerbuilder.
La lib opensource libhashish implémente plusieurs algorithmes de hachage sous GNU/Linux. J'ai porté cette lib sous Windows grâce à MinGW (Nicolas Georges a ensuite désactivé la fonction de tri en arbre pour pouvoir réutiliser libhashish sous licence BSD) et j'ai écrit une extension pbni permettant d'utiliser des hashtables directement en Powerscript.

La libhashish a plein de possibilités mais le wrapper pbni est limité à l'essentiel :

Extension pbnihash.zip (sources incluses) + sample PB de test - Dernière mise à jour : jeudi 26 janvier 2017.

ChangeLog

PbniList

Fork me on GitHub

La liste chaînée est une autre structure absente de Powerbuilder. Je me suis appuyé sur les STL pour implémenter un objet de liste (uo_list) et un vecteur (uo_vector).
Mes listes et vecteurs ont quelques caractéristiques intéressantes :

Extension pbnilist.zip (sources incluses) + sample PB de test - Dernière mise à jour : jeudi 26 janvier 2017.

ChangeLog

PbniCW - Cool Wrappers

Voici plusieurs wrappers qui ne pouvaient pas être intégrés aux extensions précédentes.
Liste des fonctionnalités :

Bugs connus

Extension pbnicw.zip (sources incluses) + sample PB de test - Dernière mise à jour : lundi 17 mai 2010.

ChangeLog

Autres composants - userobjects

unvo_regexp

unvo_regexp est un userobject natif qui remappe l'objet OLE vbscript.regex (auteur : Nicolas Georges). La syntaxe acceptée par l'objet est rappelée dans la liste des variables d'instance (c'est la syntaxe de l'objet vbscript.regex).
Si vous utilisez cet objet ponctuellement, c'est très pratique. Toutefois les performances ne sont pas fantastiques dès que vous instanciez l'objet dans des boucles du fait de la connexion à l'objet OLE dans le constructeur.

splitters

u_scilexer

Roland Smith a publié sur Topwiz Software un contrôle PB permettant de wrapper l'éditeur Scintilla. Avec l'aide de Nicolas Georges, j'ai ajouté des fonctionnalités permettant d'utiliser les icônes, la complétion de code et d'autres choses. Voici mon implémentation : u_scilexer.sru (vous avez également besoin de la dll de scintilla, renommée "scilexer.dll").
Dernière mise à jour : dimanche 30 octobre 2011

n_zlib

n_zlib.sru : encore un composant de Roland Smith destiné à wrapper la zlib pour PB. J'ai ajouté le support des flux gzippés à l'implémentation de Roland Smith.
Dernière mise à jour : mercredi 11 juin 2014

nv_mailslot

nv_mailslot.sru est un objet permettant d'utiliser les mailslots (le mailslot est l'une des possibilité de communication inter-processus sous Windows). Pour tester la mise en oeuvre, j'ai codé un exemple en PB et un second en java : MailSlotPB.zip.

nv_codec_base64

nv_codec_base64.sru est une implémentation en pbscript d'un codec base64 (pour un problème de performance il y a une dépendance avec pbnicw pour les calculs binaires). Cependant l'encodage est relativement lent sur de grosses données, n'essayez pas de traiter des méga-octets...

Outils complémentaires

libexport

libexport est un petit outil que j'ai écrit pour tester l'export d'objets d'une pbl en PBScript.
On peut exporter la totalité des objets ou seulement une sélection. Les objets sont exportés au format UTF-16le avec leurs commentaires.

libexport.zip - Dernière mise à jour : vendredi 10 juin 2016

FILL ME: script perl check pbg
FILL ME: script perl dw

pbdumper

pbdumper est un outil expérimental permettant d'enregistrer la totalité du contenu d'une bibliothèque PB (pbl / pbd) ou d'un exe ou dll compilés par PB. Cet outil a été utilisé avec succès sur des fichiers produits par PB 5 à 11.5 et devrait fonctionner également avec PB12 si le format des pbl n'a pas changé. Je me suis servi de cet outil pour récupérer des ressources dans des applications écrites à mon travail et dont nous avions perdu les sources.
Il est programmé en C99 et compilé avec MinGW. Cet outil n'aurait pas pu exister sans les précieuses informations contenues dans le format de fichier PBL publié par Arnd Schmidt. Il a aussi fait quelques outils pour étudier les libs PB.
Todo :

pbdumper.zip - Dernière mise à jour : mardi 13 mars 2012

ChangeLog

Liens

hacker emblem Valid XHTML 1.1! Valid CSS!
Page faite avec GNU/Emacs Total Commander contribue à la maintenance de ce site
Sébastien Kirche
Retour à la page principale
Dernière mise à jour : dimanche 29 janvier 2017.