Page 1 sur 1
[R] Detecter une ligne vide avec StringRegEXP
Posté : ven. 07 févr. 2014 12:17
par Hugues
Bonjour,
J'ai une ListView qui contient des données et que je voudrais imprimer.
Je souhaite récupérer qu'une seule partie (la première avant la ligne vide), mais je ne sais pas comment faire avec la fonction StringRegExp...
Merci par avance
Re: [..] Decteter une ligne vide avec StringRegEXP
Posté : ven. 07 févr. 2014 14:03
par mikell
S'il s'agit juste de récupérer sous condition le contenu d'une listview pas sûr qu'un regex soit la meilleure solution.. . une boucle de lecture des lignes avec un Exitloop en cas de ligne vide pourrait très bien faire l'affaire
Un exemple de code ?
Re: [..] Decteter une ligne vide avec StringRegEXP
Posté : ven. 07 févr. 2014 14:12
par Hugues
En fait, je récupère le contenu de ma ListView si elle est non vide pour le mettre dans un fichier notepad pour pouvoir l'imprimer...
Mon code:
► Afficher le texte
Code : Tout sélectionner
Func _PrintFile()
Local $hFileOpen = FileOpen("Print.txt", 2)
For $i = 0 To _GUICtrlListView_GetItemCount($hListView2)
If _GUICtrlListView_GetItemText($hListView2, $i) = StringRegExp($hListView2, "", 3)) Then Return
ConsoleWrite(_GUICtrlListView_GetItemText($hListView2, $i)& @CRLF)
FileWriteLine("Print.txt", _GUICtrlListView_GetItemText($hListView2, $i))
Next
FileClose($hFileOpen)
EndFunc
Je pense qu'il doit y avoir beaucoup plus simple...
Pour fair simple, je lis ma ListView de bas en haut, dès que j'ai une ligne vide ou des espaces, tab (mais pas de texte), j'arrête d'ecrire dans mon fichier texte.
Je sais pas si j'ai été clair...

Re: [..] Decteter une ligne vide avec StringRegEXP
Posté : ven. 07 févr. 2014 14:27
par Hugues
Bon, je crois avoir trouvé...
Dans la fonction qui me créer ma ListView j'avais
, j'ai mis
à la place, et fait:
► Afficher le texte
Code : Tout sélectionner
Func _PrintFile()
Local $hFileOpen = FileOpen("Print.txt", 2)
For $i = 0 To _GUICtrlListView_GetItemCount($hListView2)
If _GUICtrlListView_GetItemTextString($hListView2, $i) = "" Then Return
FileWriteLine("Print.txt", _GUICtrlListView_GetItemTextString($hListView2, $i))
Next
FileClose($hFileOpen)
EndFunc
A priori ca à l'air de fonctionner...
Mais si tu as un code beaucoup pour simple pour récuperer et imprimer je suis preneur...

Re: [..] Decteter une ligne vide avec StringRegEXP
Posté : ven. 07 févr. 2014 21:09
par mikell
Heu plus simple non, mais optimisé oui, par exemple n'appeler une fonction qu'une fois au lieu de deux, et n'écrire dans le fichier qu'une fois au lieu de $i fois
► Afficher le texte
Code : Tout sélectionner
Local $txt = "", $n = _GUICtrlListView_GetItemCount($hListView2)
For $i = 0 To $n - 1
$line = _GUICtrlListView_GetItemTextString($hListView2, $i)
If $line = "" Then Return
$txt &= $line & @crlf
Next
Local $hFileOpen = FileOpen("Print.txt", 2)
FileWrite($hFileOpen, $txt)
FileClose($hFileOpen)
et éventuellement corriger
où il me semble vaguement distinguer quelque chose de superflu