Invité Invité
| Sujet: Problème sur lecture de fichier avec FILE_READ Mer 25 Avr 2012 - 1:47 | |
| Bonsoir, Je suis en train de faire un programme pour mettre les DLL en tableau; pour ensuite pouvoir faire des commandes, et je ne sais pas quel est le problème, je n'arrive pas à récupérer les données (même en entourant la chaine avec des guillemets. Les données sont bien sauvegardées, on le voit à la lecture des fichiers, mais FILE_READ ne récupère que le premier nombre. Bizarre. Voici le programme - Spoiler:
- Code:
-
' programme pour tabler les DLL
width 0,750 :height 0,screen_y label mouse_info , prise_info ,mouse_path, prise_path,prise_path_suite ,liste , sauve dim a% ,b% ,a$ , b$ ,c$ , f$ ,x,y ,a ,list$ dim c%,l%:' colonne et ligne% dim w%(10):' tableau des largeurs de colonnes
a=30 rem montre une boite de dialogue servant à définir les dossiers, appelé comme #INCLUDE rem les numéros sont définis par le programe appelant et transmis par la variable "a" if variable("a")=0 then dim a:a=1 :' seulement pour la mise au point, vu que a est définit ailleurs if variable("OBJ_")=0 then dim OBJ_ if variable("DIR_a%")=0 then dim DIR_a% if variable("DIR_a$")=0 then dim DIR_a$ if variable("DIR_f$")=0 then dim DIR_f$ if variable("DIR_test%")=0 then dim DIR_test% if variable("DIR_dossier$")=0 then dim DIR_dossier$ if variable("OBJ_DIR")=0 then dim OBJ_DIR if variable("DIR_fichier$")=0 then dim DIR_FICHIER$ if variable("ini_DIR%")=0 then dim ini_dir% if variable("OBJ_edit")=0 then dim OBJ_edit if variable("OBJ_sortir")=0 then dim OBJ_sortir if variable("OBJ_accepte")=0 then dim OBJ_accepte rem passage de paramètres depuis le programme appelant OBJ_=a : ' ainsi il n'est pas nécessaire de reprendre le programme, transmis par le programme appelant DIR_Fichier$=dir_current$ OBJ_DIR=OBJ_ form OBJ_DIR :command_target_is OBJ_DIR : hide OBJ_DIR width OBJ_DIR,445:border_hide OBJ_DIR:color OBJ_DIR,180,180,170:top OBJ_DIR,010:left OBJ_DIR,500 :height OBJ_DIR,525 dir_change "C:\"
label DIR_dossier ,DIR_disque , DIR_choix ,DIR_impose ,DIR_retour ,DIR_exit,DIR_ferme,DIR_sorti,ini_DIR,DIR_end
on_close OBJ_DIR,DIR_ferme OBJ_DIR=OBJ_+1 :' 16 alpha OBJ_DIR:top OBJ_DIR, 5:left OBJ_DIR,100:font_bold OBJ_DIR:font_size OBJ_DIR,10:' font_color OBJ_DIR,204,204,153 caption OBJ_DIR,"choisir le dossier d'installation"
OBJ_DIR=OBJ_+2 :' 15 edit OBJ_DIR:top OBJ_DIR,35:left OBJ_DIR,5:width OBJ_DIR,435:font_size OBJ_DIR,12:font_bold OBJ_DIR:color OBJ_DIR,255,255,153 :OBJ_edit=OBJ_DIR hint obj_dir,obj_dir OBJ_DIR=OBJ_+3 :' 19 alpha OBJ_DIR:top OBJ_DIR,65:left OBJ_DIR,80:font_color OBJ_DIR,255,255,255:font_bold OBJ_DIR:font_size OBJ_DIR,10:caption OBJ_DIR,"dossier" OBJ_DIR=OBJ_+4 :' 10 list OBJ_DIR: top OBJ_DIR,85:left OBJ_DIR,5:width OBJ_DIR,230:height OBJ_DIR,390:font_size OBJ_DIR,12:font_bold OBJ_DIR:color OBJ_DIR,255,255,204:on_click OBJ_DIR,DIR_choix OBJ_DIR=OBJ_+5 :' 11 list OBJ_DIR: top OBJ_DIR,85:width OBJ_DIR,200:left OBJ_DIR,240:height OBJ_DIR,305:font_color OBJ_DIR,160,160,160 OBJ_DIR=OBJ_+6 :' 13 alpha OBJ_DIR:top OBJ_DIR,397:left OBJ_DIR,245:font_color OBJ_DIR,255,255,255:font_bold OBJ_DIR:font_size OBJ_DIR,10:caption OBJ_DIR,"Lecteur:" OBJ_DIR=OBJ_+7 :' 14 list OBJ_DIR:top OBJ_DIR,415:left OBJ_DIR,245:height OBJ_DIR,60:width OBJ_DIR,50:font_size OBJ_DIR,12:color OBJ_DIR,255,255,210 :on_click OBJ_DIR,DIR_disque
OBJ_DIR=OBJ_+8 :' 18 edit OBJ_DIR:top OBJ_DIR,490:left OBJ_DIR,170:width OBJ_DIR,270:font_size OBJ_DIR,12:font_bold OBJ_DIR:color OBJ_DIR,255,255,153:on_change OBJ_DIR,DIR_impose
OBJ_DIR=OBJ_+9 :' 20 button OBJ_DIR:top OBJ_DIR,410:left OBJ_DIR,330:caption OBJ_DIR,"sortir" :on_click OBJ_DIR,DIR_retour: OBJ_accepte =OBJ_DIR OBJ_DIR=OBJ_+10 :' 21 button OBJ_DIR:top OBJ_DIR,450:left OBJ_DIR,330:caption OBJ_DIR,"accepter" :on_click OBJ_DIR,DIR_exit : OBJ_sortir =OBJ_DIR
OBJ_DIR=OBJ_+11 :' 17 alpha OBJ_DIR:top OBJ_DIR,500:left OBJ_DIR,5:font_color OBJ_DIR,255,255,255:font_bold OBJ_DIR:font_size OBJ_DIR,10:caption OBJ_DIR,"créé nouveau dossier :"
OBJ_DIR=OBJ_ :command_target_is 0 ' gosub ini_DIR goto DIR_sorti :' pour include DIR_end:
end ' ==============================================
ini_DIR: to_foreground OBJ_ if ini_dir%=0 for DIR_a%=asc("C") to asc("Z") DIR_a$= chr$(DIR_a%)+":" : if dir_exists(DIR_a$)=1 then item_add OBJ_+7,DIR_a$ next DIR_a% ini_dir%=1 end_if return
DIR_dossier: gosub ini_dir clear OBJ_+4:clear OBJ_+5 item_add OBJ_+4,".." DIR_a$ = file_find_first$ while DIR_a$<>"_" DIR_test%=File_Exists(DIR_a$) if DIR_test%=0 item_add OBJ_+4,DIR_a$ else item_add OBJ_+5,DIR_a$ end_if DIR_a$ = file_find_next$ end_while file_find_close return DIR_disque: gosub ini_dir dir_change "C:\" DIR_f$= item_index$(OBJ_+7):DIR_dossier$=DIR_f$ dir_change DIR_f$ : gosub DIR_dossier return
DIR_choix: gosub ini_dir DIR_f$=item_index$(OBJ_+4) dir_change DIR_f$ if item_index(OBJ_+4)>1 DIR_dossier$=DIR_dossier$+"\"+DIR_f$ else for DIR_a%=len(DIR_dossier$) to 1 step -1 if mid$(DIR_dossier$,DIR_a%,1)="\" then exit_for next DIR_a% if DIR_a%>2 then DIR_dossier$=left$(DIR_dossier$,DIR_a%-1) end_if gosub DIR_dossier gosub DIR_impose return
DIR_impose: if text$(OBJ_+8)<>"" then text OBJ_+2,DIR_dossier$+"\"+text$(OBJ_+8) :else:text OBJ_+2,DIR_dossier$ return
DIR_exit: hide OBJ_:active 0:DIR_dossier$="_" :text OBJ_+2,"_" if DIR_f$="" or DIR_f$="_" else DIR_f$=left$(DIR_f$,DIR_a%-1) :dir_change DIR_fichier$:hide OBJ_ end_if return
DIR_retour: clipboard_string_copy text$(OBJ_+2) :dir_change DIR_Fichier$:hide OBJ_ return
DIR_ferme: terminate
DIR_sorti:
dir_change DIR_fichier$:hide OBJ_
w%(1)=1:w%(2)=16:w%(3)=38:w%(4)=143:w%(5)=203:w%(6)=230 ' ------------------------------------------------------------------------------ GRID 15:top 15,50:grid_column 15,2:grid_row 15,20:width 15,210:height 15,340 grid_one_column_width 15,1,20:grid_one_column_width 15,2,180:grid_row_height 15,16 for a%=2 to 20:grid_write 15,a%,1,a%-1:next a% grid_write 15,1,2," chemin des différentes DLL" ' ------------------------------------------------------------------------------ button 16:width 16,15:height 16,15 :left 16,-20 ' ------------------------------------------------------------------------------ GRID 20:left 20,230:top 20,20:grid_column 20,6:grid_row 20,40 :width 20,500:height 20,height(0)-80 grid_one_column_width 20,1,15 :' n° grid_one_column_width 20,2,20 :' flag grid_one_column_width 20,3,105 :' DLL nom grid_one_column_width 20,4,60 :' auteur grid_one_column_width 20,5,25 :' chemin grid_one_column_width 20,6,243 :' commentaire
grid_row_height 20,16 grid_write 20,1,2,"flag":grid_write 20,1,3," DLL":grid_write 20,1,4," Auteur" grid_write 20,1,5,"path":grid_write 20,1,6," COMMENTAIRE" for a%=1 to 40:grid_write 20,a%,1,a%:next a%
button 9:caption 9,"enregistre":on_click 9,sauve
alpha 10:left 10,100 :alpha 8:left 8,400 button 11:width 11,15 : height 11,15 :left 11,-20 ' ------------------------------------------------------------------------------ ALPHA 17:top 17,420:caption 17,"contenu du dossier" LIST 18:top 18,440:width 18,210:height 18,height(0)-500 ' ------------------------------------------------------------------------------ if file_exists("c:\Panoramic-Init\chemin.txt") = 1 file_open_read 1,"c:\Panoramic-Init\chemin.txt" file_read 1,b% :' lit bien le nombre message b% for a% = 2 to b% file_read 1,a$ :' ??? pas de données??? grid_write 15,a%,2,a$ message a$ next a% file_close 1 end_if list 28:left 28,760:height 28,500 :width 28,200 ' -------------------------------------------------- if file_exists("c:\Panoramic-Init\DLL.txt") = 1 file_open_read 1,"c:\Panoramic-Init\DLL.txt" file_read 1,b% :message "b%="+str$(b%) :' ok ici for a% = 2 to b% file_read 1,a$ :message "ligne 200: a$=" + a$ :' ? POURQUOI ON RECOIT RIEN ???? for b%=2 to 6 c%= instr(a$,"/") b$= left$(a$,c% -1) grid_write 20,a%,b%,b$ a$=mid$(a$,c%+1,len(a$)) next b% next a% file_close 1
end_if ' ------------------------------------------------------------------------------ on_click 18,liste on_click 20,mouse_info on_click 11,prise_info on_click 15,mouse_path on_click 16,prise_path
end ' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
sauve:
' ---- dossiers des dll for a%=20 to 1 step -1 caption 8,"a%="+str$(a%)+" >"+ grid_read$(15,a%,2) if grid_read$(15,a%,2)<> "" then exit_for next a% : l%=a% item_add 28,"92 l%=" + str$(l%) file_open_write 2,"c:\Panoramic-Init\chemin.txt" file_writeln 2 ,l%
for a%=2 to l% file_writeln 2, grid_read$(15,a%,2) item_add 28,"98: "+ grid_read$(15,a%,2) next a% item_add 28,"100: fin close" file_close 2 ' ---- renseignements des DLL for a%=40 to 1 step -1 item_add 28,"104: a%=" + str$(a%)+ " >"+ grid_read$(20,a%,3) if grid_read$(20,a%,3) <>"" then exit_for next a% : l%=a% item_add 28,"107: L%=" + str$(l%) file_open_write 2,"c:\Panoramic-Init\DLL.txt" file_writeln 2,l%
' ############################################# for a%=2 to l% item_add 28,"114: a%="+str$(a%) b$="" for b%=2 to 6 b$=b$+grid_read$(20,a%,b%)+"/" next b% file_writeln 2,b$ next a% ' ############################################# item_add 28,"120: fin close" file_close 2 return
mouse_info: x= mouse_x_position(20) y= mouse_y_position(20) l%= (y -8 ) /17 +1 for a%= 6 to 1 step -1 if x < w%(a%) else ' caption 10,"x:" +str$(x) + " colonne:" + str$(a%) +" | y:" +str$(y) + " ligne:"+str$(l%) c%=a% exit_for end_if
next a% left 11,w%(c%)+223:top 11,l% * 17 +5 :' caption 11,l% return ' ------------------------------------------------------------------------------ prise_info: a$ = grid_read$(20,l%,c%) select c% case 2:b$=" flag 0 ou 1 si les données"+chr$(13)+" de la DLL sont valides" case 3:b$=" nom de la dll" case 4:b$=" nom de l'auteur de la DLL" case 5:b$=" indiquez la ligne correspondant au N° sur la ligne" + chr$(13)+ "du tableau des chemins indiqués (commence à 1)" case 6:b$=" commentaire" end_select a$ = message_input$("validez la cellule",b$ ,a$) grid_write 20,l%,c%,a$ return
mouse_path: x= mouse_x_position(15) y= mouse_y_position(15) l%= (y -8 ) /17 +1 for a%= 6 to 1 step -1 if x < w%(a%) else ' caption 10,"x:" +str$(x) + " colonne:" + str$(a%) +" | y:" +str$(y) + " ligne:"+str$(l%) c%=a% exit_for end_if next a% left 16,22 :top 16,l% * 17 +36 :caption 16,l%-1 return
prise_path: a$ = grid_read$(15,l%,c%) show OBJ_DIR gosub ini_DIR gosub DIR_end ' a$= "DIR_fichier$="+dir_fichier$ +chr$(13)+ "DIR_f$="+dir_f$+chr$(13)+"DIR_dossier$="+dir_dossier$+chr$(13)+"DIR_a$="+dir_a$ on_click OBJ_accepte,prise_path_suite on_click OBJ_sortir ,prise_path_suite end prise_path_suite: hide OBJ_ a$= text$(OBJ_edit) if number_click = OBJ_sortir then grid_write 15,l%,2, a$ :caption 10,a$:gosub liste
return ' ------------------------------------------------------------------------------ liste: f$ = grid_read$(15,l%,2) caption 10,f$ if dir_exists(f$) = 1 and f$<> "" dir_change f$ clear 18 list$ = file_find_first$ while list$<>"_" a%=File_Exists(list$) : if a%>0 then item_add 18,list$ list$ = file_find_next$ end_while file_find_close end_if return
Pour le fonctionnement, on clique en premier sur la grille de gauche, un clic sur la cellule, fait apparaître un bouton, et celui-ci lance la demande. Idem ensuite sur le GRID de droite. Ce n'est pas fini, et la lecture du deuxième grid, n'est pas encore contrôlé, vu que je ne reçois rien. Il y a la récupération d'un programme mis en include que j'avais déjà fait, pour lequel j'ai fait une adaptation rapide. Bon et oui, moi aussi: |
|