[FUNC] FileSaveDialogToString

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 106
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

[FUNC] FileSaveDialogToString

#1

Message par Numeric » ven. 27 mai 2016 03:51

Salut, :D

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 :D )
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 :twisted:
Voici une fonction avec deux exemples pour résoudre ce problème... :P
Fichiers joints
StringMaster3.au3
(1.68 Kio) Téléchargé 99 fois
StringMaster3.au3
(1.68 Kio) Téléchargé 99 fois
Exemple StringMaster.au3
(2.48 Kio) Téléchargé 103 fois
Exemple StringMaster.au3
(2.48 Kio) Téléchargé 103 fois
Modifié en dernier par Numeric le mar. 31 mai 2016 07:57, modifié 2 fois.
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2046
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [FUNC]FileSaveDialogToString

#2

Message par jchd » ven. 27 mai 2016 07:04

T'es sûr, là ??????
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 106
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: [FUNC] FileSaveDialogToString

#3

Message par Numeric » sam. 28 mai 2016 10:22

Absolument jchd ....As tu une remarque à faire?
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2046
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [FUNC] FileSaveDialogToString

#4

Message par jchd » sam. 28 mai 2016 19:12

Quelques-unes, préfixées par ;@

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
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.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 106
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: [FUNC] FileSaveDialogToString

#5

Message par Numeric » dim. 29 mai 2016 01:02

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)
AutoIt MVPs (MVP)
Messages : 2046
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [FUNC] FileSaveDialogToString

#6

Message par jchd » dim. 29 mai 2016 10:31

C'est là le but.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 106
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: [FUNC] FileSaveDialogToString

#7

Message par Numeric » dim. 29 mai 2016 14:59

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...
Fichiers joints
StringMaster3.au3
(1.68 Kio) Téléchargé 101 fois
StringMaster3.au3
(1.68 Kio) Téléchargé 101 fois
Modifié en dernier par Numeric le mar. 31 mai 2016 07:39, modifié 2 fois.
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric

Avatar du membre
orax
Modérateur
Modérateur
Messages : 1478
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Contact :
Status : Hors ligne

Re: [FUNC] FileSaveDialogToString

#8

Message par orax » mer. 19 oct. 2016 03:27

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 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. :wink:
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)

Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 106
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: [FUNC] FileSaveDialogToString

#9

Message par Numeric » jeu. 20 oct. 2016 00:56

Coucou :D
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
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5830
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [FUNC] FileSaveDialogToString

#10

Message par mikell » jeu. 27 oct. 2016 16:39

; 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 )

Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 106
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: [FUNC] FileSaveDialogToString

#11

Message par Numeric » dim. 30 oct. 2016 02:04

Bien vu mikell, petite erreur de ma part....
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric

Répondre