Deutsch
SDK-Helfer/ Tools

ModernXProfan

 
- Seite 1 -



Jac
de
Lad
So, jetzt in eigenem Thread.

Hier ist die neuste Version (diesmal mit Quelltext), jetzt mit DragnDrop und erkennt auch Funktionen it Leerzeichen vor dem (. Außer /* und */ müsste jetzt echt alles funktionieren...ich werde mich demnächst mal ransetzen und den unaufgeräumten Quelltext in eine Struktur bringen und das Proggi beschleunigen!

231 kB
Hochgeladen:14.10.2006
Ladeanzahl344
Herunterladen
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
14.10.2006  
 



 
- Seite 2 -



Jac
de
Lad
So, das mit Listbox und Co klappt jetzt, aber nur wenn nicht die Containerfunktion Create() verwendet wird. Außerdem ist der Quelltext nun etwas schneller. Und die Bearbeitung von ; und , in Strings (zum Beispiel a$=s$,f$) ist nun etwas effizienter...

231 kB
Hochgeladen:16.10.2006
Ladeanzahl112
Herunterladen
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
16.10.2006  
 




Jac
de
Lad
@Michael: Das ist keine Ausrede, sondern die Wahrheit. Als ich neulich in Members war habe ich festgestellt, dass ich als vierter von oben aufgelistet werde...mit Wally als Avatar. Keine Ahnung wer das da hingemehrt hat, aber ich wars nicht. Ich hab Wally nur runtergeladen und in Avatar einstellen für mich eingestellt, damit Wally auch in den Posts erscheint.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
16.10.2006  
 




Michael
Wodrich
Mal ganz frech gefragt:

Glaubst Du, daß das einen Anwalt interessiert?
 
Programmieren, das spannendste Detektivspiel der Welt.
16.10.2006  
 




Nico
Madysa
Wenn die GEZ Gebühren von Toten und Haustieren verlangen, dann werden sich auch garantiert Anwälte finden, die die Ausrede in den Boden stampfen werden.

Was das Programm angeht: Top! Beim Testen habe ich keine Fehler gefunden, auch Kommentare werden beim @-Verschlingen in Ruhe gelassen.
 
Nico Madysa
16.10.2006  
 




Jac
de
Lad
@Michael: Sicher, sicher...

@Nico: Danke. Der Quelltext liegt ja bei, wennde willst kannste noch folgendes einbauen:

- Erkennen von Blöcken die durch /* und */ eingeschlossen werden
- Ersetzen des Parameters von Create(Listbox, Create(Sortedlistbox und Create(Choicebox durch Integerwerte (0,1 oder 2; siehe XProfan-10-Hilfe); bzw. Ersetzen von Create(SortedListbox durch Create(Listbox mit Parameter 1 (Sortierung)
- Erkennen von Zeilen mit am Ende (Weiterführung auf der nächsten Zeile

Ich habe immer versucht, dass der Quelltext möglichst nahe ans Original herankommt, aber gerade bei Leerzeichen muss ich da leider Abstriche machen und lasse fast alle entfernen; deshalb sieht der Quelltext nachher leider meistens ganz anders aus: Die Einrückungen sind alle weg. Im Moment weiß ich auch nicht, wie ich das effizient verhindern kann...
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
16.10.2006  
 




Nico
Madysa
Das stelle ich mir nicht gerade einfach vor, aber du könntest einen Stack mitlaufen lassen, der bei proc, while(not/loop), if, etc. erhöht und beiwend, endwhile, endproc, endif, endselect, etc. erniedrigt wird.
Und dann setzt du noch mit sagen wir mal @Space$(stack%) Lerrzeichen davor.
 
Nico Madysa
16.10.2006  
 




Jac
de
Lad
Ähm, das ist mir zu kompliziert...deswegen hab ichs ja noch nicht gemacht. Hab noch ein bisschen aktualisiert...Create(sortedlistbox wird jetzt konsequent in Create(listbox umgewandelt.

231 kB
Hochgeladen:16.10.2006
Ladeanzahl110
Herunterladen
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
16.10.2006  
 




Nico
Madysa
Aaaaaalso, etwas langsamer:
Ich nehme an, ModernXProfan rattert mehr oder weniger zeilenweise durch den Quelltext.
Du überprüfst dann einfach, ob da ein Befehl ist, der ein Einrücken erfordert.
(z.B. while, proc, if, Select, etc). Wenn ein solcher Befehl vorliegt, erhöhst du eine Variable (nehmen wir mal stack%) um 1. In allen anschließend formatierten Zeilen fügst du am Anfang Space(stack%), also stack% Leerzeichen, ein. Findest du dagegen einen Befehl wie EndIf, Wend, EndSelect, EndProc, oder schieß-mich-tot-was-noch, dann wird die Variable stack% um 1 erniedrigt (dec stack%).
So stelle ichs mir vor, ob es klappt ist ne andere Frage.
 
Nico Madysa
16.10.2006  
 



Uralt
KompilierenMarkierenSeparieren
##########################################################################
PRF-Struktur, a Profan OpenSource Project(theFirst?),started april 2004
Copyright (C) 2004 by DS/iF (!ReGeXiT) on (iF@mxii.com)
__________________________________________________________________________
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 1.1
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-
1307, USA.
__________________________________________________________________________
Source changed by: [20040707] [IF] [if@mxii.com] <- added xpse syntax
Source changed by: [DATE] [NICK/NAME] [EML]
Source changed by: [DATE] [NICK/NAME] [EML]
Source changed by: [DATE] [NICK/NAME] [EML]
Source changed by: [DATE] [NICK/NAME] [EML]
##########################################################################
decimals 0
def inv(1) if(@%(1),0,1)
declare s$,cx%,ch$,kl%,ln%,insa%,pre$,infle$,maxinsa%,maxln%,frl%,lnp%

proc _end

    end

endproc

proc printfree

    ifnot frl%

        print #2,
        frl%=1
        add lnp%,1

    endif

endproc

proc printit

    parameters s$
    print #2,s$
    add lnp%,1
    frl%=0

endproc

proc printm

    parameters s$,n%
    print s$,n%
    sleep 1000
    close #1
    close #2
    shell notepad _out_.txt
    waitkey
    end

endproc

windowtitle Struktur V1.0 - Profan
windowstyle 24
window 100,100 - 640,480
frl%=0
lnp%=0
infle$=loadfile$(Profan-Programm:,Profan-Quellcode (*.prf)|*.prf|Alle Dateien (*.*)|*.*)

if len(infle$)

    assign #1,infle$
    reset #1
    assign #2,_out_.txt
    rewrite #2
    locate 1,1
    print Datei:,infle$
    kl%=0
    ln%=0
    insa%=0
    maxinsa%=0
    maxln%=0

    whilenot eof(#1)

        input #1,s$
        s$=translate$(s$,chr$(7),)
        s$=trim$(translate$(s$,chr$(9),))
        add ln%,1

        while or(equ$(chr$(9),mid$(s$,1,1)),equ$(chr$(32),mid$(s$,1,1)))

            s$=del$(s$,1,1)

        wend

        casenot len(trim$(s$)) : continue

        ifnot mod(lnp%,25)

            locate 2,1
            print Zeilen:,lnp%
            print maximale Tiefe:,maxinsa%+1

        endif

        case kl% : printm string parse error in line:,lnp%

        ifnot equ$(mid$(s$,1,3),P +chr$(34))

            cx%=0

            while lt(cx%,len(s$)+1)

                add cx%,1
                ch$=mid$(s$,cx%,1)

                if equ$(,ch$)

                    ifnot kl%

                        s$=mid$(s$,1,cx%-1)

                    endif

                endif

                case equ$(ch$,chr$(34)) : kl%=inv(kl%)

                ifnot kl%

                endif

            wend

            s$:=trim$(s$)
            case equ$(WHILE ,upper$(mid$(s$,1,6))) : printfree
            case equ$(REPEAT,upper$(mid$(s$,1,6))) : printfree
            case equ$(WEND,upper$(s$)) : printfree
            case equ$(UNTIL,mid$(upper$(s$),1,5)) : printfree
            case equ$(ENDWHILE,upper$(s$)) : printfree
            case equ$(WHILENOT ,upper$(mid$(s$,1,9))) : printfree
            case equ$(WHILELOOP ,upper$(mid$(s$,1,10))) : printfree
            case equ$(IF ,upper$(mid$(s$,1,3))) : printfree
            case equ$($IFDEF ,upper$(mid$(s$,1,7))) : printfree
            case equ$($IFNDEF ,upper$(mid$(s$,1,8))) : printfree
            case equ$(IFNOT ,upper$(mid$(s$,1,6))) : printfree
            case equ$(PROC ,upper$(mid$(s$,1,5))) : printfree
            case equ$(SUBPROC ,upper$(mid$(s$,1,8))) : printfree
            case equ$(FUNCTION ,upper$(mid$(s$,1,9))) : printfree
            case equ$(PROCEDURE ,upper$(mid$(s$,1,10))) : printfree
            case equ$(ENDPROC,upper$(s$)) : sub insa%,1
            case equ$(ENDIF,upper$(s$)) : sub insa%,1
            case equ$(ENDIF,upper$(s$)) : printfree
            case equ$($ENDIF,upper$(s$)) : endsub insa%,1
            case equ$($ENDIF,upper$(s$)) : printfree

            if equ$(ELSEIF ,upper$(mid$(s$,1,7)))

                sub insa%,1
                printfree

            elseif equ$(ELSE,upper$(mid$(s$,1,4)))

                printfree
                sub insa%,1

            endif

            case equ$(UNTIL,upper$(mid$(s$,1,5))) : sub insa%,1
            case equ$(WEND,upper$(mid$(s$,1,4))) : sub insa%,1
            case equ$(ENDWHILE,upper$(mid$(s$,1,8))) : sub insa%,1
            case lt(insa%,0) : printm Insafailure in line:,lnp%

            if gt(insa%,maxinsa%)

                maxinsa%=insa%
                maxln%=lnp%

            endif

            pre$=mkstr$(chr$(9),insa%)

            if len(trim$(s$))

                printit add$(pre$,s$)

            endif

            case equ$(REPEAT,upper$(mid$(s$,1,6))) : add insa%,1
            case equ$(WHILE ,upper$(mid$(s$,1,6))) : add insa%,1
            case equ$(WHILENOT ,upper$(mid$(s$,1,9))) : add insa%,1
            case equ$(WHILELOOP ,upper$(mid$(s$,1,10))) : add insa%,1

            if equ$(ELSEIF ,upper$(mid$(s$,1,7)))

                add insa%,1
                printfree

            elseif equ$(ELSE,upper$(mid$(s$,1,4)))

                printfree
                add insa%,1

            endif

            case equ$(PROC ,upper$(mid$(s$,1,5))) : add insa%,1
            case equ$(SUBPROC ,upper$(mid$(s$,1,8))) : add insa%,1
            case equ$(PROCEDURE ,upper$(mid$(s$,1,10))) : add insa%,1
            case equ$(FUNCTION ,upper$(mid$(s$,1,09))) : add insa%,1
            case equ$($IFDEF ,upper$(mid$(s$,1,7))) : add insa%,1
            case equ$($IFDEF ,upper$(mid$(s$,1,7))) : printfree
            case equ$(IF ,upper$(mid$(s$,1,3))) : add insa%,1
            case equ$(IF ,upper$(mid$(s$,1,3))) : printfree
            case equ$(IFNOT ,upper$(mid$(s$,1,6))) : add insa%,1
            case equ$(IFNOT ,upper$(mid$(s$,1,6))) : printfree
            case equ$(WHILENOT ,upper$(mid$(s$,1,9))) : printfree
            case equ$(WHILELOOP ,upper$(mid$(s$,1,10))) : printfree
            case equ$(REPEAT,upper$(mid$(s$,1,6))) : printfree
            case equ$(WHILE ,upper$(mid$(s$,1,6))) : printfree
            case equ$(ENDIF,upper$(s$)) : printfree
            case equ$($ENDIF,upper$(s$)) : printfree
            case equ$(ENDPROC,upper$(s$)) : printfree
            case equ$(WEND,upper$(s$)) : printfree
            case equ$(UNTIL,upper$(mid$(s$,1,5))) : printfree
            case equ$(ENDWHILE,upper$(s$)) : printfree
            case lt(insa%,0) : printm Insafailure in line:,lnp%

        endif

    wend

    close #1
    close #2
    locate 2,1
    print Zeilen:,lnp%
    print maximale Tiefe:,maxinsa%+1,in Zeile,maxln%
    sleep 2000
    shell notepad _out_.txt

endif

end
 
16.10.2006  
 




Jac
de
Lad
Ich blicke hier nicht ganz durch aber es steht euch frei den Quelltext anzupassen und hier zu posten. Welchen Vorteil soll das für mich bringen?
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
18.10.2006  
 




Michael
Wodrich
Na so ein Code-Abhübscher soll den Code lesbar halten. Einrückungen automatisieren, Schlüsselworte in Großschrift wandeln, usw.

Wobei gerade diese Programme eine möglichst große OPTIONEN-Schublade haben sollten, denn die Geschmäcker sind verschieden.

Der eine bevorzugt 2 Leerzeichen zum Einrücken, der andere lieber Tabulatoren....

Der eine will die Schlüsselworte ganz groß (z.B.: GETBVALUE), der andere lieber in dieser Form (GetBValue)....

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
19.10.2006  
 




Michael
Dell
Hallole,

Damit gibts noch ein Problem:
KompilierenMarkierenSeparieren
If Neq(DuplicateHandle(GetCurrentProcess(),hpiperead&,

    GetCurrentProcess(),Addr(htmpread&),0,1,2),0)

Statt:
KompilierenMarkierenSeparieren
If (DuplicateHandle(GetCurrentProcess(),hpiperead&,

    GetCurrentProcess(),Addr(htmpread&),0,1,2) <> 0)

Kommt das heraus:
KompilierenMarkierenSeparieren
If (<>)plicateHandle(GetCurrentProcess(),hpiperead&,

    GetCurrentProcess(),Addr(htmpread&),0,1,2),0)

Nachtrag:   Ist aus ProFellow! (Pipe)

P.S.: Finde dein Programm prima !!!
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
19.10.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

50.649 Betrachtungen

Unbenanntvor 0 min.
Uwe Lang26.05.2023
H.Brill02.05.2023
Jens-Arne Reumschüssel08.07.2022
Klaus Kohlhepp08.02.2021
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie