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
» Form(résolu)
petit souci de list Emptypar leclode Aujourd'hui à 17:59

» trop de fichiers en cours
petit souci de list Emptypar Marc Aujourd'hui à 11:42

» Bataille navale SM
petit souci de list Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
petit souci de list Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
petit souci de list Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
petit souci de list Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
petit souci de list Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
petit souci de list Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
petit souci de list Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
petit souci de list Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
petit souci de list Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
petit souci de list Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
petit souci de list Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
petit souci de list Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
petit souci de list 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
Le Deal du moment : -40%
Tefal Ingenio Emotion – Batterie de cuisine 10 ...
Voir le deal
59.99 €

 

 petit souci de list

Aller en bas 
5 participants
AuteurMessage
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

petit souci de list Empty
MessageSujet: petit souci de list   petit souci de list EmptyLun 24 Sep 2012 - 16:30

Voilà en exécutant çà :
Code:
Dim Vs$ : Vs$="1.0"
' Constantes -------------------------------------------------------------------
Dim D$,DO$,Kgf$
' Variables Globales -----------------------------------------------------------
Dim Cle$,Valeur$,Donnee$,Pay$,User$,def$(100)
Dim x%,M%,M1%
Dim Pict$,Larg%,Haut%
' Labels -----------------------------------------------------------------------
Label Clic,Clic2,D_Clic
' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
Init_Constantes()
Init_User()
Init_Dossiers()
Init_F0(500,350,0,0)
Init_Menu()
Init_Objets()
Init_Caption()
end
' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
' Procédure d' initialisation des constantes
' ------------------------------------------------------------------------------
Sub Init_Constantes()
  D$=Dir_Current$
  Kgf$=D$+"\KGF.dll"
  DO$=D$+"\Output"
End_Sub
' ------------------------------------------------------------------------------
' Procédure d'initialisation de l'utilisateur
' ------------------------------------------------------------------------------
Sub Init_User()
  Dim_Local res%,sep%,T$
  Dll_On Kgf$
  Cle$="Control Panel\International"
  Valeur$="sCountry"
  res%=Dll_Call4("ReadRegistryKey",3,Adr(Cle$),Adr(Valeur$),Adr(Donnee$))
  If res%>0 Then Message "Erreur  -  Clé de Registre Invalide"
  Pay$=trim$(Donnee$)
  Dll_Off
  T$=Dir_Current$
  sep%=instr(T$,"\")
  T$=Right$(T$,Len(T$)-sep%)
  sep%=instr(T$,"\")
  T$=Right$(T$,Len(T$)-sep%)
  sep%=instr(T$,"\")
  User$=Left$(T$,sep%-1)
  Init_Langue(Pay$)
End_Sub
' ------------------------------------------------------------------------------
' Procédure d' initialisation de la langue
' ------------------------------------------------------------------------------
Sub Init_Langue(Pay$)
  Dim_Local x%
  If Pay$<>"France" and Pay$<>"England" and Pay$<>"Deutschland"
      Pay$="France"
  End_If
  Restore
  Read def$(1)
  While def$(1)<>Pay$
      Read def$(1)
  End_While
  For x%=2 To 20 :Read def$(x%) :Next x%
End_Sub
' ------------------------------------------------------------------------------
' Procédure de création des sous dossiers
' ------------------------------------------------------------------------------
Sub Init_Dossiers()
  If Dir_Exists(D$+"\Output")=0 Then Dir_Make D$+"\Output"
End_Sub
' ------------------------------------------------------------------------------
' Procédure d' initialisation du form 0
' ------------------------------------------------------------------------------
Sub Init_F0(W%,H%,T%,L%)
  Width 0,W% :Height 0,H%
  If T%=0 and L%=0
      Top 0,(Screen_y-H%)/2:Left 0,(Screen_x-W%)/2
  Else
      If T%>0 and L%>0
        Top 0,T% :Left 0,L%
      Else
        If L%>0
            Top 0,(Screen_y-H%)/2:Left 0,L%
        Else
            Top 0,T% :Left 0,(Screen_x-W%)/2
        End_If
      End_If
  End_If
  Font_Name 0,"Times new roman" :Font_Size 0,10
  Caption 0,"Picture Tools  Vs: "+Vs$
End_Sub
' ------------------------------------------------------------------------------
' Procédure de création du Main_Menu
' ------------------------------------------------------------------------------
Sub Init_Menu()
  Dim_Local x%
  Main_Menu 1
  For x%=2 To 8:Sub_Menu x% :On_Click x%,Clic :Next x%
  For x%=2 To 5:Parent x%,1 :Next x%
  For x%=6 To 8:Parent x%,2 :Next x%
  For x%=9 To 11:Sub_Menu x% :Parent x%,3:on_click x%,Clic :Next x%
End_Sub
' ------------------------------------------------------------------------------
' Procédure d' initialisation des objets du form 0
' ------------------------------------------------------------------------------
Sub Init_Objets()
  Dim_Local x%
  Container 100:Hide 100:top 100,10:left 100,5:Width 100,474 :height 100,275
  Font_Name 100,"Times new roman" : Font_Size 100,10 :Font_Color 100,120,20,10
  For x%=101 To 103:Alpha x% :Parent x%,100:Next x%
  Top 101,25 : Left 101,13
  Top 102,245: Left 102,33:Font_Color 102,0,0,255
  Top 103,25 : Left 103,200
  List 104 :Parent 104,100:Top 104,43  :Left 104,13 :width 104,180:Height 104,200
  Font_Color 104,160,0,255
  Edit 105 :Parent 105,100:Top 105,43  :Left 105,200:Width 105,260
  Picture 106:Parent 106,100:Top 106,70:Left 106,200:Width 106,260:Height 106,170:color 106,220,220,220
  Stretch_On 106
  Button 107:Parent 107,100:Top 107,25:Left 107,120:Width 107,15  :Height 107,15
  Caption 107,"+":Font_Bold 107 :Cursor_Point 107
  Button 108:Parent 108,100:Top 108,245:Left 108,200:Cursor_Point 108
  Button 109:parent 109,100:Top 109,245:Left 109,280:Cursor_Point 109:Width 109,85
  Button 110:Parent 110,100:Top 110,245:Left 110,370:Cursor_Point 110:Width 110,85
  On_click 104,Clic2
  On_Double_Click 104,D_Clic
  For x%=107 To 110:On_click x%,Clic :Next x%
  dlist 120 : dlist 121
'                          ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
  Container 200:Hide 200:top 200,10:left 200,5:Width 200,474 :height 200,275
 
End_Sub
' ------------------------------------------------------------------------------
' Procédure d'intialisation des caption
' ------------------------------------------------------------------------------
Sub Init_Caption()
  Dim_Local x%
  For x%=2 to 11 :caption x%,def$(x%) :Next x%
  caption 100,chr$(32)+chr$(32)+def$(6)+chr$(32)+chr$(32)
  caption 101,def$(12)
  caption 102,def$(13)
  caption 103,def$(14)
  For x%=108 To 110 : Caption x%, def$(x%-93):Next x%
  For x%=108 To 110 : Hint x%,def$(x%-90):Next x%
End_Sub
' ------------------------------------------------------------------------------
' Routage des procédures par Clic & Double Clic
' ------------------------------------------------------------------------------
Clic:
  For x%=2 to 11
      If Clicked(x%)=1 Then M%=x%
  Next x%
  For x%=107 To 110
      If Clicked(x%)=1 Then M1%=x%
  Next x%
 
  Select M%
  Case 2
  Case 3
  Case 4 : About()
  Case 5 : Help()
  Case 6 : Show 100 :Hide 200
  Case 7 : Show 200 :Hide 100:Coloramic()
  Case 8 : Close0()
  Case 9 : Pay$="France"    :Init_Langue(Pay$):Init_Caption()
  Case 10: Pay$="England"    :Init_Langue(Pay$):Init_Caption()
  Case 11: Pay$="Deutschland":Init_Langue(Pay$):Init_Caption()
  End_Select
  ' Menu des boutons du container 100 -----------------------------------------
  Select M1%
  case 107: Ajout_Img()
  case 108: CopyToPP()
  case 109: DIC()
  case 110: DIC()
  End_Select
Return
' ------------------------------------------------------------------------------
Clic2:
  Dim I%,I$
  I%=Item_index(104)
  I$=item_read$(120,I%)
  Preview(I%,I$)
  Free I% :Free I$
return
' ------------------------------------------------------------------------------
D_Clic:
  Dim I%
  I%=item_index(104)
  Item_delete 104,I%
  Item_delete 120,I%
  Width 106,260:height 106,170:color 106,220,220,220
  Free I%
Return
' ------------------------------------------------------------------------------
' Procédure d'ajout d'image à la liste de DIC
' ------------------------------------------------------------------------------
Sub Ajout_Img()
  Dim_Local Img$
  Open_Dialog 122
  Filter 122,"*.jpg & *.bmp|*.jpg;*.bmp"
  Img$=File_Name$(122)
  Delete 122
  ' message Img$
  Item_add 120,Img$
  Item_add 104,file_extract_name$(Img$)
End_Sub
' ------------------------------------------------------------------------------
' Procédure de copie des data dans le presse papier
' ------------------------------------------------------------------------------
Sub CopyToPP()
  If count(121)>0
  Else
      Message "Il n' y a rien à copier"
  End_If
End_Sub
' ------------------------------------------------------------------------------
' Procédure de prévisualisation
' ------------------------------------------------------------------------------
Sub Preview(I%,I$)
  Dim_Local res%
  Pict$=I$
  Dll_On Kgf$
  res% = dll_call3("AnalyzeImageFile",adr(Pict$),adr(Larg%),adr(Haut%))
  If res%>0 Then Message "Format Invalide"
  Dll_Off
  Miniature(260,170,Larg%,Haut%,106)
End_Sub
'-------------------------------------------------------------------------------
' MINIATURE
' ------------------------------------------------------------------------------
Sub Miniature(L_Max%,H_Max%,L%,H%,No% )
  Dim_Local x%,y%,z
  x%=L% :y%=H% :z=1
  While x%>L_Max% or y%>H_Max%
      z=z-0.01
      x%=x%*z
      y%=y%*z
  End_While
  Width No%,x%
  Height No%,y%
  file_load No%,Pict$
End_Sub
' ------------------------------------------------------------------------------
' Procédure de l' A PROPOS...
' ------------------------------------------------------------------------------
Sub About()
  Message "A Propos en cours de réalisation"
End_Sub
' ------------------------------------------------------------------------------
' Procédure de l'AIDE
' ------------------------------------------------------------------------------
Sub Help()
  Message "Aide en cours de réalisation"
End_Sub
' ------------------------------------------------------------------------------
' Procédure de la fonction DATA IMAGE CREATOR
' ------------------------------------------------------------------------------
Sub DIC()
  Dim f$,L%,H%
  Dim_Local n$,ii%
  if count(104)>0
  ' convertion image ----------------------------------------------------------
  If Number_Click=109 and item_index(104)>0
      clear 121
      n$=item_index$(104)
      ii%=item_index(104)
      File_Open_Write 1001,DO$+"\"+Left$(n$,len(n$)-4)+".bas"
        Text 105,Left$(n$,len(n$)-4)+".bas"
        F1002(ii%)
        Get_Size(item_read$(120,ii%))
        Preview(1,Item_read$(120,ii%))
        Ecriture(L%,H%)
      file_close 1001
      command_target_is 0
  End_If
  ' convertion liste d'image --------------------------------------------------
  If Number_Click=110
      clear 121
      ii%=1
      File_Open_Write 1001,DO$+"\Include_Image.bas"
        Text 105,"Include_Image.bas"
        While Count(104)>0
            F1002(ii%)
            Get_Size(Item_Read$(120,ii%))
            Preview(1,Item_Read$(120,ii%))
            Ecriture(L%,H%)
        End_While
      File_Close 1001
      Command_Target_is 0
  End_If
  Width 106,260:height 106,170:color 106,220,220,220
  Text 105,""
  If Object_Exists(1002)=1 Then Delete 1002
  Free f$:Free H% :Free L%
  Else
      if Number_Click=109 or Number_click=110 Then Message "La liste est vide"
  End_If
End_Sub
' ------------------------------------------------------------------------------
' Procedure de la fenêtre d'affichage invisible
' ------------------------------------------------------------------------------
Sub F1002(ii%)
  Dim_Local ii%
  ii%=ii%
  ' création du form invisible de travail
  If Object_Exists(1002)=0
      Form 1002:Hide 1002:Command_Target_Is 1002
      Picture 1003
  end_if
  ' placement de l'image chargé dans le picture 101
  file_load 1003,item_read$(120,ii%)
End_Sub
' ------------------------------------------------------------------------------
' Procédure de récupération de la taille de l'image à traîter
' ------------------------------------------------------------------------------
Sub Get_Size(a$)
  Dim_Local res%
  f$=a$
  dll_on D$+"\KGF.dll"
  res%=dll_call3("AnalyzeImageFile",adr(f$),adr(L%),adr(H%))
  if res%=1
      message "Extension de fichier invalide !"
  end_if
  dll_off
End_Sub
' ------------------------------------------------------------------------------
' Procédure d'écriture dans le fichier *.bas
' ------------------------------------------------------------------------------
Sub Ecriture(L%,H%)
  Dim_Local nom$,x%,y%,R%,G%,B%
  ' Ecriture des données
  nom$=file_extract_name$(item_read$(120,1))
  nom$=LEFT$(nom$,len(nom$)-3)+"bmp"
  file_writeln 1001,"Data "+chr$(34)+nom$+chr$(34)+","+str$(H%)+","+str$(L%)
  item_add 121,"Data "+chr$(34)+nom$+chr$(34)+","+str$(H%)+","+str$(L%)
      for x%=1 to L%
        for y%= 1 to H%
            R% =color_pixel_red(1003,x%,y%)
            G% =color_pixel_green(1003,x%,y%)
            B% =color_pixel_blue(1003,x%,y%)
            File_Writeln 1001,"data "+str$(R%)+","+str$(G%)+","+str$(B%)
            Item_Add 121,"data "+str$(R%)+","+str$(G%)+","+str$(B%)
            display
        Next y%
      Next x%
  Item_Delete 104,item_index(104)
  Item_Delete 120,item_index(104)
End_Sub
' ------------------------------------------------------------------------------
' Procédure de la fonction Coloramic
' ------------------------------------------------------------------------------
Sub Coloramic()
End_Sub
' ------------------------------------------------------------------------------
' Procédure de Fermeture
' ------------------------------------------------------------------------------
Sub Close0()
  Terminate
End_Sub
' ------------------------------------------------------------------------------
' DATAS LANGUES
' ------------------------------------------------------------------------------
Data "France"
Data "Outils"
Data "Langue"
Data "A Propos..."
Data "Aide"
Data "Data Image Créator"
Data "Coloramic"
Data "Quitter"
Data "Français"
Data "Anglais"
Data "Allemand"
Data "Liste des Images"
Data "Double clic pour effacer"
Data "Nom du nouveau fichier"
Data "Copier"
Data "Convert/Image"
Data "Convert/Liste"
Data "Copie le code dans le presse papier"
Data "Convertion de l'image sélectionnée"
Data "Convertion de la liste d'image"

Data "England"
Data "Tools"
Data "Language"
Data "About"
Data "Help"
Data "Data Image Créator"
Data "Coloramic"
Data "Exit"
Data "French"
Data "English"
Data "German"

Data "Liste des Images"
Data "Double clic pour effacer"
Data "Nom du nouveau fichier"
Data "Copier"
Data "Convert/Image"
Data "Convert/Liste"
Data "Copie le code dans le presse papier"
Data "Convertion de l'image sélectionnée"
Data "Convertion de la liste d'image"

Data "Deutschland"
Data "Tools"
Data "Sprache"
Data "Über"
Data "Die Beihilfen"
Data "Data Image Créator"
Data "Coloramic"
Data "Verlassen"
Data "Französisch"
Data "Englisch"
Data "Deutsch"

Data "Liste des Images"
Data "Double clic pour effacer"
Data "Nom du nouveau fichier"
Data "Copier"
Data "Convert/Image"
Data "Convert/Liste"
Data "Copie le code dans le presse papier"
Data "Convertion de l'image sélectionnée"
Data "Convertion de la liste d'image"
J'obtiens çà :
petit souci de list Captur46

Apparement, je pense que le problème vient de "sub DIC()" mais je ne vois pas où... bounce
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

petit souci de list Empty
MessageSujet: Re: petit souci de list   petit souci de list EmptyLun 24 Sep 2012 - 16:46

Je peux pas tester ton prg...
Mais je ne sais pas ce que fait Panoramic sur la variable ii% dans la procédure F1002...

- supprime la ligne de DIM_LOCAL dans F1002

d’ailleurs ii% ne change jamais dans DIC() ?
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

petit souci de list Empty
MessageSujet: re   petit souci de list EmptyLun 24 Sep 2012 - 17:01

@ Nardo26,

ii% est le numéro d'index dans list 104 et dlist 120 de l'image sélectionnée

si je supprime...plus rien ne fonctionne Laughing Laughing Laughing
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6996
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

petit souci de list Empty
MessageSujet: Re: petit souci de list   petit souci de list EmptyLun 24 Sep 2012 - 17:03

Le problème vient de SUB INIT_USER
L’appel de la DLL provoque une erreur.
J’ai mis la ligne de l’appel en REM ; puis j’ai ajouté une ligne : pay$ = "France"

Mais l’erreur ‘Out of bounds’ vient de ce que DEUX FOIS DE SUITE tu fais
Code:

sep%=instr(T$,"\")
  T$=Right$(T$,Len(T$)-sep%)
  sep%=instr(T$,"\")    : ‘  < ------ à mettre en REM
  T$=Right$(T$,Len(T$)-sep%) : ‘  < ------ à mettre en REM
  sep%=instr(T$,"\")                  : ‘ < ---------à mettre en REM

Supprime les lignes marquées par REM

Et ça MARCHERA !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

petit souci de list Empty
MessageSujet: Re: petit souci de list   petit souci de list EmptyLun 24 Sep 2012 - 17:51

ygeronimi a écrit:
@ Nardo26,

ii% est le numéro d'index dans list 104 et dlist 120 de l'image sélectionnée

si je supprime...plus rien ne fonctionne Laughing Laughing Laughing

Faudra quand même que tu m'expliques ce que tu compte faire avec :

SUB F1002(ii%)
DIM_LOCAL ii%
ii% = ii% : ' <=== même si Panoramic ne hurle pas, ché pas toi, mais moi ça me choque un peu...
...

Wink

D'ailleurs, Pour parler de "convention d’écriture" : j'evite dans la majorité des cas (si ce n'est pas dans tous les cas) d'avoir des variables globales dans des procédures.
1- Ce n'est pas très portable d'une applic à l'autre
2- On ne s'y retrouve pas, surtout quand tu as des variables globales qui ont "sensiblement" le même nom que les variables locales...
3- C'est un gros merdier et on a vite fait de se planter entre i% ,ii%, i2%... (c'est pas très parlant)

Pour des variables qui servent d'indice de boucle ok, mais quand cela une signification importante dans le programme, je préfère avoir un nom de variable qui identifie clairement ce qu'elle représente (c'est plus facile de s'y retrouver)

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

petit souci de list Empty
MessageSujet: re   petit souci de list EmptyLun 24 Sep 2012 - 18:50

La Solution :

ligne 273 et 287
Code:
Ecriture( L%,H%,ii%)
ligne 330
Code:
Sub Ecriture (L%,H%,ii%)
ligne 347
Code:
Item_delete 104,ii%
ligne 348
Code:
Item_delete 120,ii%

@ Nardo26,

ii% = Index Image

heu... tu peux supprimer les lignes 304 et 305 Laughing elles servent à...rien Laughing
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

petit souci de list Empty
MessageSujet: re   petit souci de list EmptyLun 24 Sep 2012 - 19:04

Le source corrigé des bugs Laughing
Code:
Dim Vs$ : Vs$="1.0"
' Constantes -------------------------------------------------------------------
Dim D$,DO$,Kgf$
' Variables Globales -----------------------------------------------------------
Dim Cle$,Valeur$,Donnee$,Pay$,User$,def$(100)
Dim x%,M%,M1%
Dim Pict$,Larg%,Haut%
' Labels -----------------------------------------------------------------------
Label Clic,Clic2,Clic3,D_Clic
' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
Init_Constantes()
Init_User()
Init_Dossiers()
Init_F0(500,350,0,0)
Init_Menu()
Init_Objets()
Init_Caption()
end
' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
' Procédure d' initialisation des constantes
' ------------------------------------------------------------------------------
Sub Init_Constantes()
  D$=Dir_Current$
  Kgf$=D$+"\KGF.dll"
  DO$=D$+"\Output"
End_Sub
' ------------------------------------------------------------------------------
' Procédure d'initialisation de l'utilisateur
' ------------------------------------------------------------------------------
Sub Init_User()
  Dim_Local res%,sep%,T$
  Dll_On Kgf$
  Cle$="Control Panel\International"
  Valeur$="sCountry"
  res%=Dll_Call4("ReadRegistryKey",3,Adr(Cle$),Adr(Valeur$),Adr(Donnee$))
  If res%>0 Then Message "Erreur  -  Clé de Registre Invalide"
  Pay$=trim$(Donnee$)
  Dll_Off
  T$=Dir_Current$
  sep%=instr(T$,"\")
  T$=Right$(T$,Len(T$)-sep%)
  sep%=instr(T$,"\")
  T$=Right$(T$,Len(T$)-sep%)
  sep%=instr(T$,"\")
  User$=Left$(T$,sep%-1)
  Init_Langue(Pay$)
End_Sub
' ------------------------------------------------------------------------------
' Procédure d' initialisation de la langue
' ------------------------------------------------------------------------------
Sub Init_Langue(Pay$)
  Dim_Local x%
  If Pay$<>"France" and Pay$<>"England" and Pay$<>"Deutschland"
      Pay$="France"
  End_If
  Restore
  Read def$(1)
  While def$(1)<>Pay$
      Read def$(1)
  End_While
  For x%=2 To 20 :Read def$(x%) :Next x%
End_Sub
' ------------------------------------------------------------------------------
' Procédure de création des sous dossiers
' ------------------------------------------------------------------------------
Sub Init_Dossiers()
  If Dir_Exists(D$+"\Output")=0 Then Dir_Make D$+"\Output"
End_Sub
' ------------------------------------------------------------------------------
' Procédure d' initialisation du form 0
' ------------------------------------------------------------------------------
Sub Init_F0(W%,H%,T%,L%)
  Width 0,W% :Height 0,H%
  If T%=0 and L%=0
      Top 0,(Screen_y-H%)/2:Left 0,(Screen_x-W%)/2
  Else
      If T%>0 and L%>0
        Top 0,T% :Left 0,L%
      Else
        If L%>0
            Top 0,(Screen_y-H%)/2:Left 0,L%
        Else
            Top 0,T% :Left 0,(Screen_x-W%)/2
        End_If
      End_If
  End_If
  Font_Name 0,"Times new roman" :Font_Size 0,10
  Caption 0,"Picture Tools  Vs: "+Vs$
End_Sub
' ------------------------------------------------------------------------------
' Procédure de création du Main_Menu
' ------------------------------------------------------------------------------
Sub Init_Menu()
  Dim_Local x%
  Main_Menu 1
  For x%=2 To 8:Sub_Menu x% :On_Click x%,Clic :Next x%
  For x%=2 To 5:Parent x%,1 :Next x%
  For x%=6 To 8:Parent x%,2 :Next x%
  For x%=9 To 11:Sub_Menu x% :Parent x%,3:on_click x%,Clic :Next x%
End_Sub
' ------------------------------------------------------------------------------
' Procédure d' initialisation des objets du form 0
' ------------------------------------------------------------------------------
Sub Init_Objets()
  Dim_Local x%
  Container 100:Hide 100:top 100,10:left 100,5:Width 100,474 :height 100,275
  Font_Name 100,"Times new roman" : Font_Size 100,10 :Font_Color 100,120,20,10
  For x%=101 To 103:Alpha x% :Parent x%,100:Next x%
  Top 101,25 : Left 101,13
  Top 102,245: Left 102,33:Font_Color 102,0,0,255
  Top 103,25 : Left 103,200
  List 104 :Parent 104,100:Top 104,43  :Left 104,13 :width 104,180:Height 104,200
  Font_Color 104,160,0,255
  Edit 105 :Parent 105,100:Top 105,43  :Left 105,200:Width 105,260
  Picture 106:Parent 106,100:Top 106,70:Left 106,200:Width 106,260:Height 106,170:color 106,220,220,220
  Stretch_On 106
  Button 107:Parent 107,100:Top 107,25:Left 107,120:Width 107,15  :Height 107,15
  Caption 107,"+":Font_Bold 107 :Cursor_Point 107
  Button 108:Parent 108,100:Top 108,245:Left 108,200:Cursor_Point 108
  Button 109:parent 109,100:Top 109,245:Left 109,280:Cursor_Point 109:Width 109,85
  Button 110:Parent 110,100:Top 110,245:Left 110,370:Cursor_Point 110:Width 110,85
  On_click 104,Clic2
  On_Double_Click 104,D_Clic
  For x%=107 To 110:On_click x%,Clic3 :Next x%
  dlist 120 : dlist 121
'                          ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
  Container 200:Hide 200:top 200,10:left 200,5:Width 200,474 :height 200,275
 
End_Sub
' ------------------------------------------------------------------------------
' Procédure d'intialisation des caption
' ------------------------------------------------------------------------------
Sub Init_Caption()
  Dim_Local x%
  For x%=2 to 11 :caption x%,def$(x%) :Next x%
  caption 100,chr$(32)+chr$(32)+def$(6)+chr$(32)+chr$(32)
  caption 101,def$(12)
  caption 102,def$(13)
  caption 103,def$(14)
  For x%=108 To 110 : Caption x%, def$(x%-93):Next x%
  For x%=108 To 110 : Hint x%,def$(x%-90):Next x%
End_Sub
' ------------------------------------------------------------------------------
' Routage des procédures par Clic & Double Clic
' ------------------------------------------------------------------------------
Clic:
  For x%=2 to 11
      If Clicked(x%)=1 Then M%=x%
  Next x%
 
  Select M%
  Case 2
  Case 3
  Case 4 : About()
  Case 5 : Help()
  Case 6 : Show 100 :Hide 200
  Case 7 : Show 200 :Hide 100:Coloramic()
  Case 8 : Close0()
  Case 9 : Pay$="France"    :Init_Langue(Pay$):Init_Caption()
  Case 10: Pay$="England"    :Init_Langue(Pay$):Init_Caption()
  Case 11: Pay$="Deutschland":Init_Langue(Pay$):Init_Caption()
  End_Select
Return
' ------------------------------------------------------------------------------
Clic2:
  Dim I%,I$
  I%=Item_index(104)
  I$=item_read$(120,I%)
  Preview(I%,I$)
  Free I% :Free I$
return
' ------------------------------------------------------------------------------
Clic3:
  For x%=107 To 110
      If Clicked(x%)=1 Then M1%=x%
  Next x%

  Select M1%
  case 107: Ajout_Img()
  case 108: CopyToPP()
  case 109: DIC()
  case 110: DIC()
  End_Select
return
' ------------------------------------------------------------------------------
D_Clic:
  Dim I%
  I%=item_index(104)
  Item_delete 104,I%
  Item_delete 120,I%
  Width 106,260:height 106,170:color 106,220,220,220
  Free I%
Return
' ------------------------------------------------------------------------------
' Procédure d'ajout d'image à la liste de DIC
' ------------------------------------------------------------------------------
Sub Ajout_Img()
  Dim_Local Img$
  Open_Dialog 122
  Filter 122,"*.jpg & *.bmp|*.jpg;*.bmp"
  Img$=File_Name$(122)
  Delete 122
  If img$<>"_"
      Item_add 120,Img$
      Item_add 104,file_extract_name$(Img$)
  End_if
End_Sub
' ------------------------------------------------------------------------------
' Procédure de copie des data dans le presse papier
' ------------------------------------------------------------------------------
Sub CopyToPP()
  If count(121)>0
  Else
      Message "Il n' y a rien à copier"
  End_If
End_Sub
' ------------------------------------------------------------------------------
' Procédure de prévisualisation
' ------------------------------------------------------------------------------
Sub Preview(I%,I$)
  Dim_Local res%
  Pict$=I$
  Dll_On Kgf$
  res% = dll_call3("AnalyzeImageFile",adr(Pict$),adr(Larg%),adr(Haut%))
  If res%>0 Then Message "Format Invalide"
  Dll_Off
  Miniature(260,170,Larg%,Haut%,106)
End_Sub
'-------------------------------------------------------------------------------
' MINIATURE
' ------------------------------------------------------------------------------
Sub Miniature(L_Max%,H_Max%,L%,H%,No% )
  Dim_Local x%,y%,z
  x%=L% :y%=H% :z=1
  While x%>L_Max% or y%>H_Max%
      z=z-0.01
      x%=x%*z
      y%=y%*z
  End_While
  Width No%,x%
  Height No%,y%
  file_load No%,Pict$
End_Sub
' ------------------------------------------------------------------------------
' Procédure de l' A PROPOS...
' ------------------------------------------------------------------------------
Sub About()
  Message "A Propos en cours de réalisation"
End_Sub
' ------------------------------------------------------------------------------
' Procédure de l'AIDE
' ------------------------------------------------------------------------------
Sub Help()
  Message "Aide en cours de réalisation"
End_Sub
' ------------------------------------------------------------------------------
' Procédure de la fonction DATA IMAGE CREATOR
' ------------------------------------------------------------------------------
Sub DIC()
  Dim f$,L%,H%
  Dim_Local n$,ii%
  if count(104)>0
  ' convertion image ----------------------------------------------------------
  If Number_Click=109 and item_index(104)>0
      clear 121
      n$=item_index$(104)
      ii%=item_index(104)
      File_Open_Write 1001,DO$+"\"+Left$(n$,len(n$)-4)+".bas"
        Text 105,Left$(n$,len(n$)-4)+".bas"
        F1002(ii%)
        Get_Size(item_read$(120,ii%))
        Preview(1,Item_read$(120,ii%))
        Ecriture(L%,H%,ii%)
      file_close 1001
      command_target_is 0
  End_If
  ' convertion liste d'image --------------------------------------------------
  If Number_Click=110
      clear 121
      ii%=1
      File_Open_Write 1001,DO$+"\Include_Image.bas"
        Text 105,"Include_Image.bas"
        While Count(104)>0
            F1002(ii%)
            Get_Size(Item_Read$(120,ii%))
            Preview(1,Item_Read$(120,ii%))
            Ecriture(L%,H%,ii%)
        End_While
      File_Close 1001
      Command_Target_is 0
  End_If
  Width 106,260:height 106,170:color 106,220,220,220
  Text 105,""
  If Object_Exists(1002)=1 Then Delete 1002
  Free f$:Free H% :Free L%
  Else
      if Number_Click=109 or Number_click=110 Then Message "La liste est vide"
  End_If
End_Sub
' ------------------------------------------------------------------------------
' Procedure de la fenêtre d'affichage invisible
' ------------------------------------------------------------------------------
Sub F1002(ii%)
  ' création du form invisible de travail
  If Object_Exists(1002)=0
      Form 1002:Hide 1002:Command_Target_Is 1002
      Picture 1003
  end_if
  ' placement de l'image chargé dans le picture 101
  file_load 1003,item_read$(120,ii%)
End_Sub
' ------------------------------------------------------------------------------
' Procédure de récupération de la taille de l'image à traîter
' ------------------------------------------------------------------------------
Sub Get_Size(a$)
  Dim_Local res%
  f$=a$
  dll_on D$+"\KGF.dll"
  res%=dll_call3("AnalyzeImageFile",adr(f$),adr(L%),adr(H%))
  if res%=1
      message "Extension de fichier invalide !"
  end_if
  dll_off
End_Sub
' ------------------------------------------------------------------------------
' Procédure d'écriture dans le fichier *.bas
' ------------------------------------------------------------------------------
Sub Ecriture(L%,H%,ii%)
  Dim_Local nom$,x%,y%,R%,G%,B%
  ' Ecriture des données
  nom$=file_extract_name$(item_read$(120,1))
  nom$=LEFT$(nom$,len(nom$)-3)+"bmp"
  file_writeln 1001,"Data "+chr$(34)+nom$+chr$(34)+","+str$(H%)+","+str$(L%)
  item_add 121,"Data "+chr$(34)+nom$+chr$(34)+","+str$(H%)+","+str$(L%)
      for x%=1 to L%
        for y%= 1 to H%
            R% =color_pixel_red(1003,x%,y%)
            G% =color_pixel_green(1003,x%,y%)
            B% =color_pixel_blue(1003,x%,y%)
            File_Writeln 1001,"data "+str$(R%)+","+str$(G%)+","+str$(B%)
            Item_Add 121,"data "+str$(R%)+","+str$(G%)+","+str$(B%)
            display
        Next y%
      Next x%
  Item_Delete 104,ii%
  Item_Delete 120,ii%
End_Sub
' ------------------------------------------------------------------------------
' Procédure de la fonction Coloramic
' ------------------------------------------------------------------------------
Sub Coloramic()
End_Sub
' ------------------------------------------------------------------------------
' Procédure de Fermeture
' ------------------------------------------------------------------------------
Sub Close0()
  Terminate
End_Sub
' ------------------------------------------------------------------------------
' DATAS LANGUES
' ------------------------------------------------------------------------------
Data "France"
Data "Outils"
Data "Langue"
Data "A Propos..."
Data "Aide"
Data "Data Image Créator"
Data "Coloramic"
Data "Quitter"
Data "Français"
Data "Anglais"
Data "Allemand"
Data "Liste des Images"
Data "Double clic pour effacer"
Data "Nom du nouveau fichier"
Data "Copier"
Data "Convert/Image"
Data "Convert/Liste"
Data "Copie le code dans le presse papier"
Data "Convertion de l'image sélectionnée"
Data "Convertion de la liste d'image"

Data "England"
Data "Tools"
Data "Language"
Data "About"
Data "Help"
Data "Data Image Créator"
Data "Coloramic"
Data "Exit"
Data "French"
Data "English"
Data "German"
Data "Photo List"
Data "Double-click to delete"
Data "Name the new file"
Data "Copy"
Data "Convert / Image"
Data "Convert / List"
Data "copy code to clipboard"
Data "Converting the selected image"
Data "Conversion of the image list"

Data "Deutschland"
Data "Tools"
Data "Sprache"
Data "Über"
Data "Die Beihilfen"
Data "Data Image Créator"
Data "Coloramic"
Data "Verlassen"
Data "Französisch"
Data "Englisch"
Data "Deutsch"
Data "Photo List"
Data "Doppel-Klick zu löschen"
Data "Benennen Sie die neue Datei"
Data "Copy"
Data "Konvertieren / Image"
Data "Konvertieren / List"
Data "copy-Code in die Zwischenablage kopieren"
Data "Konvertieren Sie das ausgewählte Bild"
Data "Conversion des Bildes Liste"
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

petit souci de list Empty
MessageSujet: Re: petit souci de list   petit souci de list EmptyLun 24 Sep 2012 - 22:57

Ygeromini, ta fonction Init_User n'est pas bonne
tu ne fait pas de test sur le nombre de \ dans ta chaine T$ alors qu'après tu recherche 3 fois le séparateur. Ce n'est pas bon du tout tu peux en avoir plus ou moins et dans ce cas, ça plante
Pour que ta fonction soit bonne il faut d'abord que tu compte le nombre de "\" dans T$ et que tu fasses une boucle pour ne garder à chaque fois que la partie de droite sans le \ à la fin le left$ ne servira à rien car dans ta chaine, il ne restera plus que ça.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

petit souci de list Empty
MessageSujet: Re: petit souci de list   petit souci de list EmptyLun 24 Sep 2012 - 23:12

@ Jicehel;
T$=Dir_Current$ T$=C:\Users\Yannick\Desktop
sep%=instr(T$,"\")
T$=Right$(T$,Len(T$)-sep%) T$=Users\Yannick\Desktop
sep%=instr(T$,"\")
T$=Right$(T$,Len(T$)-sep%) T$=Yannick\Desktop
sep%=instr(T$,"\")
User$=Left$(T$,sep%-1) T$=Yannick

Maintenant tu es peut être sous XP ou autre et le chemin de fichier n'est peut être pas le même...

Edit : Le dernier source publié est corrigé et fonctionne correctement




Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

petit souci de list Empty
MessageSujet: Re: petit souci de list   petit souci de list EmptyMar 25 Sep 2012 - 0:57

Ygeronimi, ce que je voulais dire, c'est que pour avoir l'avant dernier nom, tu peux faire une boucle du genre:
Code:
Label boucle
Dim T$,T2$,i%, sep%
T$= "C:\Users\Yannick\Desktop" : T2$=T$ :i%=1
boucle:
While instr(T2$,"\") > 0
  sep%=instr(T2$,"\") :  T2$=Right$(T2$,Len(T2$)-sep%)
End_While
if i%=1 then T2$=LEFT$(T$,LEN(T$)-(LEN(T2$)+1)) : i%=i%+1 : goto boucle
print T2$
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

petit souci de list Empty
MessageSujet: Re: petit souci de list   petit souci de list EmptyMar 25 Sep 2012 - 2:06

Et une procédure comme celle-ci ne peut pas t'aider ?
Code:
DIM EMail$ :  EMail$ = "nardo.26@truc.fr"

F_RINSTR%(Email$,".")
print RINSTR_return%
END
' ------------------------------------------------------------------------------
' Renvoie la position d'une occurrence de texte dans une autre en partant de la droite
' print INSTR(EMail$ , ".")  renvoie 6
' F_RINSTR(EMail$ , ".") : print  RINSTR_return% affiche 14
' ------------------------------------------------------------------------------
SUB F_RINSTR%(A$,B$)
  IF VARIABLE("Rinstr_return%")=0 THEN DIM Rinstr_return%
  DIM_LOCAL i%:i%=0
  IF INSTR(A$,B$)<>0
    FOR i%=LEN(A$) TO 1 STEP -1
      IF INSTR(RIGHT$(A$,LEN(A$)-i%+1),B$)<> 0 THEN EXIT_FOR
    NEXT i%
  END_IF
  Rinstr_return% = i%
END_SUB

Dans ton cas :
Code:
F_RINSTR%(DIR_CURRENT$,"\") : t$=LEFT$(DIR_CURRENT$,RINSTR_return%-1)
F_RINSTR%(t$,"\") :User$=RIGHT$(t$,LEN(t$)-RINSTR_return%)



Dernière édition par Nardo26 le Mar 25 Sep 2012 - 7:44, édité 2 fois (Raison : Correction de l'exemple, pour avoir l'avant dernier dossier...)
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

petit souci de list Empty
MessageSujet: re   petit souci de list EmptyMar 25 Sep 2012 - 4:15

@ Nardo26 et Jicehel

Je vous avouerai que je ne me suis pas encore penché sur
le moyen de réduire certaines écritures.

Je prends et je mets en mémoire vos solutions pour un avenir proche...
...enfin je l'espère Laughing .

Tout de suite je suis perplexe devant le temps d'exécution qui s'allonge
en combinant les deux outils... scratch
Et je me demande si je ne vais pas finir par les laisser séparés.

Je me pause aussi une question sur KGF.dll et son expension,
à savoir son temps de chargement dans une "appli".
( Commence à être grosse la mémère... Laughing )
Pour l'instant je la laisse en chargement et libération sur chaque fonction
mais...je pense que je vais la charger en début de prog une bonne fois pour toute
et la libérer au "Terminate".
Revenir en haut Aller en bas
Klaus

Klaus


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

petit souci de list Empty
MessageSujet: Re: petit souci de list   petit souci de list EmptyMar 25 Sep 2012 - 8:47

Je te conseille vivement de garder KGF.dll ouvert en permanence. Ouvre-la au début, juste avant le END, et libère-là au terminate. Tu gagneras bien sûr en vitesse d'exécution, mais surtout, pour certaines fonctions, c'est essentiel de ne pas fermer la dll entre deux appels: les fonctions de gestion d'image par exemple mémorisent l'image interne dans la dll et la traitent en mémoire par les appels successifs aux différentes fonctions. Si tu fermes la DLL, cela ne peut plus marcher. D'autres fonctions fonctionnent de même: la gestion de l'objet ValueListEdit ainsi que MaskEdit en font partie, et bien sûr tout ce qui gestion d'imprimante.

Donc, sauf cas particulier et utlilisation ponctuelle d'une fonction spécifique, il est conseillé d'ouvrir au début et fermer à la sortie.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

petit souci de list Empty
MessageSujet: re   petit souci de list EmptyMar 25 Sep 2012 - 13:10

@ Klaus,

Pour l'instant ,mais on ne sait jamais, mes programmes n'utilise pas de
fonction qui nécessite une ouverture permanente.
Mais l'ouverture fermeture à 3 ou 4 reprises prend du temps
surtout dans une boucle.
Revenir en haut Aller en bas
Contenu sponsorisé





petit souci de list Empty
MessageSujet: Re: petit souci de list   petit souci de list Empty

Revenir en haut Aller en bas
 
petit souci de list
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» WebBrowser sur une form Panoramic !
» [Grid_Load] petit souci
» Petit souci, gros énervement...
» petit souci avec une dim_local
» Petit souci avec ISAM

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: