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
|
|
|
|
|
|
|
- Forum - iziBasic
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 257
Sujet n° 1158 |
Lecture au dela du CHR$(0) |
le 10/03/2005 @ 12:31 par Khertan
|
Salut ...
Bon j'essaye avec une applet PP de lire au dela du CHR$(0) ... en accedant direct a l'index voulu ... mais etant pas tres doué en pascal ... j'ai a chaque fois une erreur fatal ... mais je ne sais ou ...
L'applet est appelé de cette maniere :
|
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 1 -------- le 10/03/2005 @ 12:32 par Khertan
visiteur |
Bon j'arrive pas a poster mon code ... j'ai une parse erreur sur le forum a la ligne 13 ... unexpected variable ...
|
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 2 -------- le 10/03/2005 @ 12:33 par Khertan
visiteur |
L'applet est appelé de cette maniere :
A$=CALLPP(100,"MultiMail Message")
|
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 3 -------- le 10/03/2005 @ 12:34 par Khertan
visiteur |
et le code de l'applet :
$code appl,Kh13,code,100 program PPTest; $i PalmAPI.pas type iBasFunType=function(S:string):string; var iBasCallPP:iBasFunType; var Event:EventType;
function CallPP(S:string):string;
type kMegaString=array[0..4095] of char; kMegaStringPtr=^kMegaString;
var f:UInt16; databas:DmOpenRef; krecord:MemHandle; zechar:char; kZeMegaString:kMegaString; kZeMegaStringPtr:kMegaStringPtr;
begin
f:=DmFindDatabase(0,S); databas:=DmOpenDatabase(0,f,dmModeReadWrite); krecord:=DmGetRecord(databas,1);
kZeMegaStringPtr:=MemHandleLock(krecord); kZeMegaString:=kZeMegaStringPtr^; zec har:=kZeMegaString[5];
MemHandleUnlock(krecord); DmReleaseRecord(databas,1,false);
CallPP:=zechar; end;
begin
iBasCallPP:=CallPP; end.
Si quelqu'un voit pourquoi ... merci ... |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 4 -------- le 10/03/2005 @ 12:34 par Khertan
visiteur |
bien sur il y a des
{ et des }
que ton forum n'accepte pas apperement :) |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 5 -------- le 11/03/2005 @ 00:00 par aldweb
visiteur |
A première vue, ton code semble tout à fait correct. Sauf qu'il semble bien y manquer un petit DmCloseDatabase à la fin...
T'as vu ? C'est quand-même nettement plus compliqué à coder qu'en iziBasic, non ?
Sinon, oui, les parenthèses ont du mal à passer ici...
@+ aldweb |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 6 -------- le 11/03/2005 @ 09:43 par Khertan
visiteur |
Oui mon code semblait correct ... sauf que apres avoir chercher pas mal ... j'ai trouvé ou etait mon erreur ... c'est le local ID ... ou ca chiait ...
Et oui c'est un UInt32 et non un UInt16 ... boum :)
Bon sinon j'arrive a lire proprement maintenant mais lorsque je quitte iziBasic j'ai une fatale exception ...
Oui bah tu sais j'aime bien iziBasic pour ca simplicité ... c'est presque un RAD ... :) et puis comme tout RAD ... pour un truc un peu plus complexe tu code un plug in ... soit un applet PP pour iziBasic ...
Enfin bref ... je commence a aimer de codé des petit applets pour iziBasic ... :) ... Mais c'est seulement pour completer iziBasic ... :)
Sinon voici le code ... me reste a mettre un parseur pour la string S passé afin de pouvoir mettre plusieur arguments dedans comme l'index du record, la position du caractere dans le record et le nom de la base ...
($code appl,Kh13,code,100) program PPTest; ($i PalmAPI.pas) type iBasFunType=function(S:string):string; var iBasCallPP:iBasFunType; var Event:EventType;
function CallPP(S:string):string;
type kMegaString=array[0..4095] of char; kMegaStringPtr=^kMegaString;
var f:LocalID; index:UInt16; pos:UInt16; ref:DmOpenRef; krecord:MemHandle; zechar:char; kZeMegaString:kMegaString; kZeMegaStringPtr:kMegaStringPtr; begin
f:=DmFindDatabase(0,'MultiMail Messages'); ref:=DmOpenDatabase(0,f,dmModeReadOnly);
index:=0; pos:=4;
krecord:=DmGetRecord(ref,index); kZeMegaStringPtr:=MemHandleLock(krecord);
CallPP:='0';
if kZeMegaStringPtr<>nil then begin kZeMegaString:=kZeMegaStringPtr^; zechar:=kZeMegaString[4]; CallPP:=zechar; end;
MemHandleUnlock(krecord); DmReleaseRecord(ref,1,false); DmCloseDatabase(ref);
end;
begin iBasCallPP:=CallPP; end. |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 6 -------- le 11/03/2005 @ 09:43 par Khertan
visiteur |
Oui mon code semblait correct ... sauf que apres avoir chercher pas mal ... j'ai trouvé ou etait mon erreur ... c'est le local ID ... ou ca chiait ...
Et oui c'est un UInt32 et non un UInt16 ... boum :)
Bon sinon j'arrive a lire proprement maintenant mais lorsque je quitte iziBasic j'ai une fatale exception ...
Oui bah tu sais j'aime bien iziBasic pour ca simplicité ... c'est presque un RAD ... :) et puis comme tout RAD ... pour un truc un peu plus complexe tu code un plug in ... soit un applet PP pour iziBasic ...
Enfin bref ... je commence a aimer de codé des petit applets pour iziBasic ... :) ... Mais c'est seulement pour completer iziBasic ... :)
Sinon voici le code ... me reste a mettre un parseur pour la string S passé afin de pouvoir mettre plusieur arguments dedans comme l'index du record, la position du caractere dans le record et le nom de la base ...
$code appl,Kh13,code,100 program PPTest; $i PalmAPI.pas type iBasFunType=function(S:string):string; var iBasCallPP:iBasFunType; var Event:EventType;
function CallPP(S:string):string;
type kMegaString=array[0..4095] of char; kMegaStringPtr=^kMegaString;
var f:LocalID; index:UInt16; pos:UInt16; ref:DmOpenRef; krecord:MemHandle; zechar:char; kZeMegaString:kMegaString; kZeMegaStringPtr:kMegaStringPtr; begin
f:=DmFindDatabase(0,'MultiMail Messages'); ref:=DmOpenDatabase(0,f,dmModeReadOnly);
index:=0; pos:=4;
krecord:=DmGetRecord(ref,index); kZeMegaStringPtr:=MemHandleLock(krecord);
CallPP:='0';
if kZeMegaStringPtr<>nil then begin kZeMegaString:=kZeMegaStringPtr^; zechar:=kZeMegaString[4]; CallPP:=zechar; end;
MemHandleUnlock(krecord); DmReleaseRecord(ref,1,false); DmCloseDatabase(ref);
end;
begin iBasCallPP:=CallPP; end. |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 7 -------- le 11/03/2005 @ 20:57 par Khertan
visiteur |
Le gentil createur de PP, Philippe Guillot à trouvé pourquoi ...
Un depassement de pile sur le zeMegaString[0..4095] ...
Maintenant reste a savoir comment faire ... |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 9 -------- le 13/03/2005 @ 18:49 par aldweb
visiteur |
Ah oui, ça aurait du me sauter aux yeux aussi.
Ton zeMegaString de 4 Ko est déclaré en variable locale et on a moins que ça dans un module.
Pour les besoins de tes tests, diminue-le sous une barre de 512 octets ou 1 Ko.
Après, je pourrai voir pour donner accès à mon propre tableau de MegaString que j'utilise dans iziBasic en variable globale, et qui est déclaré exactement comme le tien. Ca m'imposera un petit réarangement de la mémoire et une recompilation complète, pour une version 5.0 spéciale Khertan ou une version 5.1
@+ aldweb |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 10 -------- le 13/03/2005 @ 19:45 par Khertan
visiteur |
Lol ... te prends pas la tête ... 4Ko ... pour lire une char ... :)
hum on a deja vu vieux niveau optimisation ... :)
:)
Non je suis en train d'essayer de faire du parsing pour passer trois arguments depuis iziBasic ... mais je galere avec ca :) |
|
|
sujet actif
sujet clos
Important!
Nouveau message -
Rectifier message
Clôturer sujet
Remonter
|
|
|
|
|
|