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.
Petit éditeur de textes Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Petit éditeur de textes Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

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

» Décompilation
Petit éditeur de textes Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Petit éditeur de textes Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Petit éditeur de textes Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Petit éditeur de textes Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Petit éditeur de textes Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Petit éditeur de textes Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Petit éditeur de textes Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Petit éditeur de textes Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Petit éditeur de textes Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Petit éditeur de textes Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Petit éditeur de textes Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Petit éditeur de textes 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
-28%
Le deal à ne pas rater :
-28% Machine à café avec broyeur à grain MELITTA Purista
229.99 € 318.99 €
Voir le deal

 

 Petit éditeur de textes

Aller en bas 
3 participants
AuteurMessage
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Petit éditeur de textes Empty
MessageSujet: Petit éditeur de textes   Petit éditeur de textes EmptyVen 11 Sep 2009 - 21:52

C'est un éditeur minimaliste, et c'est la commande MEMO qui fait tout le boulot, je n'ai fait que rajouter les gadgets autour. C'est un peu un exercice de style, ce n'est pas les éditeurs de texte qui manquent !

Remarques:
- Je n'ai pas encore implémenté la présentation en hexadécimal ('Options') qui n'intéresse sûrement pas grand monde.
- Ni l'impression: il n'y a pas de commande Panoramic pour imprimer, il faut faire appel à un programme externe.
- Pour les polices utilisées, chacun peut faire à sa guise. Je n'ai mis le choix qu'entre deux polices, une proportionnelle (Times) et une fixe (Courier).

Bug constaté:
L'alarme sur 'Fichier non enregistré' se déclenche systématiquement même si on n'a pas modifié le contenu du Memo. Je teste cette modification par la commande ON_CHANGE N,ETIQ, il semble y avoir un problème avec ça.
Pour la gestion de l'alarme: boîte d'alerte, j'ai utilisé les suggestions de Cosmos, merci à lui.

Et voici le code (un peu long, pardonnez-moi)
Code:
Rem *** Minedit.bas éditeur de textes simplifié ***
Label Quitter, Modi, Ficmod, New, Ouvr, Qui, clica
Label DpHexa, nxf, ConvHex
Label Nouveau, Ouvrir, Enreg, Enregs, Impr, Couper, Copier, Coller
Label Ascii, Hexa, Times, Courier, Retour, Sizemoins, Sizeplus
Label Retnou, Retouv, Retenr , Reta, Reth

Dim lf, hf, het, lb, n, f$, nfic, nedi, nvoi, nopt, nmes, modif, Anul, Typ
Dim Police$, Size, hexa, fm$, fh$, fs$, cle, xf, xe, xv, xo, xm
Dim gpol$, gsize, a$, b$, c$, h$, x$, ad, d, lof, i%, j%, lh%, ll%, nld%
Dim bf%, b1%, b2%
Dim LPrint$

modif = 0
lf = 700: hf = 800: het = 14: lb = 60
Police$ = "Times New Roman"
Size = 12
hexa = 0
fm$ = "C:\Temp\Hexa.tmp"
fh$ = "C:\Temp\Hexa.dat"
LPrint$ = "C:\Outils\TxtPrint\TxtPrint.exe "

Top 0, 0: Left 0, 0: Width 0, lf: Height 0, hf

Main_menu 10
Rem **** création du menu principal
xf = 2: Sub_Menu xf: Caption xf, "Fichier": Parent xf, 10
xe = 3: Sub_Menu xe: Caption xe, "Edition": Parent xe, 10
xv = 4: Sub_Menu xv: Caption xv, "Voir": Parent xv, 10
xo = 5: Sub_Menu xo: Caption xo, "Options": Parent xo, 10
Rem **** sous-menu Fichier
xm = 21: Sub_Menu xm: Caption xm, "Nouveau": Parent xm, xf: On_Click xm, Nouveau
xm=xm+1: Sub_Menu xm: Caption xm, "Ouvrir...": Parent xm, xf: On_Click xm, Ouvrir
xm=xm+1: Sub_Menu xm: Caption xm, "Enregistrer": Parent xm, xf: On_Click xm, Enreg
xm=xm+1: Sub_Menu xm: Caption xm, "Enregistrer sous...": Parent xm, xf: On_Click xm, Enregs
xm=xm+1: Sub_Menu xm: Caption xm, "Imprimer...": Parent xm, xf: On_Click xm, Impr
xm=xm+1: Sub_Menu xm: Caption xm, "Quitter": Parent xm, xf: On_Click xm, Quitter
Rem **** sous-menu Edition
xm = 31: Sub_Menu xm: Caption xm, "Couper": Parent xm, xe: On_Click xm, Couper
xm=xm+1: Sub_Menu xm: Caption xm, "Copier": Parent xm, xe: On_Click xm, Copier
xm=xm+1: Sub_Menu xm: Caption xm, "Coller": Parent xm, xe: On_Click xm, Coller
Rem **** sous-menu Voir
xm = 41: Sub_Menu xm: Caption xm, "Ascii": Parent xm, xv: On_Click xm, Ascii
xm=xm+1: Sub_Menu xm: Caption xm, "Hexa": Parent xm, xv: On_Click xm, Hexa
Rem **** sous-menu Options
xm = 51: Sub_Menu xm: Caption xm, "Times New Roman": Parent xm, xo: On_Click xm, Times
xm=xm+1: Sub_Menu xm: Caption xm, "Courier New": Parent xm, xo: On_Click xm, Courier
xm=xm+1: Sub_Menu xm: Caption xm, "": Parent xm, xo: On_Click xm, Retour
xm=xm+1: Sub_Menu xm: Caption xm, "Taille -1": Parent xm, xo: On_Click xm, Sizemoins
xm=xm+1: Sub_Menu xm: Caption xm, "Taille +1": Parent xm, xo: On_Click xm, Sizeplus

Rem **** fenêtre de travail
Memo 1
Top 1, het: Left 1, 2: Width 1, lf-40: Height 1, hf-het-40
Color 1, 248, 248, 255
Bar_Vertical 1
Font_Name 1, Police$: Font_Size 1, Size
On_Change 1, Modi
modif = 0

Open_Dialog 20

Rem **** boîte d'attente (patience...) pour l'hexa
Form 40: Top 40, 100: Left 40, 100: Width 40, 200: Height 40, 80
Hide 40: Border_Hide 40: Color 40, 255, 255, 0: Font_Size 40, 14

Rem **** alarme fichier non enregistré (Form et deux boutons)
bf% = 60
Form bf%: Top bf%, 100: Left bf%, 100: Width bf%, 260: Height bf%, 80
Hide bf%: Border_Hide bf%
Color bf%, 255, 128, 128: Font_Size bf%, 12
b1% = bf% + 1: b2% = b1% + 1
Button b1%: Parent b1%, bf%
Top b1%, 45: Left b1%, 30: Width b1%, 90: Height b1%, 25: Caption b1%, "Annuler"
On_Click b1%, clica
Button b2%: Parent b2%, bf%
Top b2%, 45: Left b2%, 140: Width b2%, 90: Height b2%, 25: Caption b2%, "Continuer"
On_Click b2%, clica

END: Rem --------------- FIN DU PROGRAMME PRINCIPAL --------------------------

Quitter:
If modif = 1
    Typ = 1: Gosub Ficmod: Return
End_If
Qui:
If File_Exists(fm$) = 1 Then File_Delete fm$
If File_Exists(fh$) = 1 Then File_Delete fh$
TERMINATE

Modi:
modif = 1
Return

Ficmod:
Show bf%
Print_Target_Is bf%: Print_Locate 20, 15: Print "FICHIER NON ENREGISTRÉ !"
Return

Nouveau:
If modif = 1
    Typ = 2: Gosub Ficmod: Goto Retnou
End_If
New:
Clear 1
modif = 0
Retnou:
Return

Ouvrir:
If modif = 1
    Typ = 3: Gosub Ficmod: Goto Retouv
End_If
Ouvr:
fs$ = File_Name$(20)
If fs$ = "_" Then Goto Retouv
Clear 1
f$ = fs$
File_Add 1, f$
Caption 0, f$
modif = 0
Retouv:
Return

Enreg:
File_Save 1, f$
modif = 0
Return

Enregs:
fs$ = File_Name$(20)
If fs$ = "_" Then Goto Retenr
File_Save 1, fs$
f$ = fs$
Caption 0, f$
modif = 0
Retenr:
Return

Impr:
Rem EXECUTE LPrint$ + f$
Return

Couper:
ClipBoard_Cut 1
Return

Copier:
ClipBoard_Copy 1
Return

Coller:
ClipBoard_Paste 1
Return

Ascii:
If Hexa = 0 Then Goto Reta
Hexa = 0
Rem If f$ = "" Then Goto Reta
Clear 1
Font_Name 1, gpol$: Font_Size 1, gsize
File_Add 1, fm$
Reta:
Return

Hexa:
If Hexa = 1 Then Goto Reth
Hexa = 1
Show 40 : Print_Target_Is 40
Print: Print "  Conversion Hexa": Print: Print "          Patience svp..."
File_Save 1, fm$: Rem pour avoir l'image exacte de la fenêtre (cas de modifs)
Gosub DpHexa
Hide 40
Clear 1
gpol$ = Police$: gsize = Size: Font_Name 1, "Courier New": Font_Size 1, 9
File_Add 1, fh$
Reth:
Return

Times:
Font_Name 1, "Times New Roman"
Return

Courier:
Font_Name 1, "Courier New"
Return

Retour:
Return

Sizemoins:
If Size > 8 Then Size = Size - 1: Font_Size 1, Size
Return

Sizeplus:
Size = Size + 1: Font_Size 1, Size
Return

clica:
For i% = b1% to b2%
    If Clicked(i%) = 1 Then cle = i%-b1%+1: Rem 1: annuler, 2: confirmé
Next i%
Hide bf%
If cle = 2
    If Typ = 1 Then Goto Qui
    If Typ = 2 Then Goto New
    If Typ = 3 Then Goto Ouvr
End_If
Return

DpHexa:
Rem dump (conversion hexadécimal) dans un fichier Ascii temporaire fh$
ll% = 16: Rem octets par ligne
IF FILE_EXISTS(fh$) = 1 THEN FILE_DELETE fh$
FILEBIN_OPEN_READ 2, fm$: REM ouverture binaire du fichier image
FILE_OPEN_WRITE 3, fh$
lof = FILEBIN_SIZE(2): REM taille du fichier
ad = 0
Rem traitement très long pour un long fichier
nld% = INT(lof/ll%): If FRAC(lof/ll%) > 0 Then nld% = nld% + 1
FOR j% = 1 TO nld%
  IF FILEBIN_POS(2) >= lof THEN GOTO nxf
  d = ad: lh% = 6: GOSUB ConvHex
  a$ = h$ + ": "
  b$ = " ": c$ = ""
  FOR i% = 1 TO ll%
    IF FILEBIN_POS(2) < lof
      FILEBIN_READ 2, d
      x$ = ".": IF d >= 32 THEN x$ = CHR$(d)
      b$ = b$ + x$
      lh% = 2: GOSUB ConvHex
      c$ = c$ + h$ + " "
    END_IF
  NEXT i%
  IF LEN(c$) < ll%*3 THEN c$ = c$ + STRING$(3*ll% - LEN(c$), " ")
  FILE_WRITELN 3, a$ + c$ + b$
  ad = ad + ll%
NEXT j%
nxf:
FILEBIN_CLOSE 2
FILE_CLOSE 3
RETURN

ConvHex:
Rem conversion décimal/hexa de d, résultat h$ sur lh% caractères
h$=""
REPEAT
  h$ = MID$("0123456789ABCDEF", 1+16*FRAC(d/16), 1) + h$
  d = INT(d/16)
UNTIL d <= 0
IF LEN(h$) < lh% THEN h$ = STRING$(lh% - LEN(h$), "0") + h$
RETURN


Dernière édition par JL35 le Dim 13 Sep 2009 - 21:47, édité 2 fois
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Petit éditeur de textes Empty
MessageSujet: Re: Petit éditeur de textes   Petit éditeur de textes EmptySam 12 Sep 2009 - 17:33

Hé bien çà foisonne les codes...

Et je ne m'en plaint pas. JL35 je n'arrive pas à me servir de VOIR ASCII ou HEXA. peus-tu m'expliquer.

A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Petit éditeur de textes Empty
MessageSujet: Re: Petit éditeur de textes   Petit éditeur de textes EmptySam 12 Sep 2009 - 17:42

J'ai édité mon post ci-dessus pour mettre la dernière version du jour, avec quelques modifications cosmétiques mineures, et l'ajout de la visualisation en hexadécimal d'un fichier (Menu 'Voir'), à la demande de Cosmos. Mais je l'aurais mis de toute façon !

Cette conversion en hexa est trop longue pour un long fichier, je pense que c'est dû à la méthode Panoramic d'accès disque octet par octet pour un fichier binaire (contrairement au Basic où on peut lire bloc par bloc de taille voulue).

Je répète que tout est modifiable dans le source, les dimensions de la fenêtre, les polices utilisées, tailles etc

Jean Claude, pas de bol tu as dû charger la version juste avant que je ne mette la nouvelle. Recommence et tu auras l'hexa.

Edit: une précision, pour afficher l'hexa je fabrique un fichier temporaire où j'écris en clair toute la traduction en hexa du fichier, et j'affiche ensuite ce fichier dans le Memo. Ce fichier est chez moi C:\Temp\Hexa.dat.
Il faut donc disposer d'un répertoire C:\Temp, ou changer fh$ à sa guise dans le source (ligne 16).
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

Petit éditeur de textes Empty
MessageSujet: re   Petit éditeur de textes EmptySam 12 Sep 2009 - 19:25

je l'ai essayé, il n'est pas mauvais

georges
@+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Petit éditeur de textes Empty
MessageSujet: Re: Petit éditeur de textes   Petit éditeur de textes EmptySam 12 Sep 2009 - 20:27

Ce serait encore mieux s'il était bon...
Mais il faut plus voir ça comme un exercice de style que comme une révolution dans le traitement de textes.
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

Petit éditeur de textes Empty
MessageSujet: re   Petit éditeur de textes EmptySam 12 Sep 2009 - 20:41

salut

n'empêche que comme exercice de style, je le trouve pas mauvais du tout

georges @+
Revenir en haut Aller en bas
Invité
Invité




Petit éditeur de textes Empty
MessageSujet: Re: Petit éditeur de textes   Petit éditeur de textes EmptyDim 13 Sep 2009 - 0:39

Félicitation, tu te défends bien. Continu à nous étonner.
A+
Revenir en haut Aller en bas
Invité
Invité




Petit éditeur de textes Empty
MessageSujet: Re: Petit éditeur de textes   Petit éditeur de textes EmptyDim 13 Sep 2009 - 4:19

Je regarde de nouveau ton programme, et je sais qu'il est très long avec les accès disque, aussi tu devrais voir si au lieu d'utiliser cette méthode, tu n'aurez pas intérêt à te servir soit d'un tableau dimensionné, je pense que tu connais la syntaxe: par exemple dim a$(500) ou autre, ou alors une autre instruction que tu as utilisé: DLIST ou même provisoirement LIST que tu mettrais dans une forme supplémentaire provisoirement, qui permettrait de visualiser, ce que tu fais, le temps de la mise au point (en cliquant sur la forme suplémentaire, tu vois ta liste tel qu'elle se présente). A ce moment tu utilise la mémoire virtuelle, et là les résultats sont instantanés, normalement. Et pour sauvegarder, une simple instruction (dans le cas de list ou dlist) suffit. Dans le cas de cette solution, il ne faut pas oublier de tester count( de list), s'il n'y a rien, ou si tu retire par item_delete un élément de la liste, count() change et il y a erreur si la lecture d'un élément est absent. Pour ma part dans mon propre programme, j'ai été amené à procéder de cette façon, parce que mid$() était limité à 200, et moi j'avais des lignes de 500, même 800 caractères, j'avais dû revoir toute ma stratégie, mais ça va plus vite. Mais c'est bien pour toi.
A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Petit éditeur de textes Empty
MessageSujet: Re: Petit éditeur de textes   Petit éditeur de textes EmptyDim 13 Sep 2009 - 14:08

Merci pour tes suggestions, mais la lenteur étant uniquement dans le cas de l'affichage en hexa, et celui-ci n'étant sûrement quasiment pas utilisé, je crois que je ne vais pas trop me casser la nénette là-dessus. Et comme Panoramic parlait vaguement de pouvoir lire par blocs dans des fichiers binaires, j'attendrai...
Par contre, suite aux exemples de Georges, j'ai remplacé mon système de menus par List par les main_menu et sub_menu, bien plus simples à gérer, et bien plus élégants. Je n'ai pas encore mis en ligne le source modifié.
Et j'ai paramétré les numéros de menus et sous-menus, ainsi il est bien plus facile d'en intercaler de nouveaux, ou d'en supprimer, ou de changer l'ordre.

EDIT: 13/11 15h45 j'ai mis à jour le source ci-dessus.
Et j'ai mis en Rem la commande d'impression, à chacun de remplacer par la commande de son choix (modifier la variable Lprint$)


Dernière édition par JL35 le Dim 13 Sep 2009 - 21:54, édité 3 fois
Revenir en haut Aller en bas
Invité
Invité




Petit éditeur de textes Empty
MessageSujet: Re: Petit éditeur de textes   Petit éditeur de textes EmptyDim 13 Sep 2009 - 15:43

Ta raison, de même j'avais vite abandonné le menu, qui me prenait trop d'objet, alors que le nombre était limité, par COMBO, qui ne m'en prenait qu'un. J'ai fait juste une proposition pour d'autre programme, en utilisant dim ou dlist, ce qui te permettrais un traitement beaucoup plus rapide, en te servant des outils particuliers de Panoramic. C'est beaucoup plus rapide de se servir de la mémoire vive de l'ordi. Surtout ne te préoccupe pas pour moi, si je trouve cela nécessaire, je ferais mes propres modifications, tout comme j'encourage la même chose sur mes scriptes, qui sont pour moi que des exemples et modifiables. Parmi tous les intervenants sur ce site, on est tous des programmeurs, et je crois capable de modifier un code pour le mettre à sa convenance, et je suis certainement pas le meilleur. On a chacun ses spécissivités et pour ma part, j'interviends à mon niveau, sans plus. J'ai du mal souvent de mettre un commentaire élogieux sur tel ou tel scripte, car je me dis qui je suis?, quelle est ma valeur pour porter un jugement. Je suis comme ça, sans plus.
Bon courage et merci
A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Petit éditeur de textes Empty
MessageSujet: Re: Petit éditeur de textes   Petit éditeur de textes EmptyDim 13 Sep 2009 - 15:50

On s'est croisés tous les deux... Je suis évidemment d'accord avec toi, personne ne donne de leçon à personne, eet bien au contraire il est toujours intéressant de voir comment les autres résolvent les problèmes, certains ont un peu plus de technique, d'autres plus d'imagination, et chacun a sa place.

Et les codes soumis ne demandent qu'à être modifiés, bidouillés et de préférence améliorés !

L'expérience montre que aucun programme n'est parfait, et même si on ne l'est pas au départ, on devient vite modeste en pratiquant !
Revenir en haut Aller en bas
Contenu sponsorisé





Petit éditeur de textes Empty
MessageSujet: Re: Petit éditeur de textes   Petit éditeur de textes Empty

Revenir en haut Aller en bas
 
Petit éditeur de textes
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Petit et léger visualisateur et éditeur de textes
» Editeur de textes
» Editeur EliP 5 : Tiny éditeur Panoramic
» Un petit éditeur
» USING associant nombres et textes

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: