[Func] Fonctions diverses

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
tioxine
Niveau 3
Niveau 3
Messages : 39
Enregistré le : sam. 14 janv. 2012 17:00
Status : Hors ligne

[Func] Fonctions diverses

#1

Message par tioxine »

Divers fonctions qui peuvent aider

Pour cette fonction, votre objet doit avoir instancié la méthode getAttribut(nom attribut)

Code : Tout sélectionner

; Exemple de getAttribut
func getAttribut($pObj,$nomAttr)
   Local $valeur
   switch ($nomAttr)
       case 'toto'
           $valeur = $pObj.toto
      ...
  EndSwitch
  return $valeur
EndFunc
 

Code : Tout sélectionner

; #FUNCTION# =========================================================================
; Name...........: _SpgmSearchObjet
; Description ...: Recherche dans un tableau d'objet
; Syntax ........: _SpgmSearchObjet($pTableau,$pSearch,$pAttributSearch,[$pAttributRetour=""])
; Parameters ....: $pTableau    - Le tableau d'objet
;               : $pSearch      - La valeur à recherchée
;           : $pAttributSearch  - L'attribut contenant cette valeur
;           : $pAttributRetour - L'attribut contenant la valeur de retour [Optional : Blanc, on retourne l'objet]
; Return values .: On Success La valeur ou l'objet
;                  On Failure - -1
; Error values ..: 0 si OK,100 si vide
; Remarks .......:
; Author         : 
; Version du     : V1.0 du 07/03/2013
;   Création
; =========================================================================
Func _SpgmSearchObjet(ByRef $pTableau, $pSearch, $pAttributSearch, $pAttributRetour = "")
    Local $xi = 0
    Local $objet
    Local $erreur = 100

    While ($erreur = 100 And $xi < UBound($pTableau))
        If ($pTableau[$xi] .getAttribut($pAttributSearch) = $pSearch) Then
            If ($pAttributRetour = "") Then
                $objet = $pTableau[$xi]
            Else
                $objet = $pTableau[$xi] .getAttribut($pAttributRetour)
            EndIf
            $erreur = 0
        Else
            $xi = $xi + 1
        EndIf
    WEnd
    SetError($erreur)
    Return $objet
EndFunc   ;==>_SpgmSearchObjet
 
Attente fin de fichier Cette fonction est utile lorsque l'on veut attendre la fin d'un sous process renvoyant un fichier (Macro excel générant un fichier par exemple, la fin de transfert ne veut pas dire la fin d'excel)

Code : Tout sélectionner

; #FUNCTION# =========================================================================
; Name...........: _SpgmWaitFile
; Description ...: Attend la fin d'un fichier
; Syntax ........: _SpgmWaitFile($pFile,[$pTimeOut = 0])
; Parameters ....: $pFile       - Le fichier
;                : $pTimeOut    - Le timeout [Optionnel]
; Return values .: On Success La taille du fichier
;                  On Failure - -1
; Error values ..: 0 si OK
; Remarks .......:
; Author         : 
; Version du     : V1.0 du 07/03/2013
;   Création
; =========================================================================
Func _SpgmWaitFile($pFile, $pTimeOut = 0)
    Local $xi = 0
    Local $xj = -1

    While (($xi < $pTimeOut Or $pTimeOut = 0) And (Not FileExists($pFile) Or FileGetSize($pFile) = 0))
        Sleep(1000)
        $xi = $xi + 1
    WEnd
    If ($xi <> $pTimeOut Or $pTimeOut = 0) Then
        $xi = 0
        While (($xi < $pTimeOut Or $pTimeOut = 0) And $xj <> FileGetSize($pFile))
            $xj = FileGetSize($pFile)
            $xi = $xi + 1
            Sleep(1000)
        WEnd
    EndIf
    If ($xi = $pTimeOut And $pTimeOut <> 0) Then SetError(-1)
    Return $xj
EndFunc   ;==>_SpgmWaitFile
 
Contrôle de date et renvoie Locale et TU : Nécéssite l'udf Autoit_Object

Code : Tout sélectionner

; #FUNCTION# =========================================================================
; Name...........: _SpgmCtrlDate
; Description ...: Controle d'une date
; Syntax ........: _SpgmCtrlDate([$pDate="",[$pHeure=""]])
; Parameters ....: $pDate   - La date à contrôler [optionnel]
;                : $pHeure  - L'heure à controler [optionnel]
; Return values .: On Success La Date/Heure TU et la Date/Heure Locale
;                  On Failure - Le message d'erreur
; Error values ..: 0 si OK,-1 si erreur
; Remarks .......:
; Author         : 
; Version du     : V1.0 du 07/03/2013
;   Création
; Analyse
; -1- Contrôle de la date
;  -11- Si ASAP,IMMEDIAT,blanc : Date du jour
;  -12- Si jj/mm/yyyy ou jj/mm/yy (lg 8 ou 10), retourner la date (yyyy/mm/jj) puis faire le controle
;  -13- Autres cas, date invalide
; -2- Contrôle de l'heure
;  -21- Si ASAP,IMMEDIAT,HH:MM ou blanc : Heure actuelle
;  -22- Contrôle date + heure
; -3- Récup de l'heure locale et de l'heure TU par rapport à l'heure demandée
; -4- Renvoyer les heures locales et TU (objet.dateLocal, objet.dateTu)
; =========================================================================
Func _SpgmCtrlDate($pDate = "", $pHeure = "")
    Local $date = "";  Date
    Local $dateLoc = "" ; Date Local
    Local $heure = ""; Heure
    Local $tu = False ; Tu ou Loc
    Local $retour ; Retour

    ; Contrôle de la date
    ; La date peut etre non renseignée,"immediat","asap" ou jj/mm/yy ou jj/mm/yyyy ou jj/mm/aa ou jj/mm/aaaa
    If (StringRegExp(StringUpper($pDate), "ASAP") _
            Or StringRegExp(StringUpper(StringReplace($pDate, "é", "e")), "IMMEDIAT") _
            Or StringUpper($pDate) = "JJ/MM/YY" _
            Or StringUpper($pDate) = "JJ/MM/YYYY" _
            Or StringUpper($pDate) = "JJ/MM/AA" _
            Or StringUpper($pDate) = "JJ/MM/AAAA" _
            Or _LTRIM($pDate) == "") Then
        $date = _NowCalcDate()
    Else
        ; Format (jj/mm/yy ou jj/mm/yyyy ou jj/mm/aa ou jj/mm/aaaa)
        If (StringLen($pDate) = 8 Or StringLen($pDate) = 10) Then
            If (StringLen($pDate) = 8) Then
                $date = "20" & StringRight($pDate, 2) & "/" & StringMid($pDate, 4, 2) & "/" & StringLeft($pDate, 2)
            Else
                $date = StringRight($pDate, 4) & "/" & StringMid($pDate, 4, 2) & "/" & StringLeft($pDate, 2)
            EndIf
            If (Not _DateIsValid($date)) Then
                SetError(-1)
                Return "Date invalide [jj/mm/yyyy ou jj/mm/yy]"
            EndIf
        Else
            SetError(-1)
            Return "Date invalide [jj/mm/yyyy ou jj/mm/yy]"
        EndIf
    EndIf

    ; Traitement de l'heure
    ; L'heure peut etre non renseignée,"immediat","asap","hh:mm" ou hh:mm ou hh:mm TU,LOC,LO ou autre
    If (StringRegExp(StringUpper($pHeure), "ASAP") _
            Or StringRegExp(StringUpper(StringReplace($pHeure, "é", "e")), "IMMEDIAT") _
            Or StringRegExp(StringUpper($pHeure), "HH:MM") _
            Or _LTRIM($pHeure) == "") Then
        $heure = _NowTime(4);
    Else
        ; Dégrouper l'heure si nécéssaire
        If StringRegExp(StringUpper($pHeure), "TU") Then $tu = True
        $heure = StringLeft($pHeure, 2) & ":" & StringMid($pHeure, 4, 2)
    EndIf
    If (Not _DateIsValid($date & " " & $heure)) Then
        SetError(-1)
        Return "Heure invalide"
    EndIf

    ; L'heure locale/tu
    Local $tag = _Date_Time_EncodeSystemTime(StringMid($date, 6, 2), StringRight($date, 2), StringLeft($date, 4), StringLeft($heure, 2), StringRight($heure, 2))
    ; La date est locale
    If (Not $tu) Then
        $dateLoc = $date & " " & $heure
        $date = _Date_Time_TzSpecificLocalTimeToSystemTime(DllStructGetPtr($tag))
        $date = _Date_Time_SystemTimeToDateTimeStr($date, 1)
    Else
        $dateLoc = _Date_Time_SystemTimeToTzSpecificLocalTime(DllStructGetPtr($tag))
        $dateLoc = _Date_Time_SystemTimeToDateTimeStr($dateLoc, 1)
        $date = $date & " " & $heure
    EndIf

    ; Retour
    $retour = _AutoItObject_Class()
    $retour.Create()
    $retour.AddProperty("dateLocal", $ELSCOPE_PUBLIC, $dateLoc)
    $retour.AddProperty("dateTu", $ELSCOPE_PUBLIC, $date)
    Return $retour.Object

EndFunc   ;==>_SpgmCtrlDate
 
Répondre