Mai 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 | 31 | | | Calendrier |
|
| | question concernant DIR_DIALOG | |
| | Auteur | Message |
---|
Invité Invité
| Sujet: question concernant DIR_DIALOG Ven 7 Jan 2011 - 11:24 | |
| Cette instruction je ne l'avais pas encore essayé, et je pensais avoir compris son utilité. Pour moi, c'état de pouvoir ouvrir une boite de dialog, et de choisir un dossier. Jusqu'à présent, j'étais obligé de choisir dans la boite de dialog, un fichier quelconque pour en extraire le dossier en retirant le fichier choisi. Et là surprise, rien ne va. Si je veux ouvrir la boite de dialog, je dois me servir de FILE_NAME$, qui comme son nom l'indique, cherche un fichier. DIR_DIALOG requière 2 paramètres, donc ce n'est pas un objet, et ne se substitue pas à open_dialog entre autre. File_name ne prend compte du nom que si c'est un fichier. Alors à quoi sert cette fonction? - Code:
-
open_dialog 4 filter 4,"choisir un dossier|*." dir_dialog 4,file_name$(4) message f$ edit, je vois que j'ai mis message f$, mais il n'est plus utilisé, vu que j'ai mis file_name$ à la place |
| | | Jack Admin
Nombre de messages : 2386 Date d'inscription : 28/05/2007
| Sujet: Re: question concernant DIR_DIALOG Ven 7 Jan 2011 - 12:02 | |
| Pour utiliser un OPEN_DIALOG ou un SAVE_DIALOG, il faut bien sûr créer l'objet: OPEN_DIALOG N ou SAVE_DIALOG N puis utiliser la fonction FILE_NAME$(N) Cette fonction fait apparaître l'objet et retourne le nom du fichier qui a été choisi par l'utilisateur. Si l'utilisateur n'a pas choisi de fichier, la fonction retourne "_" Dernièrement, sur le forum, on a demandé de pouvoir désigner un répertoire dans lequel s'ouvrira un OPEN_DIALOG ou un SAVE_DIALOG lors de l'exécution de la fonction FILE_NAME$(N), c'est la commande DIR_DIALOG N,R qui affecte le répertoire R comme répertoire d'ouverture de l'OPEN_DIALOG ou du SAVE_DIALOG numéro N. DIR_DIALOG n'est donc pas un objet, mais s'utilise comme FILTER, pour modifier le comportement d'un OPEN_DIALOG ou d'un SAVE_DIALOG. La séquence d'utilisation d'un OPEN_DIALOG est donc: 1- création: OPEN_DIALOG N 2 - paramétrage facultatif : FILTER et DIR_DIALOG 3 - choix d'un fichier : FILE_NAME$(N) Pour reprendre ton exemple: dir_dialog 4,file_name$(4) n'est pas approprié. Si tu veux que ton OPEN_DIALOG s'ouvre en te montrant les fichiers de ton répertoire c:/rep, il faut faire: - Code:
-
dim fichier$ open_dialog 4 dir_dialog 4,"c:/rep" fichier$=file_name$(4) | |
| | | Invité Invité
| Sujet: Re: question concernant DIR_DIALOG Ven 7 Jan 2011 - 13:57 | |
| Merci bien pour les explications. Je ne l'avais pas vu dans ce sens là, et c'est même l'inverse. Dans un installateur, je voulais définir un dossier d'installation, et pouvoir choisir à partir d'un open_dialog (ce que je pensais être un dir_dialog), le dossier où on va installer. Je vois du coup que ce n'est pas possible, à moins de choisir un fichier quelconque pour extraire le dossier, ce qui ne fait pas très propre.
Ce que je voulais c'est l'inverse.
Ne pourrais t-il pas y avoir une commande DIR_NAME$, en remplacement de FILE_NAME$, pour choisir un dossier?
Cordialement |
| | | 659_minifly
Nombre de messages : 590 Age : 75 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: question concernant DIR_DIALOG Ven 7 Jan 2011 - 15:43 | |
| J'ai le meme probleme . Tu trouvera ici un sousp qui lit et inscrit uniquement les répertoires dans un list. - Code:
-
Label Sub_New_project,Sub_Configuration,Sub_open_dialog,Sub_Terminate Label Sub_Choix_List, Rep_List,Sub_ferme_Configuration,Sub_Ferme_Dirlist
Dim Project_Name$,Nom_Programme_Principale$ Dim Flag_Project_Name%,Dum% Dim X_screen%, Y_screen%,Largeur%,Hauteur%,Marge_Gauche%,Marge_Haute% Dim Form_Generale%,Menu_01%,Menu_02%,Menu_03%,Menu_04%,Menu_05%,Menu_06%,Menu_07% Dim Menu_08%,Menu_09%,Menu_10% Dim Configuration% Dim Cont_Projects%,Cont_Models%,Cont_Textures%,Cont_Figures%,Cont_Scenes% Dim Cont_Sequences% Dim Choix_repertoir% Dim Edit_Projects%,Edit_Models%,Edit_Textures%,Edit_Figures%,Edit_Scenes%,Edit_Sequences%
Dim Butt_Projects%,Butt_Models%,Butt_Textures%,Butt_Figures%,Butt_Scenes%,Butt_Sequences% Dim Nom_rep$,Butt_Ferme%,Butt_Dirlist%
Dim DirList%,List_Dirlist%,Edit_Dirlist%,Chaine$,A$,Test%,Long_Chaine% Dim Sous_Chaine$,I%,Repertoire_Courant$,Numero_bouton%
Hide 0
Largeur%=Screen_X Hauteur%=Screen_y
X_screen% = 640 Y_screen% = 480
Marge_Gauche% = ( Largeur%-X_screen% )/2 Marge_Haute% = ( Hauteur%-Y_screen% )/2
Form_Generale% = 2000 Configuration% = 2001 DirList% = 2002
Menu_01% = 2101 Menu_02% = 2102 Menu_03% = 2103 Menu_04% = 2104 Menu_05% = 2105 Menu_06% = 2106 Menu_07% = 2107 Menu_08% = 2108 Menu_09% = 2109 Menu_10% = 2110
Cont_Projects% = 2201 Cont_Models% = 2202 Cont_Textures% = 2203 Cont_Figures% = 2204 Cont_Scenes% = 2205 Cont_Sequences% = 2206
Edit_Projects% = 2207 Butt_Projects% = 2208
Edit_Models% = 2209 Butt_Models% = 2210
Edit_Textures% = 2211 Butt_Textures% = 2212
Edit_Figures% = 2213 Butt_Figures% = 2214
Edit_Scenes% = 2215 Butt_Scenes% = 2216
Edit_Sequences% = 2217 Butt_Sequences% = 2218
Choix_repertoir% = 2219 List_Dirlist% = 2220 Edit_Dirlist% = 2221
Butt_Ferme% = 2222 Butt_Dirlist% = 2223
dir_change "C:" Repertoire_Courant$=Dir_Current$
Form Form_Generale% Width Form_Generale%,X_screen% Height Form_Generale%,Y_screen% Left Form_Generale%,Marge_Gauche% Top Form_Generale%,Marge_Haute%
Command_Target_is Form_Generale%
Main_Menu Menu_01%
Sub_Menu Menu_02% Parent Menu_02%,Menu_01% Caption Menu_02%,"Project"
Sub_Menu Menu_03% Parent Menu_03%,Menu_02% Caption Menu_03%,"Configuration..."
Sub_Menu Menu_04% Parent Menu_04%,Menu_02% Caption Menu_04%,"New Project..."
' Sub_Menu Menu_05% ' Parent Menu_05%,Menu_02% ' Caption Menu_05%,"Close Project..." ' ' Sub_Menu Menu_06% ' Parent Menu_06%,Menu_02% ' Caption Menu_06%,"New Category..." ' ' Sub_Menu Menu_07% ' Parent Menu_07%,Menu_02% ' Caption Menu_07%,"Add to project..." ' ' Sub_Menu Menu_08% ' Parent Menu_08%,Menu_02% ' Caption Menu_08%,"Copy to project..." ' ' Sub_Menu Menu_09% ' Parent Menu_09%,Menu_02% ' Caption Menu_09%,"Delete from project..."
Sub_Menu Menu_10% Parent Menu_10%,Menu_02% Caption Menu_10%,"Exit"
' ****************************************************************************** ' DirList ' ****************************************************************************** Form DirList% left DirList%,650 top DirList%,240 width DirList%,540 height DirList%,360 caption DirList%,"Configuration"
Command_Target_is DirList%
list List_Dirlist% left List_Dirlist%,10 top List_Dirlist%,50 width List_Dirlist%,500 height List_Dirlist%,230
edit Edit_Dirlist% left Edit_Dirlist%,10 top Edit_Dirlist%,20 width Edit_Dirlist%,500
button Butt_Dirlist% Left Butt_Dirlist%,210 top Butt_Dirlist%,285 Caption Butt_Dirlist%,"Ok" On_Click Butt_Dirlist%,Sub_Ferme_Dirlist
hide DirList%
' ****************************************************************************** ' Configuration ' ******************************************************************************
form Configuration% top Configuration%,100 left Configuration%,320 height Configuration%,600 width Configuration%,555 hide Configuration% Command_Target_is Configuration%
container Cont_Projects% left Cont_Projects%,10 top Cont_Projects%,25 width Cont_Projects%,516 height Cont_Projects%,60 caption Cont_Projects%,"Projects "
container Cont_Models% left Cont_Models%,10 top Cont_Models%,105 width Cont_Models%,516 height Cont_Models%,60 caption Cont_Models%,"Anim8or Models "
container Cont_Textures% left Cont_Textures%,10 top Cont_Textures%,185 width Cont_Textures%,516 height Cont_Textures%,60 caption Cont_Textures%,"Anim8or Textures "
container Cont_Figures% left Cont_Figures%,10 top Cont_Figures%,265 width Cont_Figures%,516 height Cont_Figures%,60 caption Cont_Figures%,"Anim8or Figures"
container Cont_Scenes% left Cont_Scenes%,10 top Cont_Scenes%,345 width Cont_Scenes%,516 height Cont_Scenes%,60 caption Cont_Scenes%,"Anim8or Scenes"
container Cont_Sequences% left Cont_Sequences%,10 top Cont_Sequences%,425 width Cont_Sequences%,516 height Cont_Sequences%,60 caption Cont_Sequences%,"Anim8or Sequences"
edit Edit_Projects% left Edit_Projects%,20 top Edit_Projects%,50 width Edit_Projects%,409 height Edit_Projects%,23 Text Edit_Projects%,Repertoire_Courant$
button Butt_Projects% left Butt_Projects%,450 top Butt_Projects%,50 width Butt_Projects%,34 height Butt_Projects%,23 caption Butt_Projects%,"..."
edit Edit_Models% left Edit_Models%,20 top Edit_Models%,130 width Edit_Models%,409 height Edit_Models%,23
button Butt_Models% left Butt_Models%,450 top Butt_Models%,130 width Butt_Models%,34 height Butt_Models%,23 caption Butt_Models%,"..."
edit Edit_Textures% left Edit_Textures%,20 top Edit_Textures%,210 width Edit_Textures%,409 height Edit_Textures%,23
button Butt_Textures% left Butt_Textures%,450 top Butt_Textures%,210 width Butt_Textures%,34 height Butt_Textures%,23 caption Butt_Textures%,"..."
edit Edit_Figures% left Edit_Figures%,20 top Edit_Figures%,290 width Edit_Figures%,409 height Edit_Figures%,23
button Butt_Figures% left Butt_Figures%,450 top Butt_Figures%,290 width Butt_Figures%,34 height Butt_Figures%,23 caption Butt_Figures%,"..."
edit Edit_Scenes% left Edit_Scenes%,20 top Edit_Scenes%,370 width Edit_Scenes%,409 height Edit_Scenes%,23
button Butt_Scenes% left Butt_Scenes%,450 top Butt_Scenes%,370 width Butt_Scenes%,34 height Butt_Scenes%,23 caption Butt_Scenes%,"..."
edit Edit_Sequences% left Edit_Sequences%,20 top Edit_Sequences%,450 width Edit_Sequences%,409 height Edit_Sequences%,23
button Butt_Sequences% left Butt_Sequences%,450 top Butt_Sequences%,450 width Butt_Sequences%,34 height Butt_Sequences%,23 caption Butt_Sequences%,"..."
button Butt_Ferme% Left Butt_Ferme%,220 top Butt_Ferme%,510 Caption Butt_Ferme%,"OK" on_click Butt_Ferme%,Sub_ferme_Configuration
Hide Configuration%
On_Click Menu_03%,Sub_Configuration On_Click Menu_04%,Sub_New_project On_Click Menu_10%,Sub_Terminate
end ' ****************************************************************************** ' Sous programmes ' ******************************************************************************
Sub_New_project:
' Afficher la boite Message_input dum%=Message_Input("Project Name","Enter project's name :",message_text$)
Project_Name$= message_text$ print Project_Name$ ' if Dir_exists(Project_Name$) = 1 dum%=Message_confirmation_Yes_no(" Already exist do you want connect to it") else
dir_change Text$(Edit_Projects%)
' dir_make Text$(Edit_Projects%)+"" + Project_Name$
dir_make Text$(Edit_Textures%)+"" + Project_Name$ + "_Textures"
dir_make Text$( Edit_Models% )+"" + Project_Name$ + "_Models"
dir_make Text$( Edit_Figures% )+"" + Project_Name$ + "_Figures"
dir_make Text$( Edit_Scenes% )+"" + Project_Name$ + "_Scenes"
dir_make Text$( Edit_Sequences% )+"" + Project_Name$ + "_Sequences"
' dir_make Project_Name$+"_Figures" ' dir_make Project_Name$+"_Scenes" ' dir_make Project_Name$+"_Sequences" end_if
' Initialiser le flag comme quoi le nom du fichier a été donné Flag_Project_Name% = 1
return
Sub_Configuration:
show Configuration%
on_click Butt_Projects%,Sub_Open_dialog on_click Butt_Models%,Sub_Open_dialog on_click Butt_Textures%,Sub_Open_dialog On_Click Butt_Figures%,Sub_Open_dialog On_Click Butt_Scenes%,Sub_Open_dialog On_Click Butt_Sequences%,Sub_Open_dialog
return
' Ouverture du dialogue repertoire Sub_open_dialog:
Numero_bouton%=Number_click
show dirList%
Text Edit_dirList%, Dir_Current$
Item_add List_DirList%,".." gosub Rep_List
on_click List_DirList%,Sub_Choix_List
end
return
' Choisir un repertoire dans la liste Sub_Choix_List:
test%= item_Index( List_DirList%)
chaine$=item_read$ ( List_DirList%,test%)
if Chaine$=".."
chaine$=Dir_Current$
Long_Chaine%=Len(Dir_Current$)
for i%=1 to Long_Chaine% step 1
chaine$=left$(chaine$,long_chaine%-i%) Sous_Chaine$=Right$(Chaine$,1) if Sous_Chaine$="" then exit_for
next i% end_if
dir_change chaine$ Text Edit_dirList%, Dir_Current$
Repertoire_Courant$=Dir_Current$
if Numero_bouton%=Butt_Projects% then Text Edit_Projects%,Repertoire_Courant$ if Numero_bouton%=Butt_Models% then Text Edit_Models%,Repertoire_Courant$ if Numero_bouton%=Butt_Textures% then Text Edit_Textures%,Repertoire_Courant$ if Numero_bouton%=Butt_Figures% then Text Edit_Figures%,Repertoire_Courant$ if Numero_bouton%=Butt_Scenes% then Text Edit_Scenes%,Repertoire_Courant$ if Numero_bouton%=Butt_Sequences% then Text Edit_Sequences%,Repertoire_Courant$
gosub Rep_list
return
' Ecrire les repertoires dans list Rep_List:
clear List_DirList%
item_add List_DirList%,".."
a$ = file_find_first$
while a$<>"_"
Test%=File_Exists(a$) if Test%=0 then item_add List_DirList%,a$ a$ = file_find_next$ end_while
file_find_close
return
Sub_ferme_Configuration:
hide configuration%
return
Sub_Ferme_Dirlist:
Hide Dirlist%
Return
Sub_Terminate: Terminate return
lance le programme et puis configuration dans le list tu n'aura que des répertoires. Salut La premiere ligne dans est un ".." en cliquant dessus tu remonte d'un répertoire. | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: question concernant DIR_DIALOG Ven 7 Jan 2011 - 16:13 | |
| @Jack Justement, ce qui aurait été bien, ça aurait été de pouvoir 'filtrer' les répertoires dans la commande FILTER, au même titre que les fichiers, pour n'afficher que les répertoires et rendre un nom de répertoire au lieu d'un fichier. Ça ne devrait pas être trop difficile à réaliser, et il suffit de convenir d'un filtre particulier (par exemple *dir). A priori on ne sait pas faire avec ce qu'on a ? | |
| | | 659_minifly
Nombre de messages : 590 Age : 75 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: question concernant DIR_DIALOG Ven 7 Jan 2011 - 16:18 | |
| Malheureusement avec mon programme on n'a pas les icones | |
| | | Klaus
Nombre de messages : 12295 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: question concernant DIR_DIALOG Ven 7 Jan 2011 - 18:56 | |
| Dans ma dll KGF.dll, il y a une fonction qui permet de sélectionner un répertoire SANS création no de fichier ni de répertoire, tout en spécifiant un répertoire de départ: - Code:
-
res% = DLL_call4("FolderSelect",adr(racine$),adr(dossier$),len(dossier$),mode%) ' racine$ est lé répertoire de départ de la recherche ' dossier$ reçoit le nom de dossier sélectionné ou créé au retour ' mode% : 0 si sélection uniquement sans création ' 1 si sélection avec création possible ' res%: 0 si abandon ' 1 si choix valide
Il y a d'autres fonctions de gestion de fichiers. | |
| | | Invité Invité
| Sujet: Re: question concernant DIR_DIALOG Ven 7 Jan 2011 - 19:27 | |
| C'est pas mal. Mais j'en ai plus besoin (pour ce programme)
Je me suis rendu compte dans la journée, qu'avec 7zip, on pouvait s'en servir comme installateur, et ça marche bien. Donc la prochaine fois que je mettrais une application, je me servirai du truc.
Dans le cas où un dossier imposé d'installation pour un programme, ne convient pas, c'est winzip qui s'en charge.
Maintenant que j'y pense, je ne sais pas si cela aurait marché (peut-être oui, si la dll est dans le dossier de winzip), pour faire une installation auto. |
| | | Invité Invité
| Sujet: Re: question concernant DIR_DIALOG Mer 16 Fév 2011 - 23:32 | |
| Bonsoir Klaus, Je viens de faire l'essai de ta dll. Je pensais récupérer le nom du dossier, et la racine, mais ce n'est pas ce que fait le programme. Y-a-t'il une possibilité de le faire. Je pensais l'utiliser pour faire un fichier ini. - Code:
-
dim dossier$,racine$,mode%,res% mode%=0
dll_on "C:\TESTE\KGF.dll" res% = DLL_call4("FolderSelect",adr(racine$),adr(dossier$),len(dossier$),mode%)
message "dossier$:"+dossier$+chr$(13)+" racine$:"+racine$ ' dossier$ et racine$ sont vide au retour. une fois qu'on a choisi le dossier ' dans la boite de dialogue
comment récupérer les variables dossier$ et racine$. (je ne sais pas si racine$ est important, vu que je ne sais pas ce que l'on récupère). Merci |
| | | Invité Invité
| Sujet: Re: question concernant DIR_DIALOG Mer 16 Fév 2011 - 23:46 | |
| Je suis désolé pour l'instant. Je ne sais pas si ça marche, mais je me rend compte que le programme lancé, était un programme d'essai que j'avais commencé à faire pour faire un installateur de programme, mais les lignes étaient beaucoup plus haut, et je ne l'avais pas vu. Une bourde monumentale de ma part. J'espère tout fois pouvoir récupérer le nom du dossier. Avec mes excuses... Apparemment je ne récupère rien finalement |
| | | Nardo26
Nombre de messages : 2294 Age : 55 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: question concernant DIR_DIALOG Jeu 17 Fév 2011 - 7:26 | |
| Bonjour cosmos, J'ai relu tous les posts et je ne comprend pas très bien ce que tu souhaites, pourrais-tu préciser ? - Les commandes Open_dialog , Save_dialog, Filter, dir_dialog sont bien expliquées par Jack, - 7Zip fait apparemment ce que tu souhaites - La Dll de Klaus te permet de sélectionner un répertoire Au final, je n'y comprend plus rien sinon tu as: ZipInstallerune preference pour celui-ci : NSISet un petit utilitaire pour NSIS : Mihov NSIS HelperA+ Nardo | |
| | | Invité Invité
| Sujet: Re: question concernant DIR_DIALOG Jeu 17 Fév 2011 - 9:01 | |
| Je répond très rapidement, je pars au bois. Je reprendrais si nécessaire pour plus de précision dans la journée. J'avais fait l'essai de la dll de Klaus, et j'obtiens rien en retour?; et j'ai posé la question. J'avais effectivement trouvé une solution, mais cela en regardant mon programme, ça ne suffit pas, et je voulais lancer un autre programme pour compléter l'installation. Peut-être cela est possible avec 7ZIP, mais ne parlant pas l'anglais, et employant des expressions que je ne comprends pas, dans les compléments il y a peut-être la solution. Mais finalement je vais compléter par un programme Panoramic, et ceci grâce à minifly qui a eu une bonne idée. Le programme que j'ai fait depuis montre qu'on peut faire une boite de dialogue à part: Ceci n'est pas l'installateur, vous l'aurez lorsque je mettrais le programme qui l'accompagne dans le mois, il n'est pas fini, et il y a les testes. - Code:
-
width 0,500 dir_change "C:\" dim a$,test%,f$ ,a%
label choix,dossier ,er ,disque
list 1: width 1,200:height 1,300:on_click 1,choix list 2: width 2,200:left 2,210:height 2,300
alpha 3:top 3,310:caption 3,"disque:" list 4:top 4,330:width 4,100 :on_click 4,disque
' open_dialog 5:f$=file_name$(5)
on_error_goto er for a%=asc("C") to asc("Z") a$= chr$(a%)+":" if dir_exists(a$)=1 then item_add 4,a$ next a% gosub dossier
end ' ============================================== er: return
dossier: item_add 1,".." a$ = file_find_first$ while a$<>"_" Test%=File_Exists(a$) if Test%=0 item_add 1,a$ else item_add 2,a$ end_if a$ = file_find_next$ end_while
file_find_close return disque: f$= item_index$(4)+"\" dir_change f$:clear 1 gosub dossier return
choix: F$=item_index$(1) dir_change f$ : clear 1 clear 2 a$ = file_find_first$ while a$<>"_" Test%=File_Exists(a$) if Test%=1 then item_add 2,a$ a$ = file_find_next$ end_while file_find_close gosub dossier
return
Il n'est encore optimisé, car à l'instant j'ai encore apporté des modifications. J'ai parfois cette erreur: cela viens je crois de - Code:
-
if dir_exists(a$)=1 then item_add 4,a$ et en cliquant sur continuer, le programme continu. @+, il me faut partir |
| | | Klaus
Nombre de messages : 12295 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: question concernant DIR_DIALOG Jeu 17 Fév 2011 - 10:44 | |
| J'ai regardé ton programme, et il semble marcher parfaitement. Même avec des lecteurs réseau. Je n'ai pas l'erreur que tu mentionnes, quelque soit le disque ou le répertoire choisi, quelque soit le nombre de lancements. As-tu un fichier ou un répertoire endommagé ? Passe un FDISK ou un autre outil de vérification de la structure du disque.
Quant à ma DLL, j'ai tout retesté et je n'ai pas trouvé d'anomalie. Peux-tu me dire ce que tu essaies d'utiliser exactement et ce que tu espères obtenir ? | |
| | | Invité Invité
| Sujet: Re: question concernant DIR_DIALOG Jeu 17 Fév 2011 - 13:00 | |
| Bonjour Klaus, Pour le programme que j'ai mis en teste de ma part, il y a un programme endommagé sur une clé usb. Ok, si je lis avec open_dialog la clé usb, il n'y a pas de problème, mais dir_exists ne l’apprécie pas. Je ferais avec. Quand à ta dll, as-tu essayé le programme que j'ai mis hier à 23.46h? dans message, je n'ai que des chaines vides au retour. Dossier$ est vide ainsi que racine$. Est-ce une mauvaise utilisation? Comment vois-tu la chose? Hier j'aurai pu éviter de poster la question, mais je me suis trouvé avec un programme d'installation que j'avais commencé en début janvier, et pratiquement lancé qu'une fois, vu que j'avais trouvé une autre solution. Je ne me suis pas rappelé que c'était mon programme. J'ai pensé que cela venait de la dll. Idiot que je suis! |
| | | Klaus
Nombre de messages : 12295 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: question concernant DIR_DIALOG Jeu 17 Fév 2011 - 18:07 | |
| OK, j'ai vu. Essaie comme ceci: - Code:
-
dim dossier$,racine$,mode%,res% mode%=0
dll_on "KGF.dll"
racine$ = "C:\" : ' klaus dossier$ = string$(255," ") : ' klaus res% = DLL_call4("FolderSelect",adr(racine$),adr(dossier$),len(dossier$),mode%)
message "dossier$:"+dossier$+chr$(13)+" racine$:"+racine$ ' dossier$ et racine$ sont vide au retour. une fois qu'on a choisi le dossier ' dans la boite de dialogue
J'ai simplement rajouté deux lignes. La première charge quelque chose dans la variable racine$. Tu peux y mettre n'importe quel disque/chemin: c'est de là que partira la recherche. La deuxième construit un string de 255 caractères (des espaces). Pourquoi ? Parce que ma DLL n'est pas autorisée à créer un string dans Panoramic, et j'espère que ce sera possible avec les futurs plugins. Donc, la seule solution pour retourner un string, est de réserver la place d'abord en Panoramic, de passer l'adresse en paramètre à la DLL, et dans la DLL, écrire le texte en écrasant l'existant, à partir de l'adresse fournie, en prenant soin de se limiter à la longueur réelle du string. Donc, dans ton programme, tu passes bien la variable dossier$, mais elle est créée vide, donc avec une longueur zéro, et on ne peut rien retourner du tout ! | |
| | | Invité Invité
| Sujet: Re: question concernant DIR_DIALOG Jeu 17 Fév 2011 - 18:37 | |
| Et bien voilà, c'est gagné. Merci |
| | | Invité Invité
| Sujet: Re: question concernant DIR_DIALOG Jeu 17 Fév 2011 - 19:44 | |
| Je fais le teste avec ta dll, ne sachant pas au final quel procédé je vais choisir. J'ai remarqué une chose: lorsqu'on a le retour du dossier de la dll, le programme est réduit. - Code:
-
' teste choix dossier label chemin ,accepte
dim racine$,dossier$,res%,mode% width 0,800:height 0,400:left 0,screen_x/2-400:top 0,screen_y/2-200:caption 0,"installation" color 0,0,0,255:font_color 0,255,255,0:font_size 0,12
alpha 1:top 1,50:left 1,100: font_size 1,30 :font_italic 1:font_bold 1:font_name 1,"Cooper Black" caption 1,"Installation du programme"+chr$(13)+" Archivage de documents" alpha 2:top 2,150:left 2,100:font_color 2,255,255,255:font_size 2,14:caption 2,"le programme s'installe:" edit 3:top 3,180:left 3,100:width 3,500:font_color 3,0,0,0 text 3,"C:\Archivage" button 5:top 5,180:left 5,650:width 5,30:font_bold 5:font_size 5,18:caption 5,"..._" on_click 5,chemin button 6:top 6,250:left 6,650:caption 6,"accepte":on_click 6,accepte end chemin: dll_on "KGF.dll" racine$ = "C:\" : mode%=0 : ' klaus dossier$ = string$(255," ") : ' klaus res% = DLL_call4("FolderSelect",adr(racine$),adr(dossier$),len(dossier$),mode%) text 3,dossier$ dll_off return
accepte: return
Ensuite il serait bien de pouvoir si cela est possible, et je crois que le teste du programme le montre, ce serait de pouvoir placer la boite dialogue où on le souhaite. Quant penses-tu? De toute façon j'ai une solution de rechange. Merci de ton attention. Je suis en train de penser: serez t-il possible de récupérer les noms courts directement pour mettre l'adresse d'une instruction execute ? |
| | | Nardo26
Nombre de messages : 2294 Age : 55 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: question concernant DIR_DIALOG Jeu 17 Fév 2011 - 22:01 | |
| A mon avis, il vaut mieux conserver les chemins longs au niveau des dll, quitte à passer par un intermédiaire (ou un flag supplementaire lors de l'appel à la dll) pour obtenir les chemins courts. Je ne sais plus si c'est Klaus ou JL35 mais quelqu'un avait donné une astuce pour convertir en chemin court... Ca me fait penser qu'il faudrait peut être rajouter un test dans Delphi concernant les chaines de caractères pour s'assurer que la chaine n'est pas vide, au quel cas la fonction renvoie zéro en valeur de retour.... (faut bien qu'elle serve à quelque chose, cette valeur de retour ! ) | |
| | | Invité Invité
| Sujet: Re: question concernant DIR_DIALOG Jeu 17 Fév 2011 - 22:59 | |
| C'est Klaus qui a fait un programme pour avoir des noms courts. C'est très pratique pour la construction d'un programme, en tant que "programmeur". Mais dans un programme d'installation, l'envie n'est pas de demander au "client" (vilain mot), de faire le travail de conversion.
Il pourrait y avoir un flag de réception, on récupère soit le mot long ou court. Reste que ce travail, je ne veux pas l'imposer à Klaus qui se dévoue beaucoup à nos demandes. Je pense qu'il me faudra un mot court, et dans mon cas c'est l'emplacement d'appel au scanner, mais si un programme est installé en program files, on connait déjà cette partie là ("C:\PROGRA~1\). Reste qu'il n'y est pas d'espaces dans le reste.
Je sais que je suis en train de me donner beaucoup de mal pour ce programme, qui certainement n'intéresse que moi, mais c'est plus un pari envers moi-même que l’intérêt du programme. De plus si cela fonctionne, ce pourrait servir d'exemple pour d'autre type de programme, certainement plus intéressant que le mien.
Chaque fois que l'on met un programme sur le forum, il y a toujours quelqu'un qui a un problème pour une raison ou une autre. Le but est de mettre au point un bon système de transfert, comme ont les programmes du commerce.
En ce qui concerne le scanneur, j'utilise un programme que j'ai téléchargé. Mais j'ai trouvé dans "systeme32" ce programme qui peut-être un point de départ: "wiaacmgr.exe". C'est l'assistant du scanneur ou d'un appareil numérique. Je suppose que tout le monde a ce programme. Il pourrait servir de programme par défaut dans un premier temps, et là pas besoin du chemin complet. |
| | | Klaus
Nombre de messages : 12295 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: question concernant DIR_DIALOG Jeu 17 Fév 2011 - 23:20 | |
| @Cosmos70: 1. Pour les noms courts, le mieux serait d'enchaîner un deuxième appel de fonction DLL pour convertir le nom nom obtenu en nom court. Mais as-tu vraiment besoin d'un nom court ? Ne peux-tu pas passer le nom long de la manière suivante: - Code:
-
nom_du_fichier_complet$ = chr$(34)+dossier$+nom_du_fichier$"+chr$(34)
Une telle construction passe comme paramètre dans un fichier de commandes *.bat. 2. On n'a aucune influence sur le placement de la fenêtre du dialogue de recherche de répertoire. C'est une foncion windows dont le placement est automatique. 3. Je n'ai pas constaté de minimisation du programme au retour de l'appel de ma DLL. La variable de retour est bien chargée et le résultat s'affiche, le programme restant affiché en mode normal... | |
| | | Invité Invité
| Sujet: Re: question concernant DIR_DIALOG Jeu 17 Fév 2011 - 23:30 | |
| Tu as une bonne idée pour les noms noms. Comme tu vois, je ne pense pas à tout, à partir du moment que cela marche. Pour le retour de la dll, chez moi, le programme disparait, et je dois le ressortir en cliquant sur l'icône dans la barre de tâche, et ça c'est un problème important. Je viens d'essayer plusieurs programmes selon ta méthode, et cela ne marche pas. Un exemple: - Code:
-
dim prg$:prg$=chr$(34)+"C:\Program Files\aida\aida32.exe"+chr$(34) message file_exists(prg$) execute_wait prg$
|
| | | Klaus
Nombre de messages : 12295 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: question concernant DIR_DIALOG Ven 18 Fév 2011 - 1:24 | |
| Effectivement, les commandes EXECUTE et EXECUTE_WAIT ont besoin du nom court, bien que ce ne soit pas documenté. Dommage, mais il n'y a pas d'autre solution que d'appeler la fonction de calcul du nom court. | |
| | | Contenu sponsorisé
| Sujet: Re: question concernant DIR_DIALOG | |
| |
| | | | question concernant DIR_DIALOG | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |