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
» Gestion d'un système client-serveur.
Petit éditeur de textes Emptypar Pedro Aujourd'hui à 10:32

» item_index(résolu)
Petit éditeur de textes Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Petit éditeur de textes Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Petit éditeur de textes Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Petit éditeur de textes Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Petit éditeur de textes Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Petit éditeur de textes Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Petit éditeur de textes Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Petit éditeur de textes Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Petit éditeur de textes Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Petit éditeur de textes Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Petit éditeur de textes Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Petit éditeur de textes Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Petit éditeur de textes Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Petit éditeur de textes Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Apple MacBook Air (2020) 13,3″ Puce Apple M1 – RAM 8Go/SSD 256Go
799 €
Voir le deal

 

 Petit éditeur de textes

Aller en bas 
3 participants
AuteurMessage
JL35




Nombre de messages : 7095
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 : 69
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 : 7095
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 : 7095
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 : 7095
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 : 7095
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
» Cadre pour vos 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: