[FUNC] FileSaveDialogToString
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[FUNC] FileSaveDialogToString
Salut,
imaginons que vous voulez créer un programme dans lequel l'utilisateur pourras inclure des données pour les réutiliser plus tard si besoin grâce à leurs noms : par exemple un Pack de thème .
1) vous devez créer un espace de stockage de ces données (pas de problème )
2) il vous faudra récupérer les noms de ces données pour les proposer plus tard quand l'utilisateur en aura besoin : peut-être dans une ComboBox...: petit problème
Voici une fonction avec deux exemples pour résoudre ce problème...
imaginons que vous voulez créer un programme dans lequel l'utilisateur pourras inclure des données pour les réutiliser plus tard si besoin grâce à leurs noms : par exemple un Pack de thème .
1) vous devez créer un espace de stockage de ces données (pas de problème )
2) il vous faudra récupérer les noms de ces données pour les proposer plus tard quand l'utilisateur en aura besoin : peut-être dans une ComboBox...: petit problème
Voici une fonction avec deux exemples pour résoudre ce problème...
- Fichiers joints
-
- StringMaster3.au3
- (1.68 Kio) Téléchargé 2209 fois
-
- Exemple StringMaster.au3
- (2.48 Kio) Téléchargé 2227 fois
Modifié en dernier par Numeric le mar. 31 mai 2016 08:57, modifié 2 fois.
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
- jchd
- AutoIt MVPs (MVP)
- Messages : 2277
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [FUNC]FileSaveDialogToString
T'es sûr, là ??????
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [FUNC] FileSaveDialogToString
Absolument jchd ....As tu une remarque à faire?
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
- jchd
- AutoIt MVPs (MVP)
- Messages : 2277
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [FUNC] FileSaveDialogToString
Quelques-unes, préfixées par ;@
Puis je ne vois pas bien le rapport entre l'exposé initial et le code. Je verrais plutôt un .INI ou une BdD si le volume le justifie, mais là je nage.
Code : Tout sélectionner
#include <Array.au3>
#include <String.au3>
#include-once
; #INDEX# =======================================================================================================================
; Title .........: StringName.au3
; AutoIt Version : 3.3.14.2
; Language ......: French
; Description ...: Functions qui trie et index des string specifique dans n'importe quelle handle"
; The clipboard is a set of functions and messages that enable applications to transfer data.
; Because all applications have access to the clipboard, data can be easily transferred
; between applications or within an application.
; Author(s) .....: Numeric
; ===============================================================================================================================
;@ la description ne correspond pas du tout à ce que la fonction prétend réaliser
;@ un handle ce n'est pas ça du tout
;@ clipboard ???
; #CONSTANTS# ===================================================================================================================
#Region Functions list
; #CURRENT# =====================================================================================================================
; FileSaveDialogToString
; ===============================================================================================================================
#EndRegion Functions list
;#REGION EXEMPLE=================================================================================================================
;@ l'option 3 n'est pas une combinaison valide
Local $Exemple = FileSaveDialog("Mon Fichier", @DesktopDir, "Fichiers Mp3(*.mp3)", 3)
;Fonction pour récuperer le nom du fichier
$Show_name = FileSaveDialogToString($Exemple, 'mp3')
;Exemple 2
;Local $Exemple = FileSaveDialog("Mon Fichier",@DesktopDir,"Tous(*.*)",3)
;$Show_name = FileSaveDialogToString($Exemple,Default)
;Verification du nom
MsgBox(64, 'Le nom du fichier', 'Le nom du fichier sélectionné est : ' & $Show_name)
;#END REGION====================================================================================================================
; #FUNCTION# ====================================================================================================================
; Name ..........: FileSaveDialogToString
; Description ...: Recuperer le nom au lieu des paths des fichiers selection par fileSaveDialog
; Syntax ........: FileSaveDialogToString($FileHandle[, $extension = Default])
; Parameters ....: $FileHandle - an unknown value.
; $extension - [optional] an unknown value. Default is Default.
; Return values .: $FileName&$Separator&$extension as String
; Author ........: Numeric
; Example .......: Show_name = FileSaveDialogToString( FileSaveDialog("Mon Fichier",@DesktopDir,"Fichiers Mp3(*.mp3)",3),'mp3')
; ===============================================================================================================================
Func FileSaveDialogToString($FileHandle, $extension = Default)
Local $FileName, $KeyWord, $TrimWord, $word, $Separator
If $extension = Default Then $extension = ""
;@ un simple
;@ If $extension <> "" Then $Separator = '.'
;@ suffirait
If $extension = "" Then
$Separator = ""
ElseIf $extension <> "" Then
$Separator = '.'
EndIf
;@ cette ligne ne fait pas ce que tu crois qu'elle fait :
;@ elle équivaut à
;@ $KeyWord = True
$KeyWord = "*" Or $KeyWord = "=" Or $KeyWord = ":" Or $KeyWord = ";"
If $FileHandle = '' Then Return SetError(1, 0, '')
$StringSplit = StringSplit($FileHandle, "\", 1)
If @error = 1 Then
$FileName = $FileHandle
;@ cette ligne est commune aux deux branches, donc la placer après le EndIf
Return $FileName & $Separator & $extension
Else
For $i = 1 To $StringSplit[0]
;@ ici il y a un gros problème !
;@ puisque $Keyword vaut toujours True, cette ligne équivaut à :
;@ $TrimWord = StringInStr($StringSplit[$i], "True")
;@ et en effet, le problème se manifeste si le nom de fichier choisi contient la sous-chaîne "true"
$TrimWord = StringInStr($StringSplit[$i], $KeyWord)
If $TrimWord = 0 Or $TrimWord = 1 Then
;@ autre problème : si le nom choisi contient un point, il y a bug
$word = _StringBetween($StringSplit[$i], '', '.')
Else
Return SetError(2, 0, 0)
EndIf
Next
$FileName = _ArrayToString($word)
;@ cette ligne est commune aux deux branches, donc la placer après le EndIf
Return $FileName & $Separator & $extension
EndIf ;Fin de la condition = s'il n'ya pas d'erreur
EndFunc ;==>FileSaveDialogToString
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [FUNC] FileSaveDialogToString
bien vu, je l'améliorerai...merci pour ta remarque, elle est constructive...
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
- jchd
- AutoIt MVPs (MVP)
- Messages : 2277
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [FUNC] FileSaveDialogToString
C'est là le but.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [FUNC] FileSaveDialogToString
Salut,
Apres les remarques j'ai voulu faire mieux. Cependant le but est de toujours s'améliorer...
1) vous remarquerai la remarque Remarks les limites de la fonction ou plutôt le cadre d'application...
Apres les remarques j'ai voulu faire mieux. Cependant le but est de toujours s'améliorer...
1) vous remarquerai la remarque Remarks les limites de la fonction ou plutôt le cadre d'application...
- Fichiers joints
-
- StringMaster3.au3
- (1.68 Kio) Téléchargé 2216 fois
Modifié en dernier par Numeric le mar. 31 mai 2016 08:39, modifié 2 fois.
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
- orax
- Modérateur
- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [FUNC] FileSaveDialogToString
J'aurais juste une petite remarque à faire à propos de l'utilisation du mot handle. Comme l'avait dit jchd dans son code commenté, ce qui est retourné par FileSaveDialog() n'est pas un handle (on pourrait traduire handle par descripteur), c'est le chemin complet du fichier. C'est donc une chaîne de caractères et non un handle.
Donc au lieu d'avoir $FileHandle dans
Et aussi... dans les parties "Exemples de scripts" et "Fonction et UDF", quand tu mets à jour le code, il serait préférable d'éditer le premier message, car c'est surtout le code du premier message qu'on va récupérer.
Donc au lieu d'avoir $FileHandle dans
Func FileSaveDialogToString($FileHandle, $extension = Default)
, il serait peut-être plus correct de changer le nom de la variable en quelque chose comme... $FileFullPath, $Path, $FilePath, ...Et aussi... dans les parties "Exemples de scripts" et "Fonction et UDF", quand tu mets à jour le code, il serait préférable d'éditer le premier message, car c'est surtout le code du premier message qu'on va récupérer.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: [FUNC] FileSaveDialogToString
Coucou
la réflexion continue...
voici une fonction plus simplifiée et plus puissante....
la réflexion continue...
voici une fonction plus simplifiée et plus puissante....
#include <Array.au3>
; #INTERNAL_USE_ONLY# ===========================================================================================================
; Name ..........: __StringName
; Description ...: Recupere le nom ou l'extension d'un fichier dont le path est retourné par fileopendialog
; Syntax ........: __StringName($sFilePath[, $getExtension = False])
; Parameters ....: $sFilePath - a string value.
; $getExtension - [optional] an unknown value. Default is False.
; Return values .: None
; Author ........: Numeric
; Remarks .......:
; Related .......:
; ===============================================================================================================================
Func __StringName($sFilePath, $getExtension = False)
Local $getSections, $getExt = '', $sFileName = $sFilePath
If $sFilePath = '' Then Return SetError(1, @extended, -1)
If $getExt = Default Or $getExt <> True Then $getExt = False
Local Const $sDel = '\'
Local Const $sEdel = '.'
Switch $getExtension
Case True
$getSections = StringSplit($sFilePath, $sDel, 1)
If IsArray($getSections) Then
$sFileName = _ArrayPop($getSections)
If StringInStr($sFileName, $sEdel) <> 0 Then
$extEnd = StringSplit($sFileName, $sEdel)
$getExt = _ArrayPop($extEnd)
EndIf
EndIf
$sFileName = $getExt
Case False
Local $isBuff = StringLen($sFilePath)
Local $isDll = DllStructCreate('wchar[' & $isBuff + 1 & ']')
Local $isCALL = DllCall('Comdlg32.dll', 'short', 'GetFileTitle', 'str', $sFilePath, 'str', $isDll, 'word', $isBuff)
$sFileName = $isCALL[2]
EndSwitch
Return $sFileName
EndFunc ;==>__StringName
; #INTERNAL_USE_ONLY# ===========================================================================================================
; Name ..........: __StringName
; Description ...: Recupere le nom ou l'extension d'un fichier dont le path est retourné par fileopendialog
; Syntax ........: __StringName($sFilePath[, $getExtension = False])
; Parameters ....: $sFilePath - a string value.
; $getExtension - [optional] an unknown value. Default is False.
; Return values .: None
; Author ........: Numeric
; Remarks .......:
; Related .......:
; ===============================================================================================================================
Func __StringName($sFilePath, $getExtension = False)
Local $getSections, $getExt = '', $sFileName = $sFilePath
If $sFilePath = '' Then Return SetError(1, @extended, -1)
If $getExt = Default Or $getExt <> True Then $getExt = False
Local Const $sDel = '\'
Local Const $sEdel = '.'
Switch $getExtension
Case True
$getSections = StringSplit($sFilePath, $sDel, 1)
If IsArray($getSections) Then
$sFileName = _ArrayPop($getSections)
If StringInStr($sFileName, $sEdel) <> 0 Then
$extEnd = StringSplit($sFileName, $sEdel)
$getExt = _ArrayPop($extEnd)
EndIf
EndIf
$sFileName = $getExt
Case False
Local $isBuff = StringLen($sFilePath)
Local $isDll = DllStructCreate('wchar[' & $isBuff + 1 & ']')
Local $isCALL = DllCall('Comdlg32.dll', 'short', 'GetFileTitle', 'str', $sFilePath, 'str', $isDll, 'word', $isBuff)
$sFileName = $isCALL[2]
EndSwitch
Return $sFileName
EndFunc ;==>__StringName
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [FUNC] FileSaveDialogToString
......; Description ...: Recupere le nom ou l'extension d'un fichier dont le path est retourné par fileopendialog
; .....
; Return values .: None
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [FUNC] FileSaveDialogToString
Bien vu mikell, petite erreur de ma part....
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric