[..] InputBox, limite des caractères que l'on peut taper?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
clark17
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 23 sept. 2011 01:12
Status : Hors ligne

[..] InputBox, limite des caractères que l'on peut taper?

#1

Message par clark17 » lun. 12 mars 2018 19:07

Bonjour,

Si j'essaye ce code:
Local $textelong = "Comment et pourquoi meurt-on encore de faim en 2017 ? Facteurs climatiques, économiques et politiques se combinent pour engendrer ces catastrophes humanitaires. Ces derniers mois, les crises alimentaires au Nigeria, au Soudan du Sud et au Yémen ont montré que la guerre joue un rôle essentiel dans le déclenchement des famines actuelles."

Local $reponse = InputBox("Description", "entrer un texte long:", $textelong)
MsgBox(1, "Test", $reponse)
La msgBox me retourne un texte tronqué. Visiblement c'est la inputbox qui me limite car si je stocke $reponse dans un tableau celui-ci est aussi tronqué... J'ai bien regardé dans l'aide mais rien à ce sujet.

Avatar du membre
mdanielm
Membre émérite
Membre émérite
Messages : 193
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: [..] InputBox, limite des caractères que l'on peut taper?

#2

Message par mdanielm » lun. 12 mars 2018 19:24

Lisez la doc:
The string returned will not exceed 254 characters and if input contains carriage returns or linefeeds, the result will be truncated at the first occurrence of those characters.

clark17
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 23 sept. 2011 01:12
Status : Hors ligne

Re: [..] InputBox, limite des caractères que l'on peut taper?

#3

Message par clark17 » mar. 13 mars 2018 17:56

J'étais passé à côté, autant pour moi...
Du coup quelle solution s'offre à moi pour contourner ce problème?

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 544
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: [..] InputBox, limite des caractères que l'on peut taper?

#4

Message par walkson » mar. 13 mars 2018 20:46

En faisant un pseudo inputbox comme ceci par exemple
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Global $textelong = "Comment et pourquoi meurt-on encore de faim en 2017 ? Facteurs climatiques, économiques et politiques se combinent pour engendrer ces catastrophes humanitaires. Ces derniers mois, les crises alimentaires au Nigeria, au Soudan du Sud et au Yémen ont montré que la guerre joue un rôle essentiel dans le déclenchement des famines actuelles."
Global $val = ""
Global $Form1 = GUICreate("Form1", 604, 172, 601, 288)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
Global $Button1 = GUICtrlCreateButton("input", 56, 48, 145, 65)
GUICtrlSetOnEvent(-1, "Button1Click")
Global $label = GUICtrlCreateLabel("",304,2,300,170)
GUISetState(@SW_SHOW)

While 1
 Sleep(100)
WEnd

Func Button1Click()
        _input()
        GUISetState(@SW_HIDE, $Form1)
EndFunc
Func Form1Close()
        Exit
EndFunc

Func _input()
Global $Form11 = GUICreate("inputbox", 453, 278, 654, 270)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form11Close")
Global $Edit11 = GUICtrlCreateEdit("", 8, 8, 433, 217, $ES_MULTILINE)
GUICtrlSetData(-1, $textelong)
Global $Button11 = GUICtrlCreateButton("OK", 102, 240, 97, 33)
GUICtrlSetOnEvent(-1, "Button1Click1")
Global $Button21 = GUICtrlCreateButton("NO", 254, 240, 97, 33)
GUICtrlSetOnEvent(-1, "Button2Click1")
GUISetState(@SW_SHOW)
EndFunc

Func Button1Click1()
        $val = GUICtrlRead($Edit11)
        Form11Close()
EndFunc
Func Button2Click1()
$val = ""      
Form11Close()
EndFunc
Func Form11Close()

        GUIDelete($Form11)
        GUISetState(@SW_SHOW, $Form1)
        GUICtrlSetData($label, $val)
EndFunc


 
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

clark17
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 23 sept. 2011 01:12
Status : Hors ligne

Re: [..] InputBox, limite des caractères que l'on peut taper?

#5

Message par clark17 » sam. 16 juin 2018 13:35

Merci pour le code c'est une exemple parlant pour constituer une GUI.
Toutefois comment mettre en pause le programme en attendant que l'utilisateur saisisse des données?
Existe t il une commande wait?

clark17
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 23 sept. 2011 01:12
Status : Hors ligne

Re: [..] InputBox, limite des caractères que l'on peut taper?

#6

Message par clark17 » sam. 16 juin 2018 13:50

Je me rend compte que mon message est succinct.
Voici le code:
#Include <Array.au3>
#Include <File.au3>
#Include <MsgBoxConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Opt("GUIOnEventMode", 1)

;Renseignement sur le programme
Local $boite = MsgBox(1, "YoutubeUpload", "Placez vos vidéos dans le même répertoire puis OK.")
If $boite = 2 Then Exit

;Chargement de la liste des fichiers dans un tableau
Local $listevideos = _FileListToArrayRec(@ScriptDir, "*.avi;*.mp4;*.mkv")
If @error Then
        MsgBox($MB_SYSTEMMODAL, "Erreur", "Aucune vidéo dans le dossier.", 15)
        Exit
EndIf

;Création d'un tableau $bdd vide contenant les infos utiles pour chaque vidéos
Local $bdd[$listevideos[0]][7]

;Boucle remplissage du tableau $bdd
Local $ibdd = 0
For $i = 1 To $listevideos[0]
        ;Extraire les données du nom de la vidéo
        Local $tableaunom = StringSplit($listevideos[$i], " - ", 1) ;Découpage du nom du fichier

        Local $tableaudate = StringSplit($tableaunom[1], "-") ;Découpage de la date
        $tableaudate[1] = StringLeft($tableaudate[1], 4) ;Année
        $tableaudate[2] = StringLeft($tableaudate[2], 2) ;Mois
        $tableaudate[3] = StringLeft($tableaudate[3], 2) ;Jour
        Local $dateUS = $tableaudate[1] & "-" & $tableaudate[2] & "-" & $tableaudate[3] ;Date de la vidéo au format US (2017-12-27)
        Local $dateFR = $tableaudate[3] & "." & $tableaudate[2] & "." & $tableaudate[1] ;Date de la vidéo au format FR (27.12.2017)

        $titrevideo = StringTrimRight($tableaunom[3], 4) ;Titre de la vidéo

        Local $thumbnail = StringTrimRight($listevideos[$i], 3) & "jpg"
        Local $fichierjson = StringTrimRight($listevideos[$i], 3) & "json"

        ;Création d'une interface pour remplir la colonne description
        Global $reponse = ""
        Global $fenetre1 = GUICreate($titrevideo, 453, 278, 654, 270)
        GUISetOnEvent($GUI_EVENT_CLOSE, "fenetre1fermeture")
        Global $edition = GUICtrlCreateEdit("", 8, 8, 433, 217, $ES_MULTILINE)
        Global $boutton1 = GUICtrlCreateButton("OK", 102, 240, 97, 33)
        GUICtrlSetOnEvent(-1, "boutton1click")
        GUISetState(@SW_SHOW)

        ;Local $reponse = InputBox("Description", "Description pour: " & $listevideos[$i])
        MsgBox(1, "YoutubeUpload", $reponse)

        ;Remplissage d'une ligne du tableau $bdd
        $bdd[$ibdd][0] = $listevideos[$i] ;Colonne 0 = Nom du fichier vidéos (*.avi)
        $bdd[$ibdd][1] = $titrevideo ;Colonne 1 = Titre de la vidéo
        $bdd[$ibdd][2] = $dateFR ;Colonne 2 = Date FR
        $bdd[$ibdd][3] = $dateUS ;Colonne 3 = Date US
        $bdd[$ibdd][4] = $thumbnail ;Colonne 4 = Nom du fichier image pour le thumbnail
        $bdd[$ibdd][5] = $fichierjson ;Colonne 5 = Nom du fichier JSON
        $bdd[$ibdd][6] = $reponse ;Colonne 6 = Description de la vidéo

        $ibdd += 1
Next

;Création d'une barre de progression
ProgressOn("Progression", "", "0 %", -1, -1, BitOR($DLG_NOTONTOP, $DLG_MOVEABLE))

;Boucle pour générer le JSON puis uploader les vidéos
For $i = 0 To Ubound($bdd) - 1

        ;Génére le fichier JSON
        Filewrite($bdd[$i][5], "{")

        Local $hfichierjson = FileOpen($bdd[$i][5], $FO_APPEND)

        FileWriteLine($hfichierjson, ' "title": "' & $bdd[$i][1] & ' - Le dessous des cartes - ' & $bdd[$i][2] & ' (Arte)",')
        FileWriteLine($hfichierjson, ' "description": "' & $bdd[$i][6] & '",')
        FileWriteLine($hfichierjson, ' "tags": ["arte", "dessous", "cartes", "documentaire", "géographie", "reportage"],')
        FileWriteLine($hfichierjson, ' "privacyStatus": "private",')
        FileWriteLine($hfichierjson, ' "embeddable": true,')
        FileWriteLine($hfichierjson, ' "publicStatsViewable": true,')
        FileWriteLine($hfichierjson, ' "recordingdate": "' & $bdd[$i][3] & '",')
        FileWriteLine($hfichierjson, ' "playlistIds": ["blalblealqlfdsqflsd", "blablasdfsdf"],')
        FileWriteLine($hfichierjson, ' "language":  "fr"')
        FileWriteLine($hfichierjson, "}")

        FileClose($hfichierjson)

        ;Lance youtubeuploader avec les bons paramètres
        RunWait(@ComSpec & " /c " & 'youtubeuploader.exe -filename "' & $bdd[$i][0] & '" -metaJSON "' & $bdd[$i][5] & '" -thumbnail "' & $bdd[$i][4] & '"')

        ;Mise à jour de la barre de progrssion
        $pourcentage = ($i / Ubound($bdd)) * 100
    ProgressSet($pourcentage, $pourcentage & " %", "")
Next

;Barre de progression à 100%
ProgressSet(100, "Fin", "Upload terminé")
Sleep(1000)
ProgressOff()

;Message de réussite
MsgBox(0, "YoutubeUpload", "Upload vers Youtube terminé.")

; Fonctions pour l'interface
Func fenetre1fermeture()
        Exit
EndFunc

Func boutton1click()
        $reponse = GUICtrlRead($edition)
        GUIDelete($fenetre1)
EndFunc
Le code récupère une liste de fichiers, génère un tableau puis un JSON contenant les infos utiles et enfin appelle youtubeuploader.exe avec les bons paramètres.
Mais je maitrise mal les GUI du coup pour obtenir une description de la vidéo je crée une GUI mais qui ne suspend mon code...
J'ai du mal à comprendre comment faire pour adapter mon code...

Répondre