begin process at 2008 07 18 20:08:19
1 212 564 membres
417 nouveaux aujourd'hui
14 164 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EDITEUR DE CODE CASIO GRAPH 25 (MAJ 2)


Information sur la source

Catégorie :Texte Niveau : Débutant Date de création : 07/09/2003 Date de mise à jour : 10/09/2003 16:27:03 Vu / téléchargé: 5 057 / 232

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

c'est juste un editeur pour calculatrice graph 25 avec coloration syntaxique !!
Je l'ai fait un peu a l'arrache donc il se peut k'il y'a un bug !!
Si vous connaissez un systeme plus efficace pour la coloration syntaxique prévenez-moi svp !!

Voila, suite au commentaire de nephix2003, on peut désormait sauver en rtf ce ki permet de garder les couleurs !!!

Il ne reste plus ke la coloration du texte lors de l'ouveryture d'unb fichier a faire(et oui nephix, j'ai tjs po trouver, mais dl la source, g fé kelke modif par rapport a ton code)

Conclusion

PS : j'ai rajouté un petit worms que g fé sur calto au nom de mon 2nd pseudo (pour ceux qui dirait ke c po de moi) !!!
A et au fait, cet éditeur peut s'adapter pour n'importe kel langage et n'importe kel support, il suffit de modifier les fichiers*.ini ds le repertoire !!!
Et un grand merci a nephix2003 ki m'a enormement aidé dans ce projet !
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de Cracker le 07/09/2003 21:41:15

    Commentaires !!!!!

  • signaler à un administrateur
    Commentaire de Renfield le 07/09/2003 23:00:18 administrateur CS

    ca a l'air sympa.
    j'own une source que j'ai faite pour colorier du C++. si tu veux t'en inspirer...

  • signaler à un administrateur
    Commentaire de nephix2003 le 08/09/2003 19:48:00

    ahhhh la bonne vieille casio ... :D  j'ai encore les sources de mes codes, ça me rend presque nostalgique. Dommage que je n'ai pas eu ton éditeur avant ;-)

    Sinon, juste une idée, tu pourrais peut-être mettre un timer qui met à jour régulièrement la coloration ? ça permettrait d'écrire du code et d'avoir la coloration syntaxique en "live".
    Tu pourrais aussi proposer la sauvegarde (et le chargement) en RTF, comme ça tu peux sauver la coloration.

    allez, 9/10

    @++

  • signaler à un administrateur
    Commentaire de Cracker le 08/09/2003 21:35:05

    j'avai déjà pensé au timer mais le pb c k'il change la position du curseur pendant la coloration !!! Je n'ai po encore trouver de solution a ce pb mais je croi po ke ce soit faisable avec un timer. peut-etre dans l'evennement Text1_Change !!! je te remerci kan meme du conseil !
    Sinon pour la sauvegarde en RTF, j'y avai po pensé :) merci pour l'idée !!

    @++

  • signaler à un administrateur
    Commentaire de MrAssoL le 08/09/2003 23:57:33

    wahhhh yeahhh ca fait 3 ans ke j'ai pas touché une game boy ( nom donné par moi pour designer ma casio Graph 100, car je l'ai acheté juste pour jouer !!!! ) sinon le must serai de permettre le transfert sur la casio, j'ai vu le protocol sur le net, je l'ai trouvé facilement donc si ca t'interesse va voir sur google !!! aussi pour le coloriage en directe ca va ralentir ton appli !!! ce qui serai pas mal serait quand on change de ligne là tu met la couleur, avec dans le textbox_keypress, tu peu mettre if keycode = vbkeyreturn then  fonction_couleur ... sur ce je vous laisse !!! oO_MisteR_AssoL_Oo

  • signaler à un administrateur
    Commentaire de nephix2003 le 09/09/2003 01:05:58

    hehe, moi aussi MrAssol, je ne faisais que des jeux dessus :D

    Sinon, pour en revenir au code :
    comme tu dis, Cracker, ton curseur bouge pendant la coloration, c'est exact. Donc...il faut sauvegarder la position du curseur, faire le traitement de couleur, puis restaurer la position

    ...ce qui donne :

    Private m_selStart as Long
    Public Sub TexteCouleur()
        m_selStart = Text1.SelStart ' sauve la position
        .................................... ' mets ton code ici
       Text1.SelSTart = m_selStart ' restaure la position
    End Sub

    Pense à enlever les DoEvents dans ta fonction TexteCouleur(), c pas bon pour la santé ... ;-)

    Ensuite, t'as bien raison, le timer c pas une bonne idée.
    il vaut mieux ajouter un bon vieux Text1_Change :

    Public Sub Text1_Change()
        Call TexteCouleur
    End Sub

    Mais là, l'ennui, c que notre fonction TexteCouleur se retape toutes les lignes, et on voit le texte vibrer.
    MrAssol, le vbkeyreturn, ça pourrait être bien sauf que...t'as un léger souci quand tu décides de revenir sur du texte présent 2-3 lignes avant ta dernière ligne et de le modifier :)  eh oui, pas de vbkeyreturn dans ce cas.
    La solution serait plutôt de détecter quelle ligne vient de changer, quelle que soit la touche que l'on vient de presser.

    Bon alors, Cracker, comme tu m'as rendu nostalgique avec la casio, je me suis creusé les méninges pour te pondre quelque chose de potable : on va écrire une sub CalculIndexes() qui calcule la position du premier caractère de la ligne courante et la position du dernier caractère de cette ligne. Ces valeurs, on les stocke dans 2 Long m_charIndexeStart et m_charIndexeEnd. Dans la fonction TexteCouleur(), on utilise ces 2 bornes pour :
    1) restaurer tous les caractères de la ligne à la couleur noire
    2) réappliquer ton traitement de colorisation seulement sur ces caractères, et non plus sur le texte entier.

    ...ce qui donne ce code :

    Option Explicit
        
    Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal _
        Msg As Long, wParam As Any, lParam As Any) As Long
        
    Const EM_LINEINDEX = &HBB
    Const EM_LINELENGTH = &HC1
        
    Private m_selStart As Long
    Private m_charIndexeStart As Long
    Private m_charIndexeEnd As Long

    Public Sub TexteCouleur()
        
        m_selStart = Text1.SelStart

        Dim J2 As Integer
        Dim J3 As Integer

        Call CalculIndexes
        With Text1
            .SelStart = m_charIndexeStart
            .SelLength = m_charIndexeEnd - m_charIndexeStart + 1
            .SelColor = vbBlack
        End With

        For I = 0 To LongFonction
            J = Text1.Find(Fonction(I), m_charIndexeStart, m_charIndexeEnd)
            Do While J <> -1 ' évite de chercher 2 fois la même chose à chaque tour de boucle
                Text1.SelStart = Text1.Find(Fonction(I), J)
                Text1.SelLength = Len(Fonction(I))
                Text1.SelColor = Fonct.Couleur
                Text1.SelBold = Fonct.Gras
                Text1.SelItalic = Fonct.Ital
                Text1.SelUnderline = Fonct.Soul
                J = Text1.Find(Fonction(I), m_charIndexeStart + J + 1, m_charIndexeEnd)
            Loop
        Next I

        J = -1
        Do While Text1.Find("""", m_charIndexeStart + J + 1, m_charIndexeEnd) <> -1
            J2 = Text1.Find("""", J + 1)
            J3 = Text1.Find("""", J2 + 1) - J2 + 1
            Text1.SelStart = J2
            Text1.SelLength = J3
            Text1.SelColor = Texte.Couleur
            Text1.SelBold = Texte.Gras
            Text1.SelItalic = Texte.Ital
            Text1.SelUnderline = Texte.Soul
            
            J = Text1.SelStart + Text1.SelLength + 1
        Loop
        
        For I = 0 To 9
            J = -1
            Do While Text1.Find(I, m_charIndexeStart + J + 1, m_charIndexeEnd) <> -1
                J = Text1.Find(I, J + 1)
                Text1.SelStart = Text1.Find(I, J)
                Text1.SelLength = 1
                Text1.SelColor = Nbr.Couleur
                Text1.SelBold = Nbr.Gras
                Text1.SelItalic = Nbr.Ital
                Text1.SelUnderline = Nbr.Soul
            Loop
        Next I

        Text1.SelStart = m_selStart

    End Sub

    Private Sub Text1_Change()
        Call TexteCouleur
    End Sub

    Private Sub CalculIndexes()
        Dim IndexeLigne As Long
        Dim LongueurLigne As Integer
        
        IndexeLigne = Text1.GetLineFromChar(Text1.SelStart)
        
        m_charIndexeStart = SendMessage(Text1.hWnd, EM_LINEINDEX, ByVal IndexeLigne, ByVal CLng(0))
        
        LongueurLigne = SendMessage(Text1.hWnd, EM_LINELENGTH, ByVal m_charIndexeStart, ByVal CLng(0))
        
        m_charIndexeEnd = m_charIndexeStart + LongueurLigne
    End Sub

    Et bien sûr, tu remets toutes les autres fonctions/subs que t'as définies.
    Avec ce code, si par exemple t'écris ViewWindow, il va apparaitre en bleu, et si au bout d'un moment tu décides de revenir dessus et d'affcer la lettre 'n' par exemple, ViewWidow va apparaître aussitôt en noir.

    Voilà voilà, y a moyen d'optimiser encore, c clair, mais déjà je pense que ça t'aidera à avancer.

    Bonne continuation :)

    @++

  • signaler à un administrateur
    Commentaire de nephix2003 le 09/09/2003 01:09:35

    PS: j'ai oublié de préciser qu'il te faudra fixer un bug restant sur la colorisation des entiers. Là, g pas le temps de m'y pencher plus en avant.

    voilou

    @++

  • signaler à un administrateur
    Commentaire de Cracker le 09/09/2003 18:12:02

    nephix2003.....franchement chapeau !!!! déjà pour la longueur de ton post ;) et pour ton code !!!!
    Je vé voir ce ke ca donne......merci !!!!!

    PS : c ce ke je cherchai a faire mé g jamais réussi !!

  • signaler à un administrateur
    Commentaire de Cracker le 09/09/2003 18:13:19

    Ha o fait, ma calto elle me sert osi surtt pour les jeus :D

  • signaler à un administrateur
    Commentaire de MrAssoL le 09/09/2003 18:29:08

    moi je faisiat de l'assembleur sur ma graph 100 !!! les jeux etaient (et sont toujours) rapides, y meme les nuances de gris/noir !!!! pour plus d'infos ur les jeux allez voir sur www.graph100.com (c pas mon site !!!!)

  • signaler à un administrateur
    Commentaire de nephix2003 le 09/09/2003 22:13:17

    content que ça te plaise Cracker, merci pour tes remerciements :)
    J'espère que tu vas réussir à finaliser ton éditeur comme tu le souhaites.
    Ensuite, si t'as envie de te déchainer, tu pourrais ajouter une intelligence à ton prog, style faire de la vérification syntaxique en live (à la mode de chez Word), ou encore de l'autoformatting (correction d'indentation, correction de la casse, etc., à la VB quoi).
    Mais bon, là faut être motivé ;-)

    sinon MrAssol, sympa ton site, je connaissais pas.

    @++

  • signaler à un administrateur
    Commentaire de Cracker le 09/09/2003 22:16:34

    oué pk po mé bon déjà là g mi ton systeme (ki marche tres bien) saufke g un pb now !!!! il arrive plus a détecter les textes entre les guillemets !!!!
    Donc pour pousser un peu plus les options va déjà faloir ke je corrige ca !!!

  • signaler à un administrateur
    Commentaire de nephix2003 le 10/09/2003 00:00:05

    je vois. C'est normal, maintenant que l'on gère la colorisation en "live", on a un souci quand on écrit le premier guillemet :
    dans J2 on enregistre la position de ce guillemet, puis dans J3 on cherche la position du 2eme guillemet qui -évidemment- n'existe pas. Donc J3 est négatif et ...boom :)

    Tu peux solutionner le problème en testant J3 :
         if J3 < 0 then exit do   ' quitte le traitement des guillemets

    Et là tu verras que ça marche bien...
    ...enfin presque. Si tu mets un nombre entre tes 2 guillemets, tu risques d'avoir un problème, vu que tu fais un traitement de couleur des nombres après le traitement des guillemets. Nous, on veut que le texte entre guillemets reste rouge, qu'ils contienne des mots-clés ou pas  => il faut faire la colorisation des guillements en toute fin de TexteCouleur.

    Fin de l'histoire? hmm pas vraiment :)
    si on continues à écrire après le 2eme guillemet, la fonte est rouge, italique et en gras, et ça c pas tip-top.
    En fait on aimerait bien revenir à la fonte par défaut. Finalement, tu vois que le problème se pose ailleurs : dès que tu détectes un mot clé, disons par exemple une fonction, tu mets tous ses caractères en bleu et en gras. Mais si tu effaces l'une des lettres ? certes on repasse bien les caractères en noir mais...ils apparaissent encore en gras. Ca non plus c pas tip-top (eh meeerde!)
    Donc faudrait sauvegarder/restaurer pas seulement la position du curseur, mais aussi les infos de fontes.

    enfin bref, pour résumer le tout, ça donne ça :

    Private m_selStart As Long
    Private m_selColor As Long
    Private m_selBold As Long
    Private m_selItalic As Long
    Private m_selUnderline As Long
    Private m_charIndexeStart As Long
    Private m_charIndexeEnd As Long

    Public Sub TexteCouleur()
        
        m_selStart = Text1.SelStart
        m_selColor = Text1.SelColor
        m_selBold = Text1.SelBold
        m_selItalic = Text1.SelItalic
        m_selUnderline = Text1.SelUnderline

        Dim J2 As Integer
        
        Call CalculIndexes
        With Text1
            .SelStart = m_charIndexeStart
            .SelLength = m_charIndexeEnd - m_charIndexeStart + 1
            .SelColor = vbBlack
            .SelBold = False
            .SelItalic = False
            .SelUnderline = False
        End With
        
        For I = 0 To LongFonction
            J = Text1.Find(Fonction(I), m_charIndexeStart, m_charIndexeEnd)
            Do While J <> -1
                Text1.SelStart = Text1.Find(Fonction(I), J)
                Text1.SelLength = Len(Fonction(I))
                Text1.SelColor = Fonct.Couleur
                Text1.SelBold = Fonct.Gras
                Text1.SelItalic = Fonct.Ital
                Text1.SelUnderline = Fonct.Soul
                J = Text1.Find(Fonction(I), m_charIndexeStart + J + 1, m_charIndexeEnd)
            Loop
        Next I
        
        For I = 0 To 9
            J = -1
            Do While Text1.Find(I, m_charIndexeStart + J + 1, m_charIndexeEnd) <> -1
                J = Text1.Find(I, J + 1)
                Text1.SelStart = Text1.Find(I, J)
                Text1.SelLength = 1
                Text1.SelColor = Nbr.Couleur
                Text1.SelBold = Nbr.Gras
                Text1.SelItalic = Nbr.Ital
                Text1.SelUnderline = Nbr.Soul
            Loop
        Next I

        J = Text1.Find("""", m_charIndexeStart, m_charIndexeEnd)
        Do While J <> -1
            J2 = Text1.Find("""", J + 1)
            If J2 < 0 Then Exit Do
            
            With Text1
                .SelStart = J
                .SelLength = J2 - J + 1
                .SelColor = Texte.Couleur
                .SelBold = Texte.Gras
                .SelItalic = Texte.Ital
                .SelUnderline = Texte.Soul
            End With
        
            J = Text1.Find("""", J2 + 1, m_charIndexeEnd)
        Loop

        With Text1
            .SelStart = m_selStart
            .SelColor = m_selColor
            .SelBold = m_selBold
            .SelItalic = m_selItalic
            .SelUnderline = m_selUnderline
        End With
    End Sub


    Bon faut que j'arrete de t'aider, c'est en cherchant qu'on apprend, pas vrai ?
    De toute façon t'as encore du taff :
    - la colorisation des nombres déconne
    - fais un copy/paste d'un mot dans ton textbox : surprise! ;-)
    - quand t'écris juste après le 2eme guillemet, tu vois que ton caractère se confond avec le guillemet, du au fait que ton guillement est penché par l'italique, il recouvre en partie ton nouveau caractère qui n'est pas en italique, c'est pas très agréable
    - ...et puis les fonctions pour rendre encore plus intelligent ton éditeur (indentation, casse, etc etc)

    Voilà voilà

    Enfin, si t'as des questions, t'hésites pas quand même... ;-)

    Bon courage
    @++

  • signaler à un administrateur
    Commentaire de nephix2003 le 10/09/2003 00:40:58

    De retour ;-)
    Il se trouve que mon code a induit une régression dans ton éditeur : si tu charges un fichier ou que tu lances manuellement la colorisation (menu 'Afficher Couleur'), ton programme plante en bouclant sur la première ligne (damned!)

    Bref, j'ai corrigé ça. Je peux copier/coller le code corrigé ici, mais peut-être que tu préfères chercher tout seul l'origine du problème pour t'entrainer ?
    A toi de voir, je te laisse décider, bien que les modifs à faires ne sont pas triviales.
    En tout cas, sache que le code est déjà prêt, donc tu n'as qu'à me demander et aussitôt je le poste ici. Avec ce dernier code que j'ai fait, l'affichage des couleurs se fait ligne après ligne, ce qui fait plutôt sympa :)

    Voilou
    @++

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS