Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| petit souci de list | |
| | Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: petit souci de list Lun 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 çà : Apparement, je pense que le problème vient de "sub DIC()" mais je ne vois pas où... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: petit souci de list Lun 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() ?
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 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 | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: petit souci de list Lun 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 ! | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: petit souci de list Lun 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 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... ...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) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 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% = N° Index Image heu... tu peux supprimer les lignes 304 et 305 elles servent à...rien | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 24 Sep 2012 - 19:04 | |
| Le source corrigé des bugs - 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" | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: petit souci de list Lun 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.
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re: petit souci de list Lun 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 | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: petit souci de list Mar 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$ | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: petit souci de list Mar 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...) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 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 . Tout de suite je suis perplexe devant le temps d'exécution qui s'allonge en combinant les deux outils... 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... ) 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". | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: petit souci de list Mar 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. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 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. | |
| | | Contenu sponsorisé
| Sujet: Re: petit souci de list | |
| |
| | | | petit souci de list | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |