FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Isam quand tu nous tiens Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Isam quand tu nous tiens Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Isam quand tu nous tiens Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Isam quand tu nous tiens Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Isam quand tu nous tiens Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Isam quand tu nous tiens Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Isam quand tu nous tiens Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Isam quand tu nous tiens Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Isam quand tu nous tiens Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Isam quand tu nous tiens Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Isam quand tu nous tiens Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Isam quand tu nous tiens Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Isam quand tu nous tiens Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Isam quand tu nous tiens Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Isam quand tu nous tiens Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -29%
DYSON V8 Origin – Aspirateur balai sans fil
Voir le deal
269.99 €

 

 Isam quand tu nous tiens

Aller en bas 
4 participants
AuteurMessage
Mike

Mike


Nombre de messages : 31
Age : 73
Localisation : NANCY
Date d'inscription : 12/06/2007

Isam quand tu nous tiens Empty
MessageSujet: Isam quand tu nous tiens   Isam quand tu nous tiens EmptyDim 20 Sep 2015 - 21:58

Je suis à fond dans les fichiers Isam et passionné par cette implémentation à partir de Panoramic.
C'est super et encore merci Klaus. (Comme l'a dit Cosmos, tu es vraiment le roi ici)
Par contre, il y a encore quelques inconnues dont la logique m'échappe.
Il s'agit des clés qui si j'ai bien compris peuvent être "multi champs" d'où l'intérêt du truc
Je poste un petit prog qui renvoie le nombre de champs dans une clé, rien que pour voir si c'est oK pour la construction.
Il écrase les .DAT et .IX pour retester ce qui aura été écrit dans la définition des clés.
De plus, je n'ai pas de message d'erreur si ce n'est pas OK et les fichiers sont tronqués, voire inexistants pour l'extension .IX .

Je lis dans le PDF ceci :

dim def$, IsamID%
def$ = "3,30,5,80" : ' 3 champs de longueur 30, 5 et 80 caractères
res% = dll_call2("SetIsamFields",IsamID%,adr(def$))
def$ = "1,1,0,3" : ' clé 1: 1 seul champ, doublons non interdits, champ numéro 3     ???
res% = dll_call2("SetIsamFields",IsamID%,adr(def$))
def$ = "2,3,4,1,7" : ' clé 2: 3 champ,s doublons interdits, champ 4 suivi de champ 1 suivi de champ 7   ???
res% = dll_call2("SetIsamFields",IsamID%,adr(def$))

Je lis aussi dans KGF.chm ceci :

Cette fonction définit les champs d'une clé d'un fichier ISAM.
La définition des champs se fait par une variable de type chaîne de caractères, qui comprend la liste des numéros des champs composant la clé, dans l'ordre, séparées par des virgules.
Le premier élément de cette liste doit être le numéro de la clé.
Le deuxième élément est un indicateur pour l'unicité de la clé (doublons interdits).
Ensuite, il y a la liste des champs composant la clé. La liste contient donc n+2 éléments pour n champs. Le nombre de champs peut être entre 1 et 16.

Quelle est la façon de faire ?

Je reste persuadé qu'il y a une logique que m'échappe.
Par l'exemple et dans le fichier, la définition des clés en multi champs et la seule chose acceptée, en clé 2 d'où mon exemple.
Tout le reste est voué à l’échec, même un truc simple qui définit la première clé avec un champ 4 comme '1,0,4' est rejetée
Sauf erreur de ma part ou incompréhension, ce qui marche sans problème est  clé 1 "1,0,1"  + clé 2 "2,0,2" + ....et pareil pour les autres ce qui est déjà immense.

Voilà un grand message pour toi Klaus, pour que tu expliques et en tout cas merci car c'est géant ce que tu fais pour Panoramic.
Bonne soirée


Mike
Code:
dim err%, res%,
dim idsize%, Isam$, IsamID%, FName$, reclen%, rec$, cle$,rsize% ,fill$,v$,def$



 If file_exists("test_isam.DAT")= 1 then File_delete "test_isam.DAT"
 If file_exists("test_isam.IX")= 1 then File_delete "test_isam.IX"
 
Fname$ = "test_isam"
' trace_on "err.txt"


dll_on KGF.dll
GUI()
initisam()

end

sub InitIsam()

res% = dll_call0("InitIsam")
idsize% = dll_call0("GetIsamIdentifierSize")
Isam$ = string$(idsize%," ")
IsamID% = dll_call1("CreateIsamIdentifier",adr(Isam$))
if dll_call1("IsamFileExists",adr(Fname$))<0
' def$ = "3,30,5,80"
def$ = "8,10,20,30,40,15,10,30,25"
res% = dll_call2("SetIsamFields",IsamID%,adr(def$)) : ' définir les champs
res% = dll_call0("GetIsamOk")
if res%<0
res% = dll_call0("GetIsamError")
message "Erreur en définition des champs: "+str$(err%)
exit_sub
end_if

' *******************CLE 1***********************
def$ ="1,0,1" : ' clé 1: champ 1
' ***********************************************

res% = dll_call2("SetIsamKeyFields",IsamID%,adr(def$)) : ' autoriser doublons
' res% = dll_call2("SetIsamKeyFields",IsamID%,adr(def$))
res% = dll_call0("GetIsamOk")
Text 13,res%
if res%<0
exit_sub
end_if
res% = dll_call2("GetIsamKeyFieldCount",IsamID%,1)
Text 11,res%

' ************************CLE 2******************
def$ = "2,0,2,6" : ' clé 2: champ 2 + champ 6
' ***********************************************

res% = dll_call2("SetIsamKeyFields",IsamID%,adr(def$)) : ' autoriser doublons
res% = dll_call0("GetIsamOk")
' def$=" "
if res%<0
res% = dll_call0("GetIsamError")
message "Erreur en définition de clé 2: "+str$(err%)
exit_sub
end_if
res% = dll_call2("GetIsamKeyFieldCount",IsamID%,2)
Text 12,res%
' print res%
' pause 1000

' **********************CLE 3**********************
def$ = "3,0,3" : ' clé 3: champ 3
' ************************************************


res% = dll_call2("SetIsamKeyFields",IsamID%,adr(def$)) : ' autoriser doublons
res% = dll_call0("GetIsamOk")
if res%<0
res% = dll_call0("GetIsamError")
message "Erreur en définition de clé 2: "+str$(err%)
exit_sub
end_if

res% = dll_call2("GetIsamKeyFieldCount",IsamID%,3)

Text 13,res%

reclen% = dll_call1("GetIsamRecordLength",IsamID%)
res% = dll_call0("GetIsamError")
Text 14,reclen%


res% = dll_call2("CreateIsamFile",IsamID%,adr(FName$))
if res%<0
err% = dll_call0("GetIsamError")

print err%
if res%=-1 then message "Erreur en création de base: "+str$(err%)
if res%=-2 then message "Erreur en réouverture de base: "+str$(err%)
exit_sub
end_if
else

res% = dll_call2("OpenIsamFile",IsamID%,adr(FName$))

if res%<0
print res%
res% = dll_call0("GetIsamError")
message "Erreur en ouverture: "+str$(res%)
exit_sub
end_if
end_if

if res%<0
message "erreur"
end_if

res% = dll_call0("FreeIsam")
end_sub



Sub GUI()
 width 0,800 : height 0,200
alpha 1 : top 1,10 : left 1,10 : caption 1,"Nb champs clé 1:"
alpha 2 : top 2,40 : left 2,10 : caption 2,"Nb champs clé 2:"
alpha 3 : top 3,70 : left 3,10 : caption 3,"Nb champs clé 3:"
alpha 4 : top 4,40 : left 4,220 : caption 4,"Longueur enr."
edit 11 : top 11,10 : left 11,100 : width 11,30
edit 12 : top 12,40 : left 12,100 : width 12,30
edit 13 : top 13,70 : left 13,100 : width 13,30
edit 14 : top 14,40 : left 14,300 : width 14,50

End_sub
Revenir en haut Aller en bas
Mike

Mike


Nombre de messages : 31
Age : 73
Localisation : NANCY
Date d'inscription : 12/06/2007

Isam quand tu nous tiens Empty
MessageSujet: Résolu   Isam quand tu nous tiens EmptyLun 21 Sep 2015 - 19:10

Problème résolu:
J'ai cherché un bon moment.
En fait, et c'est dit par Klaus dans les restrictions, une clé ne doit pas faire plus de 30 caractères. (mais je n'avais pas fait attention à cette ligne et la notion de 30 caractères pour une clé ne m'avait pas fait percuter)
Cela veut dire que l'on ne peux pas affecter une clé à un champ qui dépasse 30 caractères.
De même, pour construire une clé multichamps, il ne faut pas que la longueur totale des champs déclarés dans la clé dépasse 30 caractères.

exemple :
définition des champs = "4,5,5,20,40" . Soit 4 champs de 5;5,20 et 30 caractères
On peut écrire pour la définition des clés
"1,0,2,3" clé 1 avec champs 2 et 3 soit 25 caractères
"4,0,4" clé 4 avec champ 4 soit 30 caractères
Mais on ne peut pas écrire
"4,0,4,1" car champ 4 + champ 1 égalent 35 caractères

Sinon, tout fonctionne parfaitement si ce n'est que l'indicateur d'unicité s'inverse dans le .DAT,  mais c'est sûrement normal.

J'étais justement en train de faire un programme de gestion personnelle avec des fichiers texte mais je vais tout refondre maintenant car les temps d'accès devenaient prohibitifs.
J'espère que mes déboires pourront servir à d'autres car c'est aussi un des but du forum.

Bonne soirée à tous
Mike
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Isam quand tu nous tiens Empty
MessageSujet: Re: Isam quand tu nous tiens   Isam quand tu nous tiens EmptyLun 21 Sep 2015 - 19:21

Bonsoir Mike !

Je suis surpris que tu n'es pas eu de retour de Klaus ! Il est peut être actuellement occupé.
C'est vrai qu'il y a quelques jours il nous disait travailler sur un nouveau projet...

En tous cas tant mieux si tu as trouvé la solution ! cheers
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Isam quand tu nous tiens Empty
MessageSujet: re   Isam quand tu nous tiens EmptyLun 21 Sep 2015 - 19:58

Klaus a dit qu' il le mettrai dans la doc mais je te le précise ici.
il y a une longueur minimale des champs.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Isam quand tu nous tiens Empty
MessageSujet: Re: Isam quand tu nous tiens   Isam quand tu nous tiens EmptyLun 21 Sep 2015 - 23:58

Citation :
Klaus a dit qu' il le mettrai dans la doc mais je te le précise ici.
il y a une longueur minimale des champs.
Pas tout à fait. Il y a une longueur minimale pour un enregistrement (21 caractères), pas pour un champ !

J'étais absent toute la journée, et je reprends le fil des discussions maintenant. Bravo à toi, Mike, d'avoir trouvé le fin mot de l'histoire !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Isam quand tu nous tiens Empty
MessageSujet: re   Isam quand tu nous tiens EmptyMar 22 Sep 2015 - 0:35

Effectivement, mon clavier à fourcher... Laughing
Revenir en haut Aller en bas
Contenu sponsorisé





Isam quand tu nous tiens Empty
MessageSujet: Re: Isam quand tu nous tiens   Isam quand tu nous tiens Empty

Revenir en haut Aller en bas
 
Isam quand tu nous tiens
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Panranoïa quand tu nous tiens...
» Bugs, quand tu nous tiens...
» Quand disposerons-nous de la fonction HEX$(n) ?
» ISAM toujours ISAM
» Éditeur de texte : Mini Word

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: