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
» Une calculatrice en une ligne de programme
Des nouvelles du compilateur ? Emptypar jean_debord Aujourd'hui à 8:47

» Form(résolu)
Des nouvelles du compilateur ? Emptypar leclode Hier à 17:59

» trop de fichiers en cours
Des nouvelles du compilateur ? Emptypar Marc Hier à 11:42

» Bataille navale SM
Des nouvelles du compilateur ? Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Gestion d'un système client-serveur.
Des nouvelles du compilateur ? Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Des nouvelles du compilateur ? Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Des nouvelles du compilateur ? Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Des nouvelles du compilateur ? Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Des nouvelles du compilateur ? Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Des nouvelles du compilateur ? Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Des nouvelles du compilateur ? Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Des nouvelles du compilateur ? Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Des nouvelles du compilateur ? Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Des nouvelles du compilateur ? Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Des nouvelles du compilateur ? Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-45%
Le deal à ne pas rater :
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre 14 couverts – ...
339 € 622 €
Voir le deal

 

 Des nouvelles du compilateur ?

Aller en bas 
5 participants
AuteurMessage
Pedro

Pedro


Nombre de messages : 1549
Date d'inscription : 19/01/2014

Des nouvelles du compilateur ? Empty
MessageSujet: Des nouvelles du compilateur ?   Des nouvelles du compilateur ? EmptyDim 2 Juin 2019 - 9:12

@Jack.

J'aimerais bien avoir quelques nouvelles du compilateur.
As-tu pû avancer sur ce projet ?
Merci.
Revenir en haut Aller en bas
Klaus

Klaus


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

Des nouvelles du compilateur ? Empty
MessageSujet: Re: Des nouvelles du compilateur ?   Des nouvelles du compilateur ? EmptySam 22 Juin 2019 - 12:51

J'ai essayé de compiler un petit code Panoramic utilisant des fichiers texte. Et la commande FILE_WRITELN ne passe pas: message d'erreur suivant:
(157) call of unknown SUB

Je pense qu'il manquent encore pas mal d'éléments dans l'implémentation actuelle !

Exemple:
Code:
fichier$ = "HtmlDocument.dat"
if file_exists(html_attente$)=0
  file_open_write 1,html_attente$
  file_writeln("<!DOCTYPE html>")
  file_writeln("<html>")
  file_writeln("<head>")
  file_writeln("<title>Générateur HTML</title>")
  file_writeln("</head>")
  file_writeln("<body>")
  file_writeln("")
  file_writeln("<h1>En attente...</h1>")
  file_writeln("")
  file_writeln("</body>")
  file_writeln("</html>") 
  file_close 1
end_if
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

Des nouvelles du compilateur ? Empty
MessageSujet: Re: Des nouvelles du compilateur ?   Des nouvelles du compilateur ? EmptySam 22 Juin 2019 - 13:18

Heu Klaus...

ce n'est pas plutôt : FILE_WRITELN 1, "xxxxx" Question Exclamation
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Des nouvelles du compilateur ? Empty
MessageSujet: Re: Des nouvelles du compilateur ?   Des nouvelles du compilateur ? EmptySam 22 Juin 2019 - 13:32

Ah, mais c'est bien sûr... Je ne suis pas encore pleinement opérationnel, la preuve !
Désolé pour cette alerte.

Cependant, n'ayant pas encore l'habitude du compilateur, je suis perplexe devant la liste d'erreurs de compilation au sujet du code suivant:
Code:
' CreateHtmlDocument.bas

label close0, TV_event
label nouveau, enregistrer, enregistrer2, ouvrir, fermer
label sortir, modattrib, choixelem, choixattrib

dim TV%, SP1%, SP2%, WB%
dim res%, txt$, ind%, child%, ClickFlag%, s$, s1$, p%, noeud%, PM%, i%, WBhnd%
dim OldCell$, NewCell$, ligattrib%, att$, name$, value$, ligelem%, elem$, url$
dim html_attente$, fichier$
dim M1% : m1% = 0 - 1
html_attente$ = "CreateHtmlDocument_attente.html"
fichier$ = "HtmlDocument.dat"
if file_exists(html_attente$)=0
  file_open_write 1,html_attente$
  file_writeln 1,"<!DOCTYPE html>"
  file_writeln 1,"<html>"
  file_writeln 1,"<head>"
  file_writeln 1,"<title>Générateur HTML</title>"
  file_writeln 1,"</head>"
  file_writeln 1,"<body>"
  file_writeln 1,""
  file_writeln 1,"<h1>En attente...</h1>"
  file_writeln 1,""
  file_writeln 1,"</body>"
  file_writeln 1,"</html>" 
  file_close 1
end_if
url$ = "file:///"+dir_current$+"\"+html_attente$

dll_on "KGF.dll"

full_space 0
caption 0,"Création document HTML: "+fichier$
on_close 0,close0

edit 17 : hide 17 : on_change 17,TV_event

main_menu 100
  sub_menu 101 : parent 101,100 : caption 101,"Fichier"
    sub_menu 102 : parent 102,101 : caption 102,"Nouveau" : on_click 102,nouveau
    sub_menu 103 : parent 103,101 : caption 103,"Enregistrer" : on_click 103,enregistrer
    sub_menu 104 : parent 104,101 : caption 104,"Enregistrer sous..." : on_click 104,enregistrer2
    sub_menu 105 : parent 105,101 : caption 105,"Ouvrir..." : on_click 105,ouvrir
    sub_menu 106 : parent 106,101 : caption 106,"Fermer" : on_click 106,fermer
    sub_menu 108 : parent 108,101 : caption 108,"-"
    sub_menu 109 : parent 109,101 : caption 109,"Sortir" : on_click 109,sortir

SP1% = dll_call1("CreateScrollPanel",handle(0))
res% = dll_call5("LocateScrollPanel",SP1%,0,0,170,height_client(0))
SP2% = dll_call1("CreateScrollPanel",handle(0))
res% = dll_call5("LocateScrollPanel",SP2%,170,0,width_client(0)-340,height_client(0))

memo 18 : top 18,200 : left 18,200 : width 18,150 : height 18,100 : bar_both 18 : hide 18
list 19 : top 19,200 : left 19,0 : width 19,150 : height 19,200: on_click 19,modattrib
list 21 : top 21,400 : left 21,0 : width 21,150 : height 21,200 : on_click 21,choixelem : inactive 21
  item_add 21,"Elements:"
  item_add 21,"title"
  item_add 21,"h1"
  item_add 21,"p"
list 22 : top 22,600 : left 22,0 : width 22,150 : height 22,200 : on_click 22,choixattrib : inactive 22
  item_add 22,"Attributs:"

res% = dll_call4("AttachToScrollPanel",SP1%,handle(18),0,0)
res% = dll_call4("AttachToScrollPanel",SP1%,handle(19),0,200)
res% = dll_call4("AttachToScrollPanel",SP1%,handle(21),0,400)
res% = dll_call4("AttachToScrollPanel",SP1%,handle(22),0,600)
 
WB% = dll_call1("WB_Create",handle(0))
res% = dll_call5("WB_Locate",WB%,170,0,width_client(0),height_client(0))
WBhnd% = dll_call2("WB_Function",WB%,8)
res% = dll_call2("WB_Url",WB%,adr(url$))
res% = dll_call4("AttachToScrollPanel",SP2%,WBhnd%,0,0)

save_dialog 31 : filter 31,"Projet document HTML|*.dat"
open_dialog 32 : filter 32,"Projet document HTML|*.dat"
end

nouveau:
  if TV%<>0
    message "Un document est déjà ouvert."
    return
  end_if
 
  TV% = dll_call2("CreateHtmlTreeView",handle(0),1)
  res% = dll_call4("SetTreeViewOptions",TV%,1,1,0)

  res% = dll_call5("ResizeTreeView",TV%,0,0,150,200)

  txt$ = file_extract_name$(fichier$)
  s$ = file_extract_extension$(fichier$)
  txt$ = left$(txt$,len(txt$)-len(s$))
  ind% = dll_call4("AddTreeViewRootNode",TV%,adr(txt$),1,1)
  name$ = "!DOCTYPE"
  value$ = "html"
  res% = dll_call5("TreeViewNodeAttribute",TV%,2,ind%,adr(name$),adr(value$))
  txt$ = "Head"
  res% = dll_call4("AddTreeViewChildNode",TV%,adr(txt$),3,1)
  res% = dll_call3("SelectTreeViewNode",TV%,ind%,0)
  txt$ = "Body"
  res% = dll_call4("AddTreeViewChildNode",TV%,adr(txt$),4,1)

  res% = dll_call3("SetTreeViewEventReceiver",TV%,1,handle(17))
  res% = dll_call3("SelectTreeViewNode",TV%,ind%,1)
 
  active 21
  active 22
  return
 
enregistrer:
  s$ = fichier$
  res% = dll_call2("SaveTreeViewToFile",TV%,adr(s$))
  return
 
enregistrer2:
  s$ = file_name$(31)
  if s$="_" then return
  if lower$(file_extract_extension$(s$))<>".dat" then return
  if file_exists(s$)=1
    if message_confirmation_yes_no("Ce fichier existe déjà. Remplacer ?")<>1 then return
  end_if
  fichier$ = s$
  caption 0,"Création document HTML: "+fichier$
  gosub enregistrer
  return
 
ouvrir:
  if TV%<>0
    message "Un document est déjà ouvert."
    return
  end_if

  TV% = dll_call2("CreateHtmlTreeView",handle(0),1)
  res% = dll_call4("SetTreeViewOptions",TV%,1,1,0)
  res% = dll_call5("ResizeTreeView",TV%,0,0,150,200)
  active 21
  active 22
 
  s$ = file_name$(31)
  if s$="_" then return
  if lower$(file_extract_extension$(s$))<>".dat" then return
  if file_exists(s$)=0
    message "Ce fichier n'existe pas."
    return
  end_if
  fichier$ = s$
  caption 0,"Création document HTML: "+fichier$
  html_attente$ = "CreateHtmlDocument_attente.html"
  res% = dll_call2("WB_Url",WB%,adr(url$))
  res% = dll_call2("LoadTreeViewFromFile",TV%,adr(fichier$))
  res% = dll_call3("SelectTreeViewNode",TV%,0,1)
  res% = dll_call3("SetTreeViewEventReceiver",TV%,1,handle(17))
  res% = dll_call3("GetTreeViewInformation",TV%,9,handle(19))
  return
 
fermer:
  TV% = dll_call2("DeleteTreeView",TV%,0)
  inactive 21
  inactive 22
  html_attente$ = "CreateHtmlDocument_attente.html"
  fichier$ = "HtmlDocument.dat"
  url$ = "file:///"+dir_current$+"\"+html_attente$
  caption 0,"Création document HTML: "+fichier$
  res% = dll_call2("WB_Url",WB%,adr(url$))
  clear 19
  return

if 1=2
PM% = dll_call1("CreateTVPopupMenu",handle(17))
s$ = "popup ligne 1"
res% = dll_call4("CreateTVPopupMenuItem",PM%,1,0,adr(s$))
s$ = "popup ligne 2"
res% = dll_call4("CreateTVPopupMenuItem",PM%,1,0,adr(s$))
res% = dll_call4("SetTreeViewOptions",TV%,1,9,PM%) : ' popup menu
end_if

end

close0:
  res% = dll_call2("DeleteTreeView",TV%,0)
  res% = dll_call1("WB_Delete",WB%)
  SP2% = dll_call1("DeleteScrollPanel",SP2%)
'  res% = dll_call1("DeleteTVPopupMenu",PM%)
  return
 
TV_event:
  s$ = text$(17)
  item_add 18,"TV1: "+s$

    s1$ = string$(200," ")
    res% = dll_call3("GetTreeViewInformation",TV%,5,adr(s1$))
    s1$ = trim$(s1$)
    if len(s1$)>0 then item_add 18,"    "+s1$
    res% = dll_call3("GetTreeViewInformation",TV%,9,handle(19))
   
  if left$(s$,8)="editing,"
    s$ = mid$(s$,9,len(s$))
    p% = instr(s$,",")
    noeud% = val(left$(s$,p%-1))
    OldCell$ = mid$(s$,p%+1,len(s$))
' item_add 18,"Old  "+str$(noeud%)+": "+OldCell$
    return
  end_if
  if left$(s$,7)="edited,"      : ' exemple: on interdit la saisie d'un "$"
    s$ = mid$(s$,8,len(s$))
    p% = instr(s$,",")
    noeud% = val(left$(s$,p%-1))
    NewCell$ = mid$(s$,p%+1,len(s$))
    p% = instr(NewCell$,"$")
    while p%>0
      NewCell$ = mid$(NewCell$,1,p%-1)+mid$(NewCell$,p%+1,len(NewCell$))
      p% = instr(NewCell$,"$")
    end_while
    res% = dll_call4("ChangeTreeViewNodeText",TV%,2,0,adr(NewCell$))
    item_add 18,"New  "+str$(noeud%)+": "+NewCell$
    return
  end_if
  return

sortir:
  gosub close0
  terminate
 
modattrib:
  ligattrib% = item_index(19)
  att$ = trim$(item_read$(19,ligattrib%))
  if left$(att$,10)="Attributs:" then return
  message "Attribut: "+att$
  return
 
choixelem:
  ligelem% = item_index(21)
  if ligelem%=1 then return
  elem$ = trim$(item_read$(21,ligelem%))

  s$ = string$(100," ")
  ind% = dll_call3("GetTreeViewInformation",TV%,5,adr(s$))
  if ind%=0 then return  : ' ne pas autoriser l'ajout d'éléments dans la racine !
 
'  res% = dll_call3("SelectTreeViewNode",TV1%,ind%,0)
  txt$ = elem$
  res% = dll_call4("AddTreeViewChildNode",TV%,adr(txt$),4,1)
 
  return
 
choixattrib:
  ligattrib% = item_index(22)
  if ligattrib%=1 then return
  att$ = trim$(item_read$(22,ligattrib%)
 

  return 


Les erreurs listées dans le fichier error.txt:
Citation :
CreateHtmlDocument.bas(232) error 33: Expected 'END IF', found 'End'
End Sub
^
CreateHtmlDocument.bas(233) error 58: Illegal inside functions, found 'Sub'
Sub L_CHOIXELEM
^
CreateHtmlDocument.bas(237) error 58: Illegal inside functions, found 'Sub'
Sub L_CLOSE0
^
CreateHtmlDocument.bas(242) error 58: Illegal inside functions, found 'Sub'
Sub L_ENREGISTRER
^
CreateHtmlDocument.bas(246) error 58: Illegal inside functions, found 'Sub'
Sub L_ENREGISTRER2
^
CreateHtmlDocument.bas(250) error 58: Illegal inside functions, found 'Sub'
Sub L_FERMER
^
CreateHtmlDocument.bas(261) error 58: Illegal inside functions, found 'Sub'
Sub L_MODATTRIB
^
CreateHtmlDocument.bas(266) error 58: Illegal inside functions, found 'Sub'
Sub L_NOUVEAU
^
CreateHtmlDocument.bas(270) error 58: Illegal inside functions, found 'Sub'
Sub L_OUVRIR
^
CreateHtmlDocument.bas(274) error 58: Illegal inside functions, found 'Sub'
Sub L_SORTIR
^
CreateHtmlDocument.bas(274) error 123: Too many errors, exiting

Ce sont tous les labels évènement. Apparemment, le compilateur génère une structure SUB L_xxx pour chacun de ces labels. Mais où est l'erreur que j'ai commise ? En version interprétée, ça marche très bien !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Des nouvelles du compilateur ? Empty
MessageSujet: Re: Des nouvelles du compilateur ?   Des nouvelles du compilateur ? EmptySam 22 Juin 2019 - 19:08

J'ai réussi à obtenir une compilation correcte, en modifiant mon source Panoramic de façon empirique et selon les souvenirs qui me restaient des infos initiales de Jack:

1. séparer les commandes en "sections": labels d'abord, puis DIM, puis déclaration de tous les objets, puis code exécutable, puis END, puis les routines évènement
2. il n'y a pas de GOSUB. J'ai remplacé en copiant le code à l'endroit voulu; plus tard j'essayerai les SUBs.
3. il n'y a pas de IF...THEN. A remplacer par IF...END_IF
4. il n'y a pas de possibilité de faire des RETURN multiples dans un sousprogramme. J'essayerai plus tard de placer le code de chaque sous-programmes dans une SUB et de faire des EXIT_SUB.

Ainsi, mon programme devient ceci:
Code:
' CreateHtmlDocument.bas

label close0, TV_event
label nouveau, enregistrer, enregistrer2, ouvrir, fermer
label sortir, modattrib, choixelem, choixattrib

dim TV%, SP1%, SP2%, WB%
dim res%, txt$, ind%, child%, ClickFlag%, s$, s1$, p%, noeud%, PM%, i%, WBhnd%
dim OldCell$, NewCell$, ligattrib%, att$, name$, value$, ligelem%, elem$, url$
dim html_attente$, fichier$, ok%
dim M1% : m1% = 0 - 1

html_attente$ = "CreateHtmlDocument_attente.html"
fichier$ = "HtmlDocument.dat"
if file_exists(html_attente$)=0
  file_open_write 1,html_attente$
  file_writeln 1,"<!DOCTYPE html>"
  file_writeln 1,"<html>"
  file_writeln 1,"<head>"
  file_writeln 1,"<title>Générateur HTML</title>"
  file_writeln 1,"</head>"
  file_writeln 1,"<body>"
  file_writeln 1,""
  file_writeln 1,"<h1>En attente...</h1>"
  file_writeln 1,""
  file_writeln 1,"</body>"
  file_writeln 1,"</html>" 
  file_close 1
end_if
url$ = "file:///"+dir_current$+"\"+html_attente$

full_space 0
caption 0,"Création document HTML: "+fichier$
on_close 0,close0

edit 17 : hide 17 : on_change 17,TV_event

main_menu 100
  sub_menu 101 : parent 101,100 : caption 101,"Fichier"
    sub_menu 102 : parent 102,101 : caption 102,"Nouveau" : on_click 102,nouveau
    sub_menu 103 : parent 103,101 : caption 103,"Enregistrer" : on_click 103,enregistrer
    sub_menu 104 : parent 104,101 : caption 104,"Enregistrer sous..." : on_click 104,enregistrer2
    sub_menu 105 : parent 105,101 : caption 105,"Ouvrir..." : on_click 105,ouvrir
    sub_menu 106 : parent 106,101 : caption 106,"Fermer" : on_click 106,fermer
    sub_menu 108 : parent 108,101 : caption 108,"-"
    sub_menu 109 : parent 109,101 : caption 109,"Sortir" : on_click 109,sortir

memo 18 : top 18,200 : left 18,200 : width 18,150 : height 18,100 : bar_both 18 : hide 18
list 19 : top 19,200 : left 19,0 : width 19,150 : height 19,200: on_click 19,modattrib
list 21 : top 21,400 : left 21,0 : width 21,150 : height 21,200 : on_click 21,choixelem : inactive 21
  item_add 21,"Elements:"
  item_add 21,"title"
  item_add 21,"h1"
  item_add 21,"p"
list 22 : top 22,600 : left 22,0 : width 22,150 : height 22,200 : on_click 22,choixattrib : inactive 22
  item_add 22,"Attributs:"

save_dialog 31 : filter 31,"Projet document HTML|*.dat"
open_dialog 32 : filter 32,"Projet document HTML|*.dat"

dll_on "KGF.dll"

SP1% = dll_call1("CreateScrollPanel",handle(0))
res% = dll_call5("LocateScrollPanel",SP1%,0,0,170,height_client(0))
SP2% = dll_call1("CreateScrollPanel",handle(0))
res% = dll_call5("LocateScrollPanel",SP2%,170,0,width_client(0)-340,height_client(0))

res% = dll_call4("AttachToScrollPanel",SP1%,handle(18),0,0)
res% = dll_call4("AttachToScrollPanel",SP1%,handle(19),0,200)
res% = dll_call4("AttachToScrollPanel",SP1%,handle(21),0,400)
res% = dll_call4("AttachToScrollPanel",SP1%,handle(22),0,600)
 

end

nouveau:
  if TV%<>0
    message "Un document est déjà ouvert."
  else
 
    TV% = dll_call2("CreateHtmlTreeView",handle(0),1)
    res% = dll_call4("SetTreeViewOptions",TV%,1,1,0)

    res% = dll_call5("ResizeTreeView",TV%,0,0,150,200)

    txt$ = file_extract_name$(fichier$)
    s$ = file_extract_extension$(fichier$)
    txt$ = left$(txt$,len(txt$)-len(s$))
    ind% = dll_call4("AddTreeViewRootNode",TV%,adr(txt$),1,1)
    name$ = "!DOCTYPE"
    value$ = "html"
    res% = dll_call5("TreeViewNodeAttribute",TV%,2,ind%,adr(name$),adr(value$))
    txt$ = "Head"
    res% = dll_call4("AddTreeViewChildNode",TV%,adr(txt$),3,1)
    res% = dll_call3("SelectTreeViewNode",TV%,ind%,0)
    txt$ = "Body"
    res% = dll_call4("AddTreeViewChildNode",TV%,adr(txt$),4,1)

    res% = dll_call3("SetTreeViewEventReceiver",TV%,1,handle(17))
    res% = dll_call3("SelectTreeViewNode",TV%,ind%,1)
 
    active 21
    active 22
  end_if
  return
 
enregistrer:
  s$ = fichier$
  res% = dll_call2("SaveTreeViewToFile",TV%,adr(s$))
  return
 
enregistrer2:
  s$ = file_name$(31)
  if s$<>"_"
    if lower$(file_extract_extension$(s$))=".dat"
      ok% = 1 
      if file_exists(s$)=1
        if message_confirmation_yes_no("Ce fichier existe déjà. Remplacer ?")<>1
          ok% = 0
        end_if
      end_if
      if ok%=1
        fichier$ = s$
        caption 0,"Création document HTML: "+fichier$
        s$ = fichier$
        res% = dll_call2("SaveTreeViewToFile",TV%,adr(s$))
      end_if
    end_if
  end_if
  return
 
ouvrir:
  if TV%<>0
    message "Un document est déjà ouvert."
  else

    TV% = dll_call2("CreateHtmlTreeView",handle(0),1)
    res% = dll_call4("SetTreeViewOptions",TV%,1,1,0)
    res% = dll_call5("ResizeTreeView",TV%,0,0,150,200)
    active 21
    active 22
 
    s$ = file_name$(31)
    if s$<>"_"
      if lower$(file_extract_extension$(s$))=".dat"
        if file_exists(s$)=0
          message "Ce fichier n'existe pas."
        else
          fichier$ = s$
          caption 0,"Création document HTML: "+fichier$
          html_attente$ = "CreateHtmlDocument_attente.html"
          res% = dll_call2("WB_Url",WB%,adr(url$))
          res% = dll_call2("LoadTreeViewFromFile",TV%,adr(fichier$))
          res% = dll_call3("SelectTreeViewNode",TV%,0,1)
          res% = dll_call3("SetTreeViewEventReceiver",TV%,1,handle(17))
          res% = dll_call3("GetTreeViewInformation",TV%,9,handle(19))
        end_if
      end_if
    end_if
  end_if
  return
 
fermer:
  TV% = dll_call2("DeleteTreeView",TV%,0)
  inactive 21
  inactive 22
  html_attente$ = "CreateHtmlDocument_attente.html"
  fichier$ = "HtmlDocument.dat"
  url$ = "file:///"+dir_current$+"\"+html_attente$
  caption 0,"Création document HTML: "+fichier$
  res% = dll_call2("WB_Url",WB%,adr(url$))
  clear 19
  return

close0:
  res% = dll_call2("DeleteTreeView",TV%,0)
  res% = dll_call1("WB_Delete",WB%)
  SP2% = dll_call1("DeleteScrollPanel",SP2%)
  return
 
TV_event:
  s$ = text$(17)
  item_add 18,"TV1: "+s$

    s1$ = string$(200," ")
    res% = dll_call3("GetTreeViewInformation",TV%,5,adr(s1$))
    s1$ = trim$(s1$)
    if len(s1$)>0
      item_add 18,"    "+s1$
    end_if
    res% = dll_call3("GetTreeViewInformation",TV%,9,handle(19))
   
  if left$(s$,8)="editing,"
    s$ = mid$(s$,9,len(s$))
    p% = instr(s$,",")
    noeud% = val(left$(s$,p%-1))
    OldCell$ = mid$(s$,p%+1,len(s$))
' item_add 18,"Old  "+str$(noeud%)+": "+OldCell$
  else
    if left$(s$,7)="edited,"      : ' exemple: on interdit la saisie d'un "$"
      s$ = mid$(s$,8,len(s$))
      p% = instr(s$,",")
      noeud% = val(left$(s$,p%-1))
      NewCell$ = mid$(s$,p%+1,len(s$))
      p% = instr(NewCell$,"$")
      while p%>0
        NewCell$ = mid$(NewCell$,1,p%-1)+mid$(NewCell$,p%+1,len(NewCell$))
        p% = instr(NewCell$,"$")
      end_while
      res% = dll_call4("ChangeTreeViewNodeText",TV%,2,0,adr(NewCell$))
      item_add 18,"New  "+str$(noeud%)+": "+NewCell$
    end_if
  end_if
  return

sortir:
  res% = dll_call2("DeleteTreeView",TV%,0)
  res% = dll_call1("WB_Delete",WB%)
  SP2% = dll_call1("DeleteScrollPanel",SP2%)
  terminate
  return
 
modattrib:
  ligattrib% = item_index(19)
  att$ = trim$(item_read$(19,ligattrib%))
  if left$(att$,10)<>"Attributs:"
    message "Attribut: "+att$
  end_if
  return
 
choixelem:
  ligelem% = item_index(21)
  if ligelem%>1
    elem$ = trim$(item_read$(21,ligelem%))

    s$ = string$(100," ")
    ind% = dll_call3("GetTreeViewInformation",TV%,5,adr(s$))
    if ind%>0    : ' ne pas autoriser l'ajout d'éléments dans la racine !
 
'      res% = dll_call3("SelectTreeViewNode",TV1%,ind%,0)
      txt$ = elem$
      res% = dll_call4("AddTreeViewChildNode",TV%,adr(txt$),4,1)
    end_if
  end_if
  return
 
choixattrib:
  ligattrib% = item_index(22)
  if ligattrib%<>1
    att$ = trim$(item_read$(22,ligattrib%))
 
 
  end_if
  return 

Ca passe à la compilation et l'EXE est généré. Il peut être lancé et la majeure partie du code est opérationnel. Il reste un problème d'appel des fonctions de DLL, certainement lié à ce que Jack a mentionné au sujet du passage de paramètres de chaînes de caractères, et j'attends la publication de la version que Jack vient d'annoncer pour corriger cela - ce ne sera plus très complique.

Une remarque personnelle: à la compilation, on obtient un fichier de texte contenant les messages d'erreur. C'est bien, mais les messages n'ont pas forcément un lien très évident avec le source Panoramic. C'est sûrement dû au faut que le compilateur proprement-dit ne connaît pas Panoramic, mais seulement le langage intermédiaire utilisé pour cette phase. Faudra que je m'y habitue.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Des nouvelles du compilateur ? Empty
MessageSujet: Re: Des nouvelles du compilateur ?   Des nouvelles du compilateur ? EmptyDim 23 Juin 2019 - 8:00

Ce sont les messages d'erreur de FreeBASIC. Pour les interpréter il faudrait avoir le code FreeBASIC généré.
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Klaus

Klaus


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

Des nouvelles du compilateur ? Empty
MessageSujet: Re: Des nouvelles du compilateur ?   Des nouvelles du compilateur ? EmptyDim 23 Juin 2019 - 11:19

D'accord - mais comme on n'a pas accès au code source FreeBasic généré, ça reste plutôt abstrait. Certains messages permettent de retrouver la ligne Panoramic (ceux liés à un problème de syntaxe ou de type de données dans une expression), mais ceux liés à la structure même du programme restent mystérieux. J'ai dû procéder par tatonnements pour découvrir que le THEN n'existe pas dans la version compilée, tout comme des RETURN dans le corps d'un sousprogramme, et il y en a d'autres. Et encore... pour mon petit code d'essai (250 lignes), c'était relativement simple. J'imagine la difficulté que rencontre Pedro pour convertir des codes de plusieurs milliers de lignes...

C'est dommage. Le compilateur Panorami est certainement un outil puissant, mais en l'état, il me semble difficile à mettre en oeuvre.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

Des nouvelles du compilateur ? Empty
MessageSujet: Re: Des nouvelles du compilateur ?   Des nouvelles du compilateur ? EmptyDim 23 Juin 2019 - 15:25

Bonjour Klaus !

N'oublie pas que la version que nous utilisons date d’août 2017. Soit pratiquement 2 ans.
Je pense que Jack a pas mal avancé depuis !

Et c'est peut être aussi pour cette raison qu'il attends de mettre une version en ligne... Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Jack
Admin
Jack


Nombre de messages : 2381
Date d'inscription : 28/05/2007

Des nouvelles du compilateur ? Empty
MessageSujet: Re: Des nouvelles du compilateur ?   Des nouvelles du compilateur ? EmptyMar 25 Juin 2019 - 18:47

La dernière version du compilateur est disponible ici:

https://e-nautia.com/karma/disk/PANORAMIC/PANORAMIC_COMPILER_EDITOR.exe

_________________
Des nouvelles du compilateur ? Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Contenu sponsorisé





Des nouvelles du compilateur ? Empty
MessageSujet: Re: Des nouvelles du compilateur ?   Des nouvelles du compilateur ? Empty

Revenir en haut Aller en bas
 
Des nouvelles du compilateur ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Nouvelles du compilateur.
» Des nouvelles du nouveau compilateur.
»  Fais_moi un diaporama
» WebBrowser sur une form Panoramic !
» Nouvelles fonctions du 24/4

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC Le compilateur :: Le Compilateur-
Sauter vers: