FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
PanoCrypt Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
PanoCrypt Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
PanoCrypt Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
PanoCrypt Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
PanoCrypt Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
PanoCrypt Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
PanoCrypt Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
PanoCrypt Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
PanoCrypt Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
PanoCrypt Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
PanoCrypt Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
PanoCrypt Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
PanoCrypt Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
PanoCrypt Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
PanoCrypt Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
Boutique Nike : -25% dès 50€ sur TOUT le site Nike avec le code ...
Voir le deal

 

 PanoCrypt

Aller en bas 
4 participants
AuteurMessage
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PanoCrypt Empty
MessageSujet: PanoCrypt   PanoCrypt EmptyMar 12 Oct 2021 - 1:54

AVERTISSEMENT : PanoCrypt fonctionne avec l’objet MEMO et ne peut traiter que du texte brut.

Ne coller pas de texte provenant d’un traitement de texte (Word, Writer, WordPad…). Lors de la copie, le presse-papier embarque avec lui une foule de séquences de contrôle non visibles (taille et police de caractère, saut de page, saut de colonne…) qui pourrait provoquer le dysfonctionnement du programme.



Bonjour à tous !

Suite à l’article de PanoCrypt Lite que vous trouverez en cliquant  >> ici <<, voici la version de PanoCrypt avec la possibilité d’ajouter un mot de passe.

PanoCrypt Pc1_bm10


PanoCrypt est un programme qui permet d’enregistrer un document texte sous forme de fichier image BMP. Ce document texte devient donc totalement illisible. Etant donné que c’est un fichier BMP, on ne se doute pas qu’il y a un texte codé à l’intérieur de l’image.

Dans cette nouvelle version de PanoCrypt, avant l’enregistrement de votre texte, vous pouvez spécifier un mot de passe qui cryptera l’enregistrement.

Le mot de passe est facultatif mais il permet de renforcer la confidentialité du document.

Lors du chargement d’un fichier, si un mot de passe a été utilisé pour l’enregistrer, ce même mot de passe devra être de nouveau renseigné pour décrypter le texte.

Le mot de passe est sensible à la casse.


Description du bandeau de commande en partant de la gauche :

PanoCrypt Pc2_bm10


- 1ère icône : Nouveau document. Crée un nouveau document à crypter.

- 2ème icône : Ouvrir un fichier PanoCrypt. Permet d’ouvrir un fichier stocké sur un disque dur ou une clé USB.

- 3ème icône : Enregistrer le document en cours.

- 4ème icône : Permet de visualiser l’image créée par le cryptage du texte.

- Mot de passe : avant l’enregistrement, vous pouvez spécifier un mot de passe. Dans ce cas, ce mot de passe sera obligatoire pour pouvoir relire le fichier.

- Le pictogramme Œil : Cliquez dessus pour afficher ou cacher le mot de passe.

- 5ème icône : Copier. Copie tout le texte dans le presse-papier.

- 6ème  icône : Coller. Remplace le texte existant par le contenu du presse-papier.

- 7ème icone : Efface le contenu du presse-papier.

Code:
' PanoCrypt
' Marc - octobre 2021

dim nomFichier$, Modif$, reponseUtilisateur%, flagMdP%

label nouveau, ouvrir, enregistrer, renduVisuel, modification, fermerRenduVisuel, redim, afficherMdP, quitter
label copier, coller, viderPressePapier

interfaceUtilisateur()
set_focus 10

end


nouveau:
    subNouveau()
return


sub subNouveau()
    hide 20
    if modif$ = "*" and text$(10) <> ""
        reponseUtilisateur% = message_warning_yes_no("Voulez-vous enregistrer le travail en cours ?")
        if reponseUtilisateur% = 0
            exit_sub
        else
            if reponseUtilisateur% = 1
                 subEnregistrer()
            end_if
        end_if
    end_if
    off_change 10
    modif$ = ""
    nomFichier$ = "Fichier sans nom"
    caption 30,nomFichier$ + modif$
    clear 10
    color 21,255,255,255
    on_change 10,modification
end_sub


ouvrir:
    subOuvrir()
return


sub subOuvrir()
    dim_local enteteFichier%(25), l%, h%
    hide 20

    if modif$ = "*" and text$(10) <> ""
        reponseUtilisateur% = message_warning_yes_no("Voulez-vous enregistrer le travail en cours ?")
        if reponseUtilisateur% = 0
            exit_sub
        else
            if reponseUtilisateur% = 1
                 subEnregistrer()
            end_if
        end_if
    end_if

    off_change 10
    clear 10
    modif$ = ""
    nomFichier$ = "Fichier sans nom"
    caption 30,nomFichier$ + modif$
    
    if object_exists(27) = 0
        open_dialog 27
    end_if    
    
    filter 27,"Fichier PanoCrypt|*.bmp"
    nomFichier$ = file_name$(27)
    
    IF nomFichier$ = "_"
        exit_sub
    end_if

    ' lecture entête fichier
    filebin_open_read 28,nomFichier$
    filebin_block_read 28,25,enteteFichier%(0)    
    filebin_close 28

    ' vérification de la conformité du fichier
    if enteteFichier%(0) <> 66 and enteteFichier%(1) <> 77
        MessageFichierCorrompu()
        exit_sub
    end_if

    l% = hex(hex$(enteteFichier%(21)) + hex$(enteteFichier%(20)) + hex$(enteteFichier%(19)) + hex$(enteteFichier%(18)))
    h% = hex(hex$(enteteFichier%(25)) + hex$(enteteFichier%(24)) + hex$(enteteFichier%(23)) + hex$(enteteFichier%(22)))

    if l% <> h%
        MessageFichierCorrompu()
        exit_sub
    end_if

    width 21,l%
    height 21,h%
    file_load 21,nomFichier$
    
    if text$(12) = ""
        decryptage(l%)
    else
        decryptage2(l%)    
    end_if

    caption 30,nomFichier$ + modif$
    on_change 10,modification
end_sub


sub decryptage(largeur%)
    dim_local x%, y%, caractere$, texte$

    for y% = 0 to largeur% - 1
        for x% = 0 to largeur% - 1
            texte$ = texte$ + chr$(color_pixel_red(21,x%,y%))
            texte$ = texte$ + chr$(color_pixel_green(21,x%,y%))
            texte$ = texte$ + chr$(color_pixel_blue(21,x%,y%))
        next x%
    next y%    

    text 10,texte$
end_sub


sub decryptage2(dimCarre%)
    dim_local x%, y%, caractere$, texte$, cleH$, o1%,o2%,o3%
    cleH$ = genererCleCryptage$(text$(12))
    o1% = hex(left$(cleH$,2))
    o2% = hex(mid$(cleH$,3,2))
    o3% = hex(right$(cleH$,2))
    
    for y% = 0 to dimCarre% - 1
        for x% = 0 to dimCarre% - 1
            texte$ = texte$ + chr$(bin_xor(color_pixel_red(21,x%,y%),o1%))
            texte$ = texte$ + chr$(bin_xor(color_pixel_green(21,x%,y%),o2%))
            texte$ = texte$ + chr$(bin_xor(color_pixel_blue(21,x%,y%),o3%))
        next x%
    next y%    

    text 10,texte$
end_sub


sub MessageFichierCorrompu()
    if message_error_ok("PanoCrypt ne peut pas ouvrir ce fichier !") < 3
    end_if
end_sub


enregistrer:
    subEnregistrer()
return


sub subEnregistrer()
    dim_local b$, longueurnomFichier%, pos%, n%
    hide 20

    if text$(10) = ""
         exit_sub
    end_if    

    if object_exists(26) = 0
        save_dialog 26
    end_if

    filter 26,"Fichier PanoCrypt|*.bmp"
'    dir_dialog 26,
'    file_dialog 26,
    nomFichier$ = file_name$(26)

    if nomFichier$ = "_" or nomFichier$ = ""
        exit_sub
    end_if

    if file_exists(nomFichier$) = 1
        if message_confirmation_yes_no("Le fichier existe. Le remplacer ?") <> 1 THEN EXIT_SUB
    end_if
    
    b$=upper$(nomFichier$)
    
    if file_extract_extension$(b$) <> ".BMP"
        if file_extract_extension$(b$) <> ""
            longueurnomFichier% = len(nomFichier$)
            pos% = instr_right(nomFichier$,".")
            n% = longueurnomFichier% - pos%
            nomFichier$ = left$(nomFichier$,n%)
        end_if
        nomFichier$ = nomFichier$ + ".bmp"
    end_if

    if text$(12) = ""
        encryptage()
    else
        encryptage2()    
    end_if
    
    file_save 21,nomFichier$
    modif$ = ""
    caption 30,nomFichier$ + modif$
end_sub


sub encryptage()
    dim_local texte$, longueurTexte%, carre%, complement%, x%,y%, r%,v%,b%,n%, caractere$
    inactive 0
    texte$ = text$(10)
    ' longueur du texte à chiffrer
    longueurTexte% = len(texte$)
    carre% = int(sqr((longueurTexte%+2)/3)) : ' Klaus
    if (carre%*carre%) < longueurTexte%/3    : ' *** KLaus
        carre% = carre% + 1
    end_if    : ' *** Klaus
    complement% = (carre%*carre%*3)-longueurTexte%
    if complement%>0 then texte$ = texte$ + string$(complement%,chr$(32)) : ' *** Klaus
    height 21,carre%
    width 21,carre%

    if carre% < width_client(20)
        top 21,(height_client(20) - carre%) / 2
        left 21,(width_client(20) - carre%) / 2
    end_if

    2d_target_is 21
    n% = 1
    for y% = 0 to carre% - 1
        for x% = 0 to carre% - 1
            caractere$ = mid$(texte$,n%,1)
            r% = asc(caractere$)
            n% = n% + 1
            caractere$ = mid$(texte$,n%,1)
            v% = asc(caractere$)
            n% = n% + 1
            caractere$ = mid$(texte$,n%,1)
            b% = asc(caractere$)
            n% = n% + 1
            2d_pen_color r%,v%,b%  
            2d_point x%,y%
        next x%
    next y%
    active 0    
end_sub


sub encryptage2()
    dim_local texte$, longueurTexte%, carre%, complement%, x%,y%, r%,v%,b%,n%, caractere$, cleH$, O1%, o2%, o3%
    inactive 0
    cleH$ = genererCleCryptage$(text$(12))
    o1% = hex(left$(cleH$,2))
    o2% = hex(mid$(cleH$,3,2))
    o3% = hex(right$(cleH$,2))
    texte$ = text$(10)
    ' longueur du texte à chiffrer
    longueurTexte% = len(texte$)
    carre% = int(sqr((longueurTexte%+2)/3)) : ' Klaus
    if (carre%*carre%) < longueurTexte%/3    : ' *** KLaus
        carre% = carre% + 1
    end_if    : ' *** Klaus
    complement% = (carre%*carre%*3)-longueurTexte%
    if complement%>0 then texte$ = texte$ + string$(complement%,chr$(32)) : ' *** Klaus
    height 21,carre%
    width 21,carre%

    if carre% < width_client(20)
        top 21,(height_client(20) - carre%) / 2
        left 21,(width_client(20) - carre%) / 2
    end_if

    2d_target_is 21
    n% = 1

    for y% = 0 to carre% - 1
        for x% = 0 to carre% - 1
            caractere$ = mid$(texte$,n%,1)
            r% = bin_xor(asc(caractere$),o1%)
            n% = n% + 1
            caractere$ = mid$(texte$,n%,1)
            v% = bin_xor(asc(caractere$),o2%)
            n% = n% + 1
            caractere$ = mid$(texte$,n%,1)
            b% = bin_xor(asc(caractere$),o3%)
            n% = n% + 1
            2d_pen_color r%,v%,b%  
            2d_point x%,y%
        next x%
    next y%

    active 0    
end_sub


fnc genererCleCryptage$(mdp$)
    dim_local cle24Bits, cleHexa$, c$, p%, i%, j%, t$

    for i% = 1 to len(mdp$)
        c$ = mid$(mdp$,i%,1)
        t$ = t$ + hex$(asc(c$))
    next i%

    p% = 1
    cle24Bits = hex("e959e3")

    for i% = len(t$) to 1 step -2
        c$ = mid$(t$,p%,2)
        cle24Bits = bin_xor(cle24Bits,hex(c$))
        p% = P% + 2
        for j% = 0 to 7
            if bin_and(cle24Bits,hex("000001")) = 1
                cle24Bits = bin_xor(int(cle24Bits/2),hex("5D6DCB"))
            else
                cle24Bits = int(cle24Bits/2)
            end_if
        next j%
    next i%

    cleHexa$ = hex$(cle24Bits)

    while len(cleHexa$) < 6
        cleHexa$ = "0" + cleHexa$
    end_while

    result cleHexa$
end_fnc


modification:
    hide 20
    
    if modif$ = "*"
        return
    else
        modif$ = "*"
    end_if
    
    if nomFichier$ = ""
        nomFichier$ = "Fichier sans nom"
    end_if

    caption 30,nomFichier$ + modif$
return


sub interfaceUtilisateur()
    creerFenetrePrincipale()
    creerBarreIcones()
    creerMemo()
    creerBarreEtat()
    creerFenetreRenduVisuel()
    creerMenuPop()
end_sub


sub creerFenetrePrincipale()
    width 0,width(0) - width_client(0) + 900
    height 0,height(0) - height_client(0) + 665
    left 0,(screen_x - width(0)) / 2
    top 0,(screen_y - height(0)) / 2
    color 0,30,30,30
    font_size 0,12
    caption 0,"PanoCrypt"
    on_resize 0,redim
    on_close 0,quitter
    on_click 0,fermerRenduVisuel
end_sub


sub creerMemo()
    memo 10
    top 10,44
    left 10,8
    width 10,884
    height 10,595
    bar_both 10
    color 10,248,238,208
    font_color 10,0,0,80
    on_change 10,modification
end_sub


sub creerBarreIcones()
    creerIconeNouveauProjet(8,8)
    creerIconeOuvrir(44,8)
    creerIconeSauvegarderProjet(80,8)
    creerIconeRenduVisuel(116,8)
    creerZoneMotDePasse(163,8)
    creerIconeCopier(420,8)
    creerIconeColler(456,8)
    creerIconeViderPressePapier(492,8)
end_sub


sub creerIconeNouveauProjet(x%,y%)
    dim_local i%
    picture 2
    height 2,28
    width 2,28
    top 2,y%
    left 2,x%
    2d_target_is 2
    dessinerFondIcone()
    2d_pen_color 0,0,0
    2d_line 7,5,7,23
    2d_line 7,22,21,22
    2d_line 7,5,16,5
    2d_line 15,5,21,11
    2d_line 20,10,20,23
    for i% = 6 to 21
        2d_flood 8,i%,255,255,255
    next i%
    2d_line 15,5,15,11
    2d_line 15,10,21,10
    cursor_point 2
    hint 2,"Nouveau cryptage"
    on_click 2,nouveau
end_sub


sub creerIconeOuvrir(x%,y%)
    dim_local i%
    picture 3
    height 3,28
    width 3,28
    top 3,y%
    left 3,x%
    2d_target_is 3
    dessinerFondIcone()
    2d_pen_color 0,0,0
    2d_line 16,4,20,4
    2d_point 15,5
    2d_point 20,5
    2d_point 21,6
    2d_line 20,7,23,7
    2d_line 22,5,22,8
    2d_line 5,9,11,9
    2d_line 10,11,21,11
    2d_line 11,16,25,16
    2d_line 5,22,19,22
    2d_line 5,9,5,23
    2d_line 10,9,10,12
    2d_line 20,11,20,17
    2d_line 5,22,12,15
    2d_line 18,22,25,15
    for i% = 10 to 20
        2d_flood 6,i%,255,255,255
    next i%
    for i% = 17 to 21
        2d_flood 11,i%,250,250,0
    next i%
    cursor_point 3
    hint 3,"Ouvrir un fichier PanoCrypt"
    on_click 3,ouvrir
end_sub


sub creerIconeSauvegarderProjet(x%,y%)
    dim_local i%
    picture 4
    height 4,28
    width 4,28
    top 4,y%
    left 4,x%
    2d_target_is 4
    dessinerFondIcone()
    2d_pen_color 0,0,0
    2d_line 7,5,20,5
    2d_line 19,6,21,6
    2d_line 20,7,22,7
    2d_line 7,22,21,22
    2d_line 6,6,6,22
    2d_line 21,7,21,22
    for i% = 6 to 21
         2d_flood 8,i%,0,255,0
    next i%
    2d_rectangle 8,14,20,21
    2d_line 10,16,18,16
    2d_line 10,18,18,18
    2d_rectangle 9,5,18,10
    2d_line 9,6,15,6
    2d_line 9,7,15,7
    2d_line 9,8,15,8
    cursor_point 4
    hint 4,"Enregistrer"
    on_click 4,enregistrer
end_sub


sub creerIconeRenduVisuel(x%,y%)
    picture 5
    height 5,28
    width 5,28
    top 5,y%
    left 5,x%
    2d_target_is 5
    dessinerFondIcone()
    2d_pen_color 77,62,35
    2d_line 10,4,0,23
    2d_line 10,4,20,23
    2d_line 18,9,15,14
    2d_line 18,9,25,22
    2d_rectangle 22,4,24,8
    2d_rectangle 21,5,25,7
    2d_pen_color 255,255,255
    2d_line 18,10,18,13
    2d_line 17,12,20,12
    2d_fill_color 255,255,255
    2d_rectangle 9,7,12,13
    2d_line 8,9,8,13
    2d_line 10,5,10,7
    2d_point 7,11
    2d_point 13,11
    2d_line 12,9,12,13
    2d_pen_color 0,200,0
    2d_point 7,12
    2d_point 13,12
    2d_line 6,13,15,13
    2d_line 6,14,15,14
    2d_line 5,15,16,15
    2d_line 5,16,16,16
    2d_line 4,17,17,17
    2d_line 4,18,17,18
    2d_line 3,19,18,19
    2d_line 3,20,18,20
    2d_line 2,21,19,21
    2d_line 2,22,19,22
    2d_pen_color 0,150,0
    2d_line 17,13,20,13
    2d_line 16,14,21,14
    2d_line 17,15,21,15
    2d_line 17,16,22,16
    2d_line 18,17,23,17
    2d_line 18,18,23,18
    2d_line 19,19,24,19
    2d_line 19,20,24,20
    2d_line 20,21,24,21
    cursor_point 5
    hint 5,"Rendu visuel"
    ON_CLICK 5,renduVisuel
end_sub


sub dessinerFondIcone()
    dim_local i%,r%,v%,b%
    for i% = 0 to 27
        r%=255-(5*i%)
        v%=255-(5*i%)
        b%=255-(5*i%)
        2d_pen_color r%,v%,b%
        2d_line 0,i%,28,i%
    next i%
end_sub


sub creerBarreEtat()
    ALPHA 30
    FONT_SIZE 30,10
    font_color 30,240,240,240
    top 30,HEIGHT_CLIENT(0)-20
    left 30,8
    caption 30," Réalisé en langage Panoramic par Marc - https://panoramic.1fr1.net/"
end_sub


sub creerFenetreRenduVisuel()
    form 20
    width 20,width(20) - width_client(20) + 300
    height 20,height(20) - height_client(20) + 300
    caption 20,"PanoCrypt : Rendu visuel"
    command_target_is 20
    picture 21
    full_space 21
    command_target_is 0
    hide 20
end_sub


sub creerMenuPop()
    main_menu_pop 31
        sub_menu 32
        parent 32,31
        caption 32,"Copier tout le texte dans le presse papier"+CHR$(9)+"Ctrl+ C"
        on_click 32,copier
        
        sub_menu 33
        parent 33,31
        caption 33,"Coller le contenu du presse-papier"+CHR$(9)+"Ctrl+ V"
        on_click 33,coller
        
        sub_menu 34
        parent 34,31
        caption 34,"-"
        
        sub_menu 35
        parent 35,31
        caption 35,"Effacer le contenu du presse-papier"
        on_click 35,viderPressePapier
end_sub


sub creerZoneMotDePasse(x%,y%)
    alpha 11
    top 11,y% + 7
    left 11,x%
    font_color 11,255,255,255
    font_size 11,10
    caption 11,"Mot de Passe :"
    
    edit 12
    width 12,121
    height 12,21
    font_size 12,10
    top 12,y% + 2
    left 12,x% + 90
    
    picture 13
    top 13,y%
    left 13,x% + 212
    width 13,28
    height 13,28
    color 13,30,30,30    
    2d_target_is 13
    2d_pen_color 255,255,255
    2d_line 12,7,17,7
    2d_line 10,8,13,8
    2d_line 16,8,19,8
    2d_line 8,9,11,9
    2d_line 18,9,21,9
    2d_line 7,10,9,10
    2d_line 20,10,22,10
    2d_line 6,11,8,11
    2d_line 21,11,23,11
    2d_line 5,12,7,12
    2d_line 22,12,24,12
    2d_line 4,13,6,13
    2d_line 23,13,25,13
    2d_line 5,14,7,14
    2d_line 22,14,24,14
    2d_line 6,15,8,15
    2d_line 21,15,23,15
    2d_line 7,16,9,16
    2d_line 20,16,22,16
    2d_line 8,17,11,17
    2d_line 18,17,21,17
    2d_line 10,18,13,18
    2d_line 16,18,19,18
    2d_line 12,19,17,19
    ' centre de l'oeil
    2d_line 13,10,16,10
    2d_line 12,11,14,11
    2d_line 15,11,17,11
    2d_line 11,12,13,12
    2d_line 16,12,18,12
    2d_point 11,13
    2d_point 17,13
    2d_line 11,14,13,14
    2d_line 16,14,18,14
    2d_line 12,15,14,15
    2d_line 15,15,17,15
    2d_line 13,16,16,16
    cursor_point 13
    MotDePasseVisibleOuiNon()
    on_click 13,afficherMdP
end_sub


SUB creerIconeCopier(x%,y%)
    DIM_LOCAL i%
    PICTURE 6
    HEIGHT 6,28
    WIDTH 6,28
    TOP 6,y%
    LEFT 6,x%
    CURSOR_POINT 6
    ON_CLICK 6,Copier
    2D_TARGET_IS 6
    dessinerFondIcone()
    2D_PEN_COLOR 0,0,0
    2D_LINE 4,5,13,5
    2D_LINE 12,5,16,9
    2D_LINE 16,9,21,9
    2D_LINE 20,9,24,13
    2D_LINE 23,12,23,24
    2D_LINE 23,23,11,23
    2D_LINE 12,23,12,19
    2D_LINE 12,19,3,19
    2D_LINE 4,19,4,4

    FOR i% = 6 TO 18
        2D_FLOOD 12,i%,255,255,255
    NEXT i%

    FOR i% = 19 TO 22
        2D_FLOOD 13,i%,255,255,255
    NEXT i%

    2D_LINE 11,5,11,10
    2D_LINE 12,9,12,24
    2D_LINE 19,9,19,14
    2D_LINE 6,9,10,9
    2D_LINE 11,9,21,9
    2D_LINE 6,11,13,11
    2D_LINE 6,13,13,13
    2D_LINE 14,13,18,13
    2D_LINE 19,13,24,13
    2D_LINE 6,15,13,15
    2D_LINE 14,15,22,15
    2D_LINE 6,17,13,17
    2D_LINE 14,17,22,17
    2D_LINE 14,19,22,19
    2D_LINE 14,21,22,21
    hint 6,"Copier le texte dans le presse-papier"
END_SUB


SUB creerIconeColler(x%,y%)
    DIM_LOCAL i%
    PICTURE 7
    HEIGHT 7,28
    WIDTH 7,28
    TOP 7,y%
    LEFT 7,x%
    CURSOR_POINT 7
    ON_CLICK 7,Coller
    2D_TARGET_IS 7
    dessinerFondIcone()
    2D_PEN_COLOR 0,0,0
    2D_LINE 11,3,15,3
    2D_POINT 10,4
    2D_POINT 15,4
    2D_LINE 4,5,22,5
    2D_POINT 8,6
    2D_POINT 17,6
    2D_LINE 8,7,18,7
    2D_LINE 4,5,4,22
    2D_LINE 4,21,13,21
    2D_LINE 21,5,21,15
    2D_LINE 20,13,24,17
    2D_LINE 23,16,23,24
    2D_LINE 23,23,11,23
    2D_LINE 12,23,12,11
    2D_LINE 12,12,20,12
    2D_LINE 19,12,19,18
    2D_LINE 19,17,24,17

    FOR i% = 13 TO 22
        2D_FLOOD 13,i%,255,255,255
    NEXT i%

    FOR i% = 14 TO 16
        2D_FLOOD 20,i%,255,255,255
    NEXT i%

    2D_LINE 14,15,18,15
    2D_LINE 14,17,18,17
    2D_LINE 14,19,22,19
    2D_LINE 14,21,22,21

    FOR i% = 6 TO 20
        2D_FLOOD 5,i%,200,150,80
    NEXT i%

    FOR i% = 6 TO 7
        2D_FLOOD 18,i%,200,150,80
    NEXT i%

    2D_FLOOD 20,12,200,150,80
    2D_FLOOD 9,6,120,120,120
    2D_FLOOD 11,4,120,120,120
    hint 7,"Coller le contenu du presse-papier"
END_SUB


sub creerIconeViderPressePapier(x%,y%)
    DIM_LOCAL i%
    PICTURE 8
    HEIGHT 8,28
    WIDTH 8,28
    TOP 8,y%
    LEFT 8,x%
    CURSOR_POINT 8
    ON_CLICK 8,ViderPressePapier
    2D_TARGET_IS 8
    dessinerFondIcone()
    2D_PEN_COLOR 0,0,0
    2d_fill_color 255,255,255
    2d_rectangle 5,5,23,22
    2d_rectangle 9,5,19,8
    2d_point 11,4
    2d_point 16,4
    2d_line 12,3,16,3
    2d_flood 12,4,127,127,127
    2d_flood 10,6,127,127,127
    2d_line 9,9,19,19
    2d_line 10,9,19,18
    2d_line 9,10,18,19
    2d_line 17,9,8,18
    2d_line 18,9,8,19
    2d_line 18,10,9,19
    hint 8,"Effacer le contenu du presse-papier"
end_sub


renduVisuel:
    if show(20) = 0
        show 20
        if text$(12) = ""
            encryptage()
        else
            encryptage2()    
        end_if
    else
        hide 20
    end_if    
return


fermerRenduVisuel:
    hide 20
return


afficherMdP:
    MotDePasseVisibleOuiNon()
return


sub MotDePasseVisibleOuiNon()
    2d_target_is 13
    if flagMdP% = 0
        secret_on 12
        caret_position 12,len(text$(12))
        hint 13,"Afficher le mot de passe"
        flagMdP% = 1
        2d_pen_color 255,0,0
        2d_line 6,5,23,22
        2d_line 7,5,23,21
        2d_line 6,6,22,22
    else
        secret_off 12
        caret_position 12,len(text$(12))
        flagMdP% = 0
        hint 13,"Cacher le mot de passe"
        2d_pen_color 30,30,30
        2d_line 6,5,23,22
        2d_line 7,5,23,21
        2d_line 6,6,22,22
        2d_pen_color 255,255,255
        2d_line 9,9,11,9
        2d_point 10,8
        2d_line 12,11,14,11
        2d_line 15,15,17,15
        2d_line 18,17,20,17
        2d_point 18,18
    end_if    
end_sub


copier:
    clipboard_string_copy text$(10)
return


coller:
    text 10,clipboard_string_paste$
return


viderPressePapier:
    clipboard_string_copy ""
return


sub VerificationPressePapier()
    dim_local a$, tx$
    a$ = clipboard_string_paste$
    if a$ <> ""
        tx$ = "Le presse-papier contient des données !" + chr$(13) + chr$(13)
        tx$ = tx$ + "Voulez-vous effacer le contenu du presse-papier ?"
        reponseUtilisateur% = message_warning_yes_no(tx$)
        if reponseUtilisateur% = 1
            clipboard_string_copy ""
            message "Presse-papier vidé !"
        end_if    
    end_if
end_sub


redim:
    off_resize 0
    width 0,width(0)-width_client(0) + 900
    height 0,height(0)-height_client(0) + 665
    on_resize 0,redim
return


quitter:
    close_inactive
    if modif$ = "*" and text$(10) <> ""
        reponseUtilisateur% = message_warning_yes_no("Voulez-vous enregistrer le travail en cours ?")
        if reponseUtilisateur% = 0
            return
        else
            if reponseUtilisateur% = 1
                 subEnregistrer()
            end_if
        end_if
    end_if
    VerificationPressePapier()
    close_active
return

Et pour finir, je rappelle que PanoCrypt est un logiciel expérimental et gratuit. Personne ne serait être tenu responsable des dommages ou des pertes de données résultant de son utilisation.

Merci aux testeurs de m'indiquer tout dysfonctionnement.

A bientôt !

EDIT du 12/10/2021 23h36 : rectification d'un bug : mise à jour du code-source.

EDIT du 14/10/2021 19h58 : mise à jour du code suivant les recommandations de Klaus + remplacement de l'objet MEMO_RICH par un MEMO.


Dernière édition par Marc le Lun 18 Oct 2021 - 16:10, édité 8 fois
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyMar 12 Oct 2021 - 7:02

Bonjour Marc,

Bravo pour cette réalisation originale qui sort vraiment de l'ordinaire !
Pas encore testé mais ça ne va pas tarder... Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyMar 12 Oct 2021 - 14:49

Là, ça marche super bien.
Chouette petit système de codage original !
Pas si « farfelu » que ça et à conserver
car ça peut-être utile à l'occasion...
cheers
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyMar 12 Oct 2021 - 23:54

Merci JJN4 de ton retour d'expérience.

@ tous :

Je viens de mettre le code-source à jour suite à la découverte d'un bug lors de la relecture du code.





Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyMer 13 Oct 2021 - 15:52

Je ne sais pas si le bug que tu signales est le même que le problème que j'ai trouvé,
mais j'ai essayé de crypter des textes (et non des listings) et j'ai découvert un problème
de codage sur lequel j'étais déjà tombé il y a quelques années quand je codais avec bin_xor.
je crois me rappeler que c'est quand le code ASCII détecté transformé par bin_xor
donne chr$(10) ou chr$(13) (et je crois aussi chr$(0)).
C'est rare, mais ça mutile gravement le texte enregistré.
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyMer 13 Oct 2021 - 17:25

Salut JJN 4 !

Merci pour tes essais.

JJN4 a écrit:
j'ai découvert un problème
de codage sur lequel j'étais déjà tombé il y a quelques années quand je codais avec bin_xor.
je crois me rappeler que c'est quand le code ASCII détecté transformé par bin_xor
donne chr$(10) ou chr$(13) (et je crois aussi chr$(0)).

Non, il n’y a pas de rapport avec le bug que j’ai trouvé.

La fonction BIN_XOR de Panoramic fonctionne parfaitement bien.

Lors de ma batterie de tests, je n’ai jamais rencontré de problème avec les caractères LF (Line Feed, chr$(10) ) et CR (Carriage Return, chr$(13) ). Ils sont correctement restitués après un BIN_XOR().

Je viens de refaire un test avec un fichier court. Dans l’image ci-dessous, dans la partie basse, tu as le dump du fichier test avant cryptage. J’ai surligné les différents LF et CR.
Dans la fenêtre du haut, c’est le dump du même fichier après encodage avec un mot de passe puis décodage. On constate que les LF et CR n’ont pas été altérés. La seule différence entre ces deux dumps est l’ajout à la fin du fichier d’un certain nombre de caractères "Espace" (caractère 32 en décimal soit  20 en hexadécimal), pour que l’image générée par mon programme représente un carré parfait.

PanoCrypt Jjn4_b18


Aurais-tu un petit bout d’un fichier texte (deux ou trois lignes) qui produirait l’anomalie ?
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyMer 13 Oct 2021 - 18:06

Quand j'avais eu des problèmes de cet ordre,
ce n'est pas quand (après transforamtion par bin_xor)
cela donne 0 ou 10 ou 13 isolément, c'est quand ces
nombres se succèdent...
Ce que je peux dire, c'est que sur un fichier très long,
cela donne un résultat très court (quelques lignes) tronqué
un peu partout par de simples morceaux de phrases du texte entier...
scratch


Dernière édition par jjn4 le Ven 15 Oct 2021 - 4:53, édité 1 fois
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyMer 13 Oct 2021 - 22:04

@JJN4

Je pense que tu dépasses les capacités techniques du MEMO_RICH.

Dans ton copier-coller tu as probablement des chaînes de caractères de contrôle qui ne sont pas compatibles avec le MEMO_RICH. C’est ce que j’évoquais avec Froggy One dans un autre post.

D’autre part, si tu souhaites travailler avec des textes très longs, il faut remplacer le MEMO_RICH par un MEMO. C’est la ligne 373 du programme. Il n’y a rien d’autre à modifier.

Gros document = temps de codage et décodage déraisonnablement longs !

Voici quelques résultats de tests effectués avec un fichier texte brut de 63710 lignes.

Le MEMO_RICH n'a supporté que 10734 lignes, et encore cette dernière n’est pas complète :
Spoiler:


La version avec un MEMO au lieu du MEMO_RICH supporte sans broncher les 63710 lignes :
Spoiler:

Toujours avec le MEMO, j’ai crypté ces 63710 lignes sans encombre avec un temps d’attente de près de 10 minutes.
Voici l’image générée par le cryptage :
Spoiler:

Puis j’ai décrypté cette image en une quinzaine de minutes. Le texte était complet, jusqu’à la dernière ligne.

Autre test :
Bien que je sois certain que BIN_XOR n’est aucunement coupable, j’ai quand même fait un test avec un fichier comportant une série successive de dix LF et dix CR. Pas de problème : copier-coller, encodage avec mot de passe, décodage et de nouveau copier-coller pour récupérer le fichier pour effectuer un dump, tout c'est bien passé.

Dans la capture d’écran ci-dessous, nous avons dans fenêtre du bas le fichier test avant traitement et dans la  fenêtre du haut, le même fichier après un cryptage/décryptage. Les séries de dix LF et dix CR sont parfaitement restituées.

Spoiler:

En conclusion :
- Pour les gros documents il faut remplacer le MEMO_RICH de la ligne 373 par un simple MEMO.
- Copier-coller uniquement du texte brut.
- BIN_XOR fonctionne très bien.

Pour les documents comportant autre chose que du texte brut, je vais créer un nouvel utilitaire comme l’a décrit Klaus ici : https://panoramic.1fr1.net/t6672-panocrypt-lite#79933

Bonne soirée à tous !
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyJeu 14 Oct 2021 - 0:16

Ou alors, peut-être, courcircuiter complètement l'affichage dans un MEMO ou MEMO_RICH et lire directement le fichier, en binaire peut-être, et le transformer ainsi, sans passer par un affichage.

C'est peut-être plus frustrant pour les passionnés de l'affichage, mais cela permet de gérer des fichiers de tous types, de toute longueur etc. On peut afficher une barre de progression pendant l'opération pour garder un contrôle visuel...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyJeu 14 Oct 2021 - 0:56

Klaus a écrit:
Ou alors, peut-être, courcircuiter complètement l'affichage dans un MEMO ou MEMO_RICH et lire directement le fichier, en binaire peut-être, et le transformer ainsi, sans passer par un affichage.

Oui, tout à fait Klaus.
Ce nouvel utilitaire est en cours de développement… Plus question d’image, je génère un fichier binaire directement sur le disque dur.

En avant-première, voici la maquette de l’interface utilisateur de la partie chiffrement.

PanoCrypt Poc_bm10

Le fichier crypté pourra avoir un nom différent de l’original et l’extension sera ".poc ".

Le nom original du fichier avec son extension sera crypté et ajouté en entête au fichier .poc.
Ceci permettra lors du déchiffrement de retrouver le nom réel du fichier avec son extension.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyJeu 14 Oct 2021 - 1:23

Parfait ! Prévois dans ton interface visuelle une barre de progression qui sera utile pour les grands fichiers...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyJeu 14 Oct 2021 - 8:25

Salut Marc,

C'est dommage que tu abandonnes l'idée du fichier image, c'était la base de PanoCrypt !

Que tu retires le memo ok mais tu devrais garder le principe de sauvegarde en image.
Sinon il existe plein de logiciels de cryptage ! Après c'est ton choix.

Bon courage pour la suite et à bientôt... Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyJeu 14 Oct 2021 - 12:14

J'ai regardé un peu le source de ton code. J'ai revu un peu le début de la SUB encryoptage(), comme suit:
Code:
sub encryptage()
    dim_local texte$, longueurTexte%, carre%, complement%, x%,y%, r%,v%,b%,n%, caractere$
    inactive 0
    texte$ = text$(10)
    ' longueur du texte à chiffrer
    longueurTexte% = len(texte$)
' *** Klaus    carre% = int(sqr(longueurTexte%/3))
    carre% = int(sqr((longueurTexte%+2)/3)) : ' *** Klaus
' *** Klaus    if (carre%*carre%) <> longueurTexte%/3
    if (carre%*carre%) < longueurTexte%/3    : ' *** KLaus
        carre% = carre% + 1
    end_if    : ' *** Klaus
        complement% = (carre%*carre%*3)-longueurTexte%
' *** Klaus        texte$ = texte$ + string$(complement%,chr$(32))
        if complement%>0 then texte$ = texte$ + string$(complement%,chr$(32)) : ' *** Klaus
' *** Klaus    end_if
    height 21,carre%
    width 21,carre%

Cela joue peut-être à la marge, mais c'est pour le principe...

Ainsi, selon moi, cette partie devient:
Code:
sub encryptage()
    dim_local texte$, longueurTexte%, carre%, complement%, x%,y%, r%,v%,b%,n%, caractere$
    inactive 0
    texte$ = text$(10)
    ' longueur du texte à chiffrer
    longueurTexte% = len(texte$)
    carre% = int(sqr((longueurTexte%+2)/3)) : ' *** Klaus
    if (carre%*carre%) < longueurTexte%/3    : ' *** KLaus
        carre% = carre% + 1
    end_if    : ' *** Klaus
    complement% = (carre%*carre%*3)-longueurTexte%
    if complement%>0 then texte$ = texte$ + string$(complement%,chr$(32)) : ' *** Klaus
    height 21,carre%
    width 21,carre%
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyJeu 14 Oct 2021 - 14:25

Conclusion des essais :
- Les fichiers utilisés sont des textes Word copiés puis collés dans PanoCrypt.
- Les fichiers qui plantent sont tous de longs fichiers.
- Aucun fichier court n'a planté.
- Des fichiers encore bien plus longs que ceux qui ont planté, n'ont pas planté.
- En coupant en deux les fichiers qui ont planté, les deux moitiés ne plantent pas.
Conclusion :
× La longueur des fichiers joue un rôle.
× Mais pas seulement, il y a aussi autre chose...?
× Cela donne quand même un petit côté instable.
× C'est vrai qu'on pourrait mettre un memo à la place du memo_rich, mais ce serait moins joli...
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyJeu 14 Oct 2021 - 14:56

@jjn4:
as-tu essayé la modification que j'ai postée ci-dessus ? Elle joue justement sur la taille du fichier...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyJeu 14 Oct 2021 - 18:11

Désolé, je n'avais pas vu.
Mais je ne comprend pas............
tu proposes deux formules différentes à essayer, c'est cela ?
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyJeu 14 Oct 2021 - 18:19

Non, ce n'est pas ça. J'ai posté 2 fragments de code.

Le premier fragment montre le début de la SUB encryptage(), où j'ai mis en commentaire
les lignes que je souhaite modifier et je les fais suivre d'une ligne montrant
la version corrigée selon mon idée.

Le second fragment montre la même séquence, mais expurgée du code désactivé pour une meilleure lisibilité.

Le sens de cette modification est un calcul plus "correct" de la taille du carré nécessaire pour encrypter le texte. Dans certains cas, il pouvait y avoir des anomalies. C'est pourquoi je te suggérais d'essayer cette version pour le problème que tu constates.

Voici cette SUB au complet:
Code:
sub encryptage()
    dim_local texte$, longueurTexte%, carre%, complement%, x%,y%, r%,v%,b%,n%, caractere$
    inactive 0
    texte$ = text$(10)
    ' longueur du texte à chiffrer
    longueurTexte% = len(texte$)
    carre% = int(sqr((longueurTexte%+2)/3)) : ' Klaus
    if (carre%*carre%) < longueurTexte%/3    : ' *** KLaus
        carre% = carre% + 1
    end_if    : ' *** Klaus
    complement% = (carre%*carre%*3)-longueurTexte%
    if complement%>0 then texte$ = texte$ + string$(complement%,chr$(32)) : ' *** Klaus
    height 21,carre%
    width 21,carre%

    if carre% < width_client(20)
        top 21,(height_client(20) - carre%) / 2
        left 21,(width_client(20) - carre%) / 2
    end_if

    2d_target_is 21
    n% = 1
    for y% = 0 to carre% - 1
        for x% = 0 to carre% - 1
            caractere$ = mid$(texte$,n%,1)
            r% = asc(caractere$)
            n% = n% + 1
            caractere$ = mid$(texte$,n%,1)
            v% = asc(caractere$)
            n% = n% + 1
            caractere$ = mid$(texte$,n%,1)
            b% = asc(caractere$)
            n% = n% + 1
            2d_pen_color r%,v%,b%  
            2d_point x%,y%
        next x%
    next y%
    active 0    
end_sub
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyJeu 14 Oct 2021 - 20:03

Bonsoir à tous !

Suivant  les conseils de Klaus, j'ai mis à jour le code-source de PanoCrypt du premier post. Merci Klaus !

Les deux sub encrypte() et encrypte2() sont modifiées.

Le MEMO_RICH est abandonné au profit d’un MEMO.
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyVen 15 Oct 2021 - 5:17

Oui, super !
Je l'essaie dès demain... enfin aujourd'hui...
Sleep
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyVen 15 Oct 2021 - 16:38

Bilan des essais : ça ne change rien avec cette dernière formule,
le problème est toujours le même.
J'ai (tenté + ou -, car c'est fou comme ce n'est pas facile quand c'est un programme qu'on n'a pas fait soi-même)
rajouté un compteur de lignes et j'ai pu établir que :
- le fichier le plus grand avec lequel ça a bien marché, fait quasiment 2500 lignes.
- le fichier le moins grand avec lequel ça n'a pas marché doit faire un peu plus de 1800 lignes.
- En se donnant un maximum de 1500 lignes, ça marche sans poser de problème.
Bon, c'est une méthode comme une autre.
rabbit
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptySam 16 Oct 2021 - 10:49

Bonjour à tous !

Merci pour tes essais, JJN4.

De mon côté, j’ai effectué de nouveaux tests avec toutes sortes de longueurs de fichiers en texte brut. Pas de problème.

En conclusion, afin de ne pas dépasser les possibilités techniques de l’objet MEMO, je pense qu’il ne faut pas copier-coller autre chose que du texte brut.


Sur mon premier post, j'ai ajouté ceci :

AVERTISSEMENT : PanoCrypt fonctionne avec l’objet MEMO et ne peut traiter que du texte brut.

Ne coller pas de texte provenant d’un traitement de texte (Word, Writer, WordPad…). Lors de la copie, le presse-papier embarque avec lui une foule de séquences de contrôle non visibles (taille et police de caractère, saut de page, saut de colonne…), qui peuvent provoquer le dysfonctionnement du programme.
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptySam 16 Oct 2021 - 17:48

J'ai encore fait des essais et j'ai découvert un bug grave.
C'est que, quand on enregistre en bmp avec mot de passe
un fichier qui existait déjà, il demande si on veut l'écraser,
on répond oui, et malgré cela, alors qu'il semble prendre
le temps d'enregistrer normalement le nouveau fichier,
le résultat est que l'enregistrement final reste celui
de l'ancien fichier.
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyDim 17 Oct 2021 - 1:55

Salut JJN4 !

Merci d'avoir effectué encore des tests.

Citation :
...le résultat est que l'enregistrement final reste celui
de l'ancien fichier.

J'ai essayé à plusieurs reprises, l'ancien fichier est bien écrasé au profit du nouveau.
Je n'arrive pas à reproduire l'anomalie.

Voici en image le déroulement du dernier test que j'ai effectué :

1) je crée un fichier avec un mot de passe.
Spoiler:

2) Pour l'enregistrement, je vais sélectionner le fichier 3.bmp qui est visible dans la copie d'écran ci-après.
Spoiler:

3) Le programme me répond "Le fichier existe. Le remplacer ?"
Spoiler:

4) je clique sur "Oui".
Le fichier est écrasé par le nouveau. Si je demande à charger le fichier 3.bmp, je vois que la miniature du fichier 3.bmp a totalement changé par rapport à ma deuxième copie d'écran ce qui prouve bien que l'ancien fichier a bien été écrasé :
Spoiler:

5) le texte décodé du fichier 3.bmp est bien mon texte que j'ai tapé et encodé en dernier :
Spoiler:

Ai-je bien fait comme toi ? Si oui, je ne vois pas de bug.
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptyDim 17 Oct 2021 - 18:16

Bon, eh bien je ne comprends plus.
Hier, j'avais fait 2 essais qui avaient montré l'erreur que j'ai précisée.
Et j'ai dû effacer l'ancien fichier pour que le programme le reconnaisse
comme nouveau et l'enregistre en bonne et due forme.
Et aujourd'hui, j'ai essayé deux fois et ça n'a plus fait l'erreur ???
Je ne comprends pas...
Désolé si je me suis trompé et t'ai fait des frayeurs inutiles...
affraid
Je revérifierai d'autres fois pour voir si ça le refait...
(c'est souvent dans l'utilisation intempestive que les erreurs apparaissent,
alors qu'elles ont une fâcheuse tendance à se cacher quand on les cherche... Laughing )
alien
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt EmptySam 30 Oct 2021 - 16:21

Entre temps, j'ai pu faire d'autres essais avec panoCrypt.
Pas de problème, ça marche bien, l'erreur que j'avais cru
trouver n'apparaît pas. Autant pour moi !
Embarassed
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Contenu sponsorisé





PanoCrypt Empty
MessageSujet: Re: PanoCrypt   PanoCrypt Empty

Revenir en haut Aller en bas
 
PanoCrypt
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» PanoCrypt Lite

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: