|
|
SCOOP : CPDB bientôt compatible avec HSPascal ! |
|
|
SCOOP : CPDB bientôt compatible avec HSPascal ! - Posté le 04/10/02 |
Depuis que j'ai découvert CPDB, je rêvais de son portage sur HSPascal. Et comme on n'est jamais mieux servi que par soi-même, je m'en suis donc occupé. C'est maintenant chose faite et PeekPoke sortira courant de la semaine prochaine (c'est là qu'est le SCOOP !) ce portage de CPDB sur HSPascal.
En avant première donc, vous découvrirez dans cet article la facilité déconcertante avec laquelle on arrive à travailler sur les bases de données avec CPDB... et on se demande bien comment on a fait pour attendre aussi longtemps que ce superbe développement de notre ami PeekPoke (rappelons au passage que PeekPoke est l'un des deux valeureux membres fondateurs de PeekPocket) arrive !
Comme on n'apprend bien que par l'exemple, nous allons décrire un petit programme écrit en HSPascal qui utilise CPDB.
Le petit programme en question enregistre dans une base de données PDB des scores (aléatoires pour la démo) réalisés à différents niveaux (aléatoire aussi pour la démo). A chaque lancement du programme un enregistrement Niveau / Score est enregistré et le programme recalcule alors la moyenne des différents scores réalisés. C'est simple et c'est parfait pour apprendre
Passons aux choses sérieuses, le code HSPascal : Tout d'abord, nous allons inclure la bibliothèque CPDB dans notre programme et définir nos variables de travail :
Program CPDBtest;
{ $ SearchPath Units; UnitsUI; UnitsSystem } { $ ApplName CPDBtest,TEST }
Uses CPDBSTD,DataMgr,Crt,HSUtils;
const NoError = 0;
var Error: Err; iHandle: Byte; Level: ShortInt; Score: SmallInt; NbRecords: SmallInt; Average: Integer; |
Nous pouvons ensuite commencer notre programme, et ouvrir la bibliothèque CPDB :
begin Randomize; CPDB_OPENLIB; |
Puis, on crée la base de données si elle n'existe pas encore :
if CPDB_DatabaseExist('HiScoreCPDB')= CPDB_ERR_NOEXIST then Error:=CPDB_CreateDatabase(0,'HiScoreCPDB',s2u32('TEST'), 'NOM=STRING[10];LEVEL=SHORTINT;SCORE=INT'); |
Maintenant, on est sur que la base de données existe, alors on l'ouvre :
Error:=CPDB_Open(0,'HiScoreCPDB',dmModeReadWrite,iHandle); |
On a tout le loisir ensuite d'ajouter un nouvel enregistrement Niveau / Score :
Level:=Random(10); Score:=Random(100); writeln('Adding LEVEL= '+i2s(Level)+' SCORE= '+i2s(Score)); Error:=CPDB_AddRecord(iHandle); Error:=CPDB_WriteShortInt(iHandle,'LEVEL',Level); Error:=CPDB_WriteInt(iHandle,'SCORE',Score); Error:=CPDB_UpdateRecord(iHandle); |
Maintenant, nous voulons connaître la moyenne de tous les scores déjà réalisés. Pour celà, nous commençons par compter le nombre d'enregistrements :
Error:=CPDB_CountRecord(iHandle,NbRecords);
|
Puis, nous plaçons au début du fichier, et le parcourons en notant bien tous les scores réalisés successivement :
Average:=0; Error:=CPDB_ReadFirst(iHandle); while Error=NoError do begin Error:=CPDB_ReadInt(iHandle,'SCORE',Score); Inc(Average,Score); Error:=CPDB_ReadNext(iHandle); end;
|
Nous pouvons maintenant fermer notre petite base de données, calculer et afficher la moyenne recherchée :
Error:=CPDB_Close(iHandle); writeln('Average Score= '+i2s(round(Average/NbRecords)));
|
Il nous reste juste à fermer la bibliothèque CPDB et quitter notre programme :
Et voilà, c'est terminé. L'écriture de ce programme n'a demandé que quelques minutes de travail très détendu puisque c'est CPDB qui s'occupe de tout ou presque ! Cette bibliothèque est carrément INDISPENSABLE à tout développeur sur Palm et il ne me reste plus qu'à tirer bien bas mon chapeau à PeekPoke.
aldweb
Le converti à CPDB
|
Date de création : 01/01/2003 @ 00:00
Dernière modification : 01/01/2003 @ 00:00
Catégorie :
|
|
|
|
|
|
Spécial ! |
Version mobile de l'aldweb Site m.aldweb.com Ni Français, ni Anglais ?Essayez donc l'un de ces drapeaux :
|
|
Météo / Spam / www |
Météo Lyon
aldweb contre le SPAM
|
|
|