Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| CLIPBOARD_STRING_COPY: à l'aide ! | |
| | Auteur | Message |
---|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: CLIPBOARD_STRING_COPY: à l'aide ! Ven 10 Sep 2010 - 11:26 | |
| Bonjour à tous ! Cela faisait un petit moment que je n'étais pas allé sur le forum... Je vois que j'ai pas mal de chose à lire !... ça bouge ! Voila j'ai un petit problème, et je n'ai rien trouvé dans le forum concernant ceci : Je voudrais récupérer le contenu d'une liste pour le mettre dans le clipboard. donc je procède ainsi : - Code:
-
a$="" for i%=1 to count(MaListe%) a$=a$+item_read$(MaListe%,i%) next i% clipboard_string_copy a$ comme je souhaite avoir un saut de ligne entre chaque item j'ai rajouté ceci : - Code:
-
a$="": crlf$=chr$(13)+chr$(10) for i%=1 to count(MaListe%) a$=a$+item_read$(MaListe%,i%)+crlf$ next i% clipboard_string_copy a$ mais voila; ça ne marche pas ! je me retrouve avec tous mes items sur la même ligne... Quelqu'un a t-il une idée ? | |
| | | Invité Invité
| Sujet: Re: CLIPBOARD_STRING_COPY: à l'aide ! Ven 10 Sep 2010 - 12:13 | |
| Je jette un coup d'oeil et je vois ton problème. Il ne met pas possible à l'instant de vérifier (rendez-vous), mais 2 choses - je crois que c'est chr$(10)+chr$(13) - ensuite je ne sais plus s'il faut récupérer avec un memo. Regardes. Salut |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: CLIPBOARD_STRING_COPY: à l'aide ! Ven 10 Sep 2010 - 13:54 | |
| @cosmos, c'est bien chr$(13) + chr$(10) @nardo: je ne sais pas ce qu'il y a dans ta List, mais tout est correct si on relit le clipboard dans le notepad par exemple: - Code:
-
DIM MaListe%, a$, i%, crlf$ LIST 1 ITEM_ADD 1,"Au clair de la lune" ITEM_ADD 1,"Mon ami Pierrot" ITEM_ADD 1,"Prête-moi ta plume" ITEM_ADD 1,"Pour écrire un mot" MaListe% = 1
a$="": crlf$=chr$(13)+chr$(10) for i%=1 to count(MaListe%) a$=a$+item_read$(MaListe%,i%)+crlf$ next i% clipboard_string_copy a$ end | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: CLIPBOARD_STRING_COPY: à l'aide ! Ven 10 Sep 2010 - 14:12 | |
| Bonjour !
Merci pour vos réponses.
@cosmos j'ai essayé dans tout les sens chr$(13) + chr$(10) ou chr$(10) + chr$(13) et j'obtiens la même chose...
@JL35
En effet, ton exemple fonctionne. Je n'ai pas trop le temps de regarder maintenant car je dois partir mais je pense qu'il doit y avoir des caractères (genre TAB ou alors des fin de ligne type UNIX) qui font que mon programme ne fonctionne pas...
A+
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: CLIPBOARD_STRING_COPY: à l'aide ! Ven 10 Sep 2010 - 19:28 | |
| J'ai essayé de mon côté. J'ai ajouté un mémo pour récupérer le contenu du presse-papier. Tout est bon - le mémo récupère bien le bon nombre de lignes. C'est l'instruction print qui ignore les CR LF qui sont dans le string a$, comme on peut le voir en haut de l'écran. J'ai ajouté un edit dans lequel je charge a$ : même problème que print: les CRLF sont ignorés. Donc, tout dépend de ce que tu veux faire avec a$ par la suite. a$ contient bien un string avec les CR LF à la bonne place, mais toutes les fonctions ou objets ne sont pas capables de gérer des CR LF dans le string. J'ai d'ailleurs enlevé le CR LF après la dernière ligne de la liste, sinon, le mémo reçoit une ligne blanche ! Voici le source: - Code:
-
dim MaListe%, a$, crlf$, i%
MaListe% = 10
list MaListe% : top MaListe%,100 memo MaListe%+1 : top MaListe%+1,100 : left MaListe%+1,200 edit MaListe%+2 : top MaListe%+2,100 : left MaListe%+2,400 : width MaListe%+2,180 alpha MaListe%+3 : top MaListe%+3,200 : left MaListe%+3,200 item_add MaListe%,"Martin" item_add MaListe%,"Julie" item_add MaListe%,"Frédéric" item_add MaListe%,"Gabrielle" item_add MaListe%,"Laurent"
a$="": crlf$=chr$(13)+chr$(10) for i%=1 to count(MaListe%) a$=a$+item_read$(MaListe%,i%)+crlf$ next i% a$ = left$(a$,len(a$)-2) clipboard_string_copy a$ print a$ print str$(instr(a$,crlf$)) text MaListe%+2,a$ clear MaListe%+1 item_add MaListe%+1,a$ caption MaListe%+3,str$(count(MaListe%+1))+" lignes" end
| |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Sam 11 Sep 2010 - 1:12 | |
| C'est le même problème que celui que j'ai signalé pour les cases d'un grid, https://panoramic.1fr1.net/vos-souhaits-d-amelioration-de-panoramic-f8/grid-t1080.htm(et pour lequel personne n'a trouvé de réponses) Apparemment, ily a des supports qui ne réagissent pas à chr$(13)+chr$(10) comme print ou grid ou button... @Nardo : si tu sors tes données dans un memo, ça fonctionne mais si tu les sors dans un print, ça ne fonctionne pas.
Dernière édition par jjn4 le Sam 11 Sep 2010 - 7:37, édité 1 fois | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: CLIPBOARD_STRING_COPY: à l'aide ! Sam 11 Sep 2010 - 5:35 | |
| Bonjour à tous ! En fait c'est la suite de mon programme de log. voir page 2 : https://panoramic.1fr1.net/a-l-aide-f6/probleme-avec-dimension-du-form-0-et-ou-timer-t1075-15.htmJe récupère un fichier texte dans une liste sur lequel j'ajoute un filtre d'affichage (une sorte de grep en panoramic). J'ai volontairement utilisé une liste et non pas un memo car lorsque je charge un fichier ou que je le réaffiche, il s'écoule une plombe si je le fait dans un mémo : je vois tout mon fichier défiler avant d'avoir à nouveau la main (ce qui n'est pas le cas avec une liste). L'avantage de la liste, c'est que c'est déjà beaucoup plus rapide que le mémo et qu'elle m'affiche un ascenseur vertical tout en restant sur son premier élément. Mon but c'est de pouvoir récupérer (après filtrage) le contenu de cette liste dans le presse-papier. Je n'utilise pas de commande print. Là où je ne pige pas encore, c'est que l'exemple de JL35 fonctionne... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: CLIPBOARD_STRING_COPY: à l'aide ! Sam 11 Sep 2010 - 8:01 | |
| Bon là je sèche vraiment ! J'ai fait un petit programme qui résume en gros ce que doit faire mon prog, et là ça marche ! Je dois pas avoir les zeuilles en face des trous ! Ce bout de code fonctionne ! - Code:
-
label Clair2Lune dim ListBuffer% :ListBuffer%=20 dim ListBuffer2%:ListBuffer2%=21 dim ListFiltre% :ListFiltre%=22 dim FichierTemp$:FichierTemp$="C:\Clair2Lune.txt" dim del:del=0 if File_exists(FichierTemp$)=0 then gosub Clair2Lune
dim crlf$: crlf$=chr$(13)+chr$(10) dim i%,ligne$,copy$
DLIST ListBuffer% : FILE_LOAD ListBuffer%,FichierTemp$ DLIST ListBuffer2% LIST ListFiltre% : Full_space ListFiltre%
clear ListBuffer2%: clear ListFiltre% for i%=1 to count(ListBuffer%) ligne$=item_read$(ListBuffer%,i%) item_add ListBuffer2%,ligne$ next i%
for i%=1 to count(ListBuffer2%) item_add ListFiltre%,item_read$(ListBuffer2%,i%) next i%
copy$="" for i%=1 to count(ListFiltre%) copy$ = copy$ + crlf$ + item_read$(ListFiltre%,i%) next i% clipboard_string_copy copy$ ' test spécial pour admirateur de Pierrot ' n'est-ce pas JL35 ? ;) if (del=1) then file_delete FichierTemp$ end ' *******************************************************
' pour les feignants... ;) Clair2Lune: del=1 file_open_write 1,FichierTemp$ file_writeln 1,"Au clair de la lune" file_writeln 1,"Mon ami Pierrot" file_writeln 1,"Prête moi ta plume" file_writeln 1,"Pour écrire un mot" file_close 1 return Celui-la : non ! Tout se passe dans la procédure 'Filtre', le reste c'est de l'habillage... Je vois vraiment pas ce qui cloche!!! - Code:
-
hide 0 caption 0,"Log Analyser" dim Verbose%:Verbose%=1
label FinProg,Open_log,Filtre label TimerEvent,Resize label SearchParam,
label Plage : dim Plage_return%,Plage_param$ label Search : dim Search_return% label Copy : dim Copy$
' ------------------------------------------------------- ' Définition des numéros d'objets ' -------------------------------------------------------
if Verbose% = 1 dim FormDebug%:FormDebug%=1 dim ListDebug%:ListDebug%=2 end_if dim crlf$: crlf$=chr$(10)+chr$(13)
dim EditFiltre%:EditFiltre%=10 dim TextFiltre%:TextFiltre%=11 dim SelectFile%:SelectFile%=12 dim EditPlage% :EditPlage% =13 dim TextPlage% :TextPlage% =14 dim EditPlage2%:EditPlage2%=15 dim TextPlage2%:TextPlage2%=16 dim TrackBar% :TrackBar% = 17
dim ButtonLoad%:ButtonLoad%=100 dim ButtonQuit%:ButtonQuit%=101 dim ButtonCopy%:ButtonCopy%=102
dim ListBuffer%:ListBuffer%=200 dim ListBuffer2%:ListBuffer2%=201 dim ListFiltre%:ListFiltre%=202 dim MainTimer% :MainTimer% =203
' ------------------------------------------------------- ' Déclaration des variables ' ------------------------------------------------------- dim Plage_start%,Plage_end%
dim fichier$,filtre$,ligne$ dim i% dim params$,TabParam$(10,2),j%,k% dim Search_i%,Search_j% dim ClientH,ClientW,OldClientH,OldClientW dim Boucle%:Boucle%=0
' ---- Init des variables ClientW=0:ClientH=0 OldClientW=1:OldClientH=1
' ------------------------------------------------------- ' Déclaration des objets ' -------------------------------------------------------
' ---- IHM open_dialog SelectFile%: filter SelectFile%,"Log Files|*.log|Text Files|*.txt|All Files|*.*" button ButtonLoad%:caption ButtonLoad%,"Open":top ButtonLoad%,height(ButtonLoad%)*2:left ButtonLoad%,5 button ButtonCopy%:caption ButtonCopy%,"Copy":top ButtonCopy%,top(ButtonLoad%)+height(ButtonLoad%)+5:left ButtonCopy%,5 button ButtonQuit%:caption ButtonQuit%,"Exit":top ButtonQuit%,top(ButtonCopy%)+height(ButtonCopy%)+5:left ButtonQuit%,5
dlist ListBuffer% : ' Liste initiale contenant le fichier de log dlist ListBuffer2%: ' Liste après 1er filtrage
list ListFiltre% : ' Liste affichée left ListFiltre%,left(ButtonLoad%)+width(ButtonLoad%)+10 width ListFiltre%,width(0)-left(ListFiltre%)-15 height ListFiltre%,height(0)-top(ListFiltre%)-40
edit EditFiltre%:left EditFiltre%, left(ListFiltre%) : width EditFiltre%,width(ListFiltre%) alpha TextFiltre%:caption TextFiltre%,"Filter :":top TextFiltre%,5 : left TextFiltre%, left(EditFiltre%)-width(TextFiltre%)-10
alpha TextPlage%:left TextPlage%,left(EditFiltre%):caption TextPlage%,"Start : ":top TextPlage%,top(EditFiltre%)+height(EditFiltre%)+10 edit EditPlage%:left EditPlage%,left(TextPlage%)+width(TextPlage%)+10:top EditPlage%,top(EditFiltre%)+height(EditFiltre%)+5 alpha TextPlage2%:left TextPlage2%,left(EditPlage%)+width(EditPlage%)+20:caption TextPlage2%,"End : ":top TextPlage2%,top(EditFiltre%)+height(EditFiltre%)+10 edit EditPlage2%:left EditPlage2%,left(TextPlage2%)+width(TextPlage2%)+10:top EditPlage2%,top(EditFiltre%)+height(EditFiltre%)+5
top ListFiltre%,top(EditPlage%)+height(EditPlage%)+5 timer MainTimer% : timer_interval MainTimer%,100
' ------------------------------------------------------- ' Définition des actions à lancer sur évènements : ' ------------------------------------------------------- on_click ButtonLoad%,Open_log on_click ButtonQuit%,FinProg on_click ButtonCopy%,Copy on_change EditFiltre%,Filtre on_close 0,FinProg
' ---- Debug if (Verbose% = 1) form FormDebug% memo ListDebug%:parent ListDebug%,FormDebug% : full_space ListDebug% caption FormDebug%,"Debug" end_if
' ---- Affichage du formulaire principal left 0,(screen_x - width(0))/2 top 0,(screen_y - height(0))/2 show 0 on_timer MainTimer%,TimerEvent
END
' ***************************************************************************************** ' * FIN D'INITIALISATION DU PROGRAMME ' *****************************************************************************************
FinProg: Boucle%=1 Terminate
TimerEvent: Timer_off MainTimer% if (ClientW <> width(0) or ClientH <> height(0)) then gosub Resize ClientW = width(0) : ClientH = height(0) Timer_on MainTimer% return
Resize: if (width(0) > left(ListFiltre%)) then width ListFiltre%, width(0)-left(ListFiltre%)-10 if (height(0) > (top(ListFiltre%)+40)) then height ListFiltre%, height(0)-top(ListFiltre%)-40 width EditFiltre%,width(ListFiltre%) return
' ------------------------------------------------------- ' Ouverture du fichier de log ' ------------------------------------------------------- Open_log: fichier$ = FILE_NAME$(SelectFile%) if (fichier$ <> "_") FILE_LOAD ListBuffer%,fichier$ gosub Filtre end_if return
' ----------------------------------------------------------------------------------------- ' ----------------------------------------------------------------------------------------- Copy: Copy$="" for i% = 1 to count(ListFiltre%) Copy$ = Copy$ + crlf$ + item_read$(ListFiltre%,i%) next i% clipboard_string_copy Copy$ return
' ----------------------------------------------------------------------------------------- ' Procédure de mise à jour de l'affichage de la liste en fonction des paramètres de filtre. ' - appelée sur évènement on_change ou après chargement du fichier log ' ListBuffer% contient le fichier original ' ListBuffer2% contient le fichier après traitement du filtre params$ ' ListFiltre% contient ListBuffer2% après traitement des plages horaires ' ----------------------------------------------------------------------------------------- Filtre: params$ = text$(EditFiltre%): gosub SearchParam clear ListFiltre% : clear ListBuffer2%
for i%=1 to count(ListBuffer%) ligne$ = item_read$(ListBuffer%,i%) ' Si pas de paramètres de filtrage, on ajoute la ligne if (val(TabParam$(0,1)) = 0) item_add ListBuffer2%,ligne$ ' sinon on regarde par rapport aux critères du filtre else gosub Search if (Search_return%<>0) then item_add ListBuffer2%,ligne$ end_if next i%
' On filtre par rapport à une éventuelle plage horaire if (count(ListBuffer2%) <> 0) Plage_param$ = text$(EditPlage%) if (len(Plage_param$) <> 0) gosub Plage : Plage_start% = Plage_return% else if (Verbose%=1) then item_add ListDebug%,"Pas d'horaire de début" end_if Plage_param$ = text$(EditPlage2%) if (len(Plage_param$) <> 0) gosub Plage : Plage_end% = Plage_return% else if (Verbose%=1) then item_add ListDebug%,"Pas d'horaire de fin" end_if for i% = 1 to count(ListBuffer2%) if ((Plage_start% <> 0) or (Plage_end%<>0)) : ' si plage horaire de définie ' manque test si horaire en début de ligne... Plage_param$ = left$(item_read$(ListBuffer2%,i%),8) : gosub Plage if ( (Plage_return% > Plage_start%) and (Plage_return% < Plage_end%)) then item_add ListFiltre%,item_read$(ListBuffer2%,i%) else item_add ListFiltre%,item_read$(ListBuffer2%,i%) end_if next i% end_if return
' ------------------------------------------------------- ' Conversion d'un horaire "HH:MN:SS" en valeur numérique ' ------------------------------------------------------- Plage: if (Verbose% = 1) then item_add ListDebug%,"Plage: param ->"+Plage_param$ Plage_return% = (val(left$(Plage_param$,2))*3600)+(val(mid$(Plage_param$,4,2))*60)+(val(right$(Plage_param$,2))) if (Verbose% = 1) item_add ListDebug%,str$(Plage_return%) item_add ListDebug%, "---------------------------------------" end_if return
' ------------------------------------------------------- ' ------------------------------------------------------- Search: Search_return% = instr(ligne$,TabParam$(1,0)) for Search_i% = 2 to val(TabParam$(0,1)) if (TabParam$(Search_i%-1,1) = "&") if (instr(ligne$,TabParam$(Search_i%,0)) = 0) Search_return%=0 exit_for end_if end_if if (TabParam$(Search_i%-1,1) = "|") Search_return% = Search_return% + instr(ligne$,TabParam$(Search_i%,0)) end_if if (TabParam$(Search_i%-1,1) = "") if (instr(ligne$,TabParam$(Search_i%,0)) = 0) if (Search_return% = 1) then Search_return% = Search_return% + 1 else Search_return% = 0 end_if end_if next Search_i% return
SearchParam: ' raz du tableau de paramètre for i% = 0 to 10: TabParam$(i%,0)= "" : TabParam$(i%,1) = "" : next i% if (len(params$) = 0) TabParam$(0,1) = "0" return end_if TabParam$(0,1) = "1" : j% = 0 for i% = 1 to len(params$) if (mid$(params$,i%,1) = "&") or (mid$(params$,i%,1) = "|") or (mid$(params$,i%,1) = "") TabParam$(val(TabParam$(0,1)),1) = mid$(params$,i%,1) TabParam$(0,1) = str$(val(TabParam$(0,1))+1) else TabParam$(val(TabParam$(0,1)),0) = TabParam$(val(TabParam$(0,1)),0) + mid$(params$,i%,1) end_if next i% if (Verbose% = 1) Item_add ListDebug%,"Nb de paramètre :"+TabParam$(0,1) Item_add ListDebug%, TabParam$(1,0)+" = "+TabParam$(1,1) Item_add ListDebug%, TabParam$(2,0)+" = "+TabParam$(2,1) Item_add ListDebug%, "---------------------------------------" end_if return si on fait l'essai en chargeant Clair2Lune.txt avec ce prog, sans rien toucher d'autre, ça ne fonctionne pas... j'ai pas mes retours de ligne.... | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Sam 11 Sep 2010 - 8:12 | |
| Je ne sais pas où tu vois que l'exemple de JL35 fonctionne ? Reprise de l'exemple en question, mais modifié : - Code:
-
DIM a$, i%, crlf$ , b$ LIST 1 : top 1,200 : width 1,400 memo 2 : height 2,180 ITEM_ADD 2,"Au clair de la lune" ITEM_ADD 2,"Mon ami Pierrot" ITEM_ADD 2,"Prête-moi ta plume" ITEM_ADD 2,"Pour écrire un mot" alpha 3 : left 3,200 : caption 3,"memo" alpha 4 : left 4,410 : top 4,200 : caption 4,"list"
a$="": crlf$=chr$(13)+chr$(10) for i%=1 to count(2) a$=a$+item_read$(2,i%)+crlf$ next i% clipboard_string_copy a$ b$=clipboard_string_paste$ item_add 1,b$ item_add 2,b$ a$="Bonjour"+crlf$+"Monsieur" clipboard_string_copy a$ b$=clipboard_string_paste$ item_add 1,b$ item_add 2,b$ end
En fait, ça ne marche jamais avec list. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: CLIPBOARD_STRING_COPY: à l'aide ! Sam 11 Sep 2010 - 8:20 | |
| Bonjour jjn4,
Dans l'exemple de JL35, en fait si tu ouvres le bloc-note tu te rend compte que les CRLF sont bien conservés. Dans une liste non car cela voudrait dire que le CRLF remplace un item_add. C'est pour cela qu'il est ignoré dans une liste.
Le truc c'est qu'au final je viens lire une liste item après item, que je les stocke dans une chaine de caractère (et non pas un mémo ou une autre liste) en prenant soin de les séparer par crlf$... donc au final dans ma chaine de caractère je dois avoir : item1+crlf$+item2+crlf$+...
Le but est de pouvoir récupérer le contenu du clipboard pour le coller dans un mail, un document word, etc...
| |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Sam 11 Sep 2010 - 8:44 | |
| A la ligne 22 tu as mis chr$(10)+chr$(13) à la place de chr$(13)+chr$(10) Ca ne marche pas dans les 2 sens. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: CLIPBOARD_STRING_COPY: à l'aide ! Sam 11 Sep 2010 - 8:51 | |
| Yes !!!!!Je comprend pas... cosmos me l'avait bien dis et je suis persuadé d'avoir essayé l'inverse... j'ai du entre-temps modifier autre chose... Merci jjn4 car je commençais à devenir dingue avec ce truc ! | |
| | | Invité Invité
| Sujet: Re: CLIPBOARD_STRING_COPY: à l'aide ! Sam 11 Sep 2010 - 9:37 | |
| Bonjour Je vois plein de chose sur ce post ce matin. Je ne peux pas regarder en détail tout cela, je n'arrive déjà pas à faire mes programmes vu le nb de choses que.. bref. J'ai déjà eu ce problème. J'ai finalement fait avec une liste, mais pas directement. La chaine de récupération je l'ai traité pour ensuite faire des item_add list. Avec une boucle repeat until, je cherche les sauts de lignes (et là 10 et 13 ont une importance) pour séparer chaque morceau. C'est le plus rapide. Mais j'ai pas le temps pour cela. Tu sais programmer, et je pense que tu comprends comment faire avec instr.
Désolé mais je dois fermer. |
| | | Contenu sponsorisé
| Sujet: Re: CLIPBOARD_STRING_COPY: à l'aide ! | |
| |
| | | | CLIPBOARD_STRING_COPY: à l'aide ! | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |