Importation des Donnees d'un Fichier vers le PressePapier

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Importation des Donnees d'un Fichier vers le PressePapier

Message par kernadec »

bjr à tous
Comme il y a pas beaucoup d'exemple pour ce cas :wink:
et que les exemples MDSN en "C" utilisent un tampon via une adresse mémoire
voici un petit code pour copier le contenu d'un fichier vers le Presse papier.
je n'ai pas testé si ce code est plateforme.
Donc, si quelqu'un pouvait confirmer qu'il fonctionne également sur Linux et Mac
Merci

Cordialement

Code : Tout sélectionner

;#################################################################################
;##   Importation des données d'un fichier vers Pressepapier - kernadec 2020-03  ## 
;#################################################################################
Chemin$ = "C:\PureBasic\"
Modele$ = "PureBasic (*.pb; *.pbi)|*.pb;*.pbi|Tous (*.*)|*.*" 
fichier$ = OpenFileRequester("Importation vers Presse Papier",chemin$,Modele$,0)
ClearClipboard()
If ReadFile(0, fichier$)
  While Eof(0) = 0  
    texte$ = ReadString(0)
    SetClipboardText(GetClipboardText() + Left(texte$, Len(texte$)-1) + Chr(13) + Chr(10))
  Wend
  CloseFile(0)
Else
  MessageRequester("Information "," Fichier Inconnu? ")
EndIf
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Importation des Donnees d'un Fichier vers le PressePapie

Message par Marc56 »

Intéressant, à conserver. :wink:

Je propose une amélioration en lisant tout le texte en une seule passe (avec #PB_File_IgnoreEOL) et en détectant en même temps le format (ReadStringFormat(0)) et en supprimant une variable temporaire

Code : Tout sélectionner

  While Not Eof(0)
    SetClipboardText(ReadString(0, ReadStringFormat(0) | #PB_File_IgnoreEOL))
  Wend
(juste pour le 'punch' :P 8) )
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Importation des Donnees d'un Fichier vers le PressePapie

Message par kernadec »

bjr Marc56
Merci, pour l' astuce...
bon, eh ben je vais utiliser l'adage abondance de biens ne nuit pas


j'ajouterais même que c'est ce genre d'astuce qui mériterait d' être
dans le manuel pour la fonction Clipboard

Cordialement
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Importation des Donnees d'un Fichier vers le PressePapie

Message par G-Rom »

Pour ma part, j'aurais fait ainsi pour un gain significatif sur des gros fichiers :
(en remplacement de while/wend )

Code : Tout sélectionner

*buffer = AllocateMemory(Lof(0))
  ReadData(0,*buffer,Lof(0))
  SetClipboardText(PeekS(*buffer,Lof(0),#PB_UTF8 | #PB_ByteLength))
  FreeMemory(*buffer)
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Importation des Donnees d'un Fichier vers le PressePapie

Message par kernadec »

bjr G-Rom
eh ben merci, voilà qui fait une option de plus!

j’espère simplement que la commande Clipboard du manuel PB pourra en profiter
car certaines commandes mériteraient d'avoir quelques exemples et astuces

Cordialement
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Importation des Donnees d'un Fichier vers le PressePapie

Message par kernadec »

bjr à tous
Avec mon code qui utilise une variable temporaire eh bien ca lui donne un petit plus :wink:
il permet d' importer une liste de fichiers à la suite dans le presse papier.

Cordialement

Code : Tout sélectionner


;#########################################################################################################
;##   Importation des données de plusieurs fichiers a la suite vers Presse-papier - kernadec 2020-03  ##
;#########################################################################################################
NewList file.s()

For i=1 To 10
  If CreateFile(0, "Text"+Chr(64+i)+".txt")         ; crée un nouveau fichier texte ou recrée une fichier texte vide s'il existe déjà ...
    
    AddElement(file())
    file()="Text"+Chr(64+i)+".txt"
    
    For a=1 To 10
      WriteString(0, "Chaîne"+Str(a))  ; ajoute 10 chaînes sur la même ligne (le code 'Fin de Ligne' n'est pas ajouté)
    Next
    CloseFile(0)                       ; ferme le fichier précédemment ouvert et enregistre les données
  Else
    MessageRequester("Information","Impossible de créer le fichier!")
  EndIf
Next i


Chemin$ = "C:\PureBasic\"
Modele$ = "PureBasic (*.pb; *.pbi)|*.pb;*.pbi|Tous (*.*)|*.*"
;fichier$ = OpenFileRequester("Importation vers Presse Papier",chemin$,Modele$,0)

ClearClipboard()

ResetList(file())

For i = 1 To 10
  
  NextElement(file())
  fichier$=file()
  
  If ReadFile(0, fichier$)
    
    While Eof(0) = 0 
      texte$ = ReadString(0)
     ; SetClipboardText(GetClipboardText() + Left(texte$, Len(texte$)) + Chr(13) + Chr(10))
       SetClipboardText(GetClipboardText() + texte$ + Chr(13) + Chr(10))
 Wend
    
    ; While Not Eof(0)
    ;     SetClipboardText(ReadString(0, ReadStringFormat(0) | #PB_File_IgnoreEOL))
    ; Wend
    
    CloseFile(0)
  Else
    MessageRequester("Information "," Fichier Inconnu? ")
  EndIf
Next i

alfred47
Messages : 2
Inscription : mar. 31/mars/2020 17:44

Re: Importation des Donnees d'un Fichier vers le PressePapie

Message par alfred47 »

kernadec a écrit :bjr à tous
Avec mon code qui utilise une variable temporaire eh bien ca lui donne un petit plus :wink:
il permet d' importer une liste de fichiers à la suite dans le presse papier.

Cordialement

Code : Tout sélectionner


;#########################################################################################################
;##   Importation des données de plusieurs fichiers a la suite vers Presse-papier - kernadec 2020-03  ##
;#########################################################################################################
NewList file.s()

For i=1 To 10
  If CreateFile(0, "Text"+Chr(64+i)+".txt")         ; crée un nouveau fichier texte ou recrée une fichier texte vide s'il existe déjà ...
    
    AddElement(file())
    file()="Text"+Chr(64+i)+".txt"
    
    For a=1 To 10
      WriteString(0, "Chaîne"+Str(a))  ; ajoute 10 chaînes sur la même ligne (le code 'Fin de Ligne' n'est pas ajouté)
    Next
    CloseFile(0)                       ; ferme le fichier précédemment ouvert et enregistre les données
  Else
    MessageRequester("Information","Impossible de créer le fichier!")
  EndIf
Next i


Chemin$ = "C:\PureBasic\"
Modele$ = "PureBasic (*.pb; *.pbi)|*.pb;*.pbi|Tous (*.*)|*.*"
;fichier$ = OpenFileRequester("Importation vers Presse Papier",chemin$,Modele$,0)

ClearClipboard()

ResetList(file())

For i = 1 To 10
  
  NextElement(file())
  fichier$=file()
  
  If ReadFile(0, fichier$)
    
    While Eof(0) = 0 
      texte$ = ReadString(0)
     ; SetClipboardText(GetClipboardText() + Left(texte$, Len(texte$)) + Chr(13) + Chr(10))
       SetClipboardText(GetClipboardText() + texte$ + Chr(13) + Chr(10))
 Wend
    
    ; While Not Eof(0)
    ;     SetClipboardText(ReadString(0, ReadStringFormat(0) | #PB_File_IgnoreEOL))
    ; Wend
    
    CloseFile(0)
  Else
    MessageRequester("Information "," Fichier Inconnu? ")
  EndIf
Next i


Fonctionne comme un charme
merci pour la mise à jour
Toutes les informations que vous souhaitez connaître sur la manière de sécuriser votre appareil téléphonique sont disponibles ici https://toplogicielespion.com/espionner-whatsapp/ de ce blog https://toplogicielespion.com/flexispy-avis/
Répondre