| |
|
|
- Seite 1 - |
|
HofK | Wichtiger Hinweis! Die folgenden Beiträge beziehen sich auf ursprüngliche Versionen von AndroidProfan/Infinity-Profan aus dem Jahr 2015 und sind damit inhaltlich/syntaktisch veraltet und somit nicht lauffähig. (15.01.2016)
_____________________________________________________________
Musste einfach mal trocken testen, wie AndroidProfan - neuer Name Infinity-Profan - sich so coded. In meiner Programmiersteinzeit durfte ich in sauberen großen Druckbuchstaben ein Programmformular beschreiben. Und dann nach persönlicher Abgabe ein, zwei Tage auf die lange gedruckte Fehlerliste warten. Die Steinzeitheimwerker mussten ja auch mit 'nem Faustkeil zurechtkommen.
Jetzt ganz soft getippt und per Netz in alle Welt verbreitet. Mal sehen, was heutzutage so zurückkommt.
Erster Eindruck: ordentlich tabuliert (kommt in der Codebox nicht voll rüber) ist das übersichtlich. Könnte mich glatt damit anfreunden und notfalls auf die Anfänger api verzichten.
Update: Siehe IF-Fehlerfindung unten, aber wohl doch bestanden? Damit sich Fehler nicht verbreiten, habe ich sie markiert und verbessert. Das Pi sooo lang ist - darauf falle ich garantiert nochmal rein.
Die Farben hatte ich bewußt mal rgb() und mal als Konstanten in Internetfarben #hexhexhex angegeben. Dazu hatte ich noch nichts näheres entdeckt oder übersehen ($ Notation). Wäre aber praktisch, die HTML- Notation optional nutzen zu können.
Update: Code ungültig Da die Syntax für gui geändert wurde ist der Code ungültig. Wird demnächst auf den aktuellen Stand gebracht. Ist erfolgt, siehe weiter unten.
Kreisfläche
// Programm Kreisfläche
var headl = "Das erste AndroidA Programm"
var stat = "Status: Kreis"
var kfl = 0.0
var grg = gui( gui.add, gui.grid, gui.hwnd, [3,4] )// GrundRasterGrid
var h_txt = gui( gui.add, gui.text, grg[2,1], headl )// Textcontrol für Überschrift setzen
var m_txt = gui( gui.add, gui.text, grg[2,2], kfl )// Textcontrol Hauptzelle
var s_txt = gui( gui.add, gui.text, grg[2,3], stat )// Textcontrol für internen Status
//----------------------------------------------------
gui gui.mod, gui.bgcolor, gui.hwnd, rgb(192,192,192)// Grundfarbe silver (dezent grau)
gui gui.mod, gui.width, grg, [8,84,8]// Spaltenbreiten prozentual
gui gui.mod, gui.height, grg, [12,70,10,8]// Zeilenhöhen prozentual
gui gui.mod, gui.textcolor, h_txt, rgb(150,191,61)// Überschrift in androidem Grün #96bf3d
gui gui.mod, gui.bgcolor, grg[2,2], rgb(255,255,155)// Hauptzelle gelblich
gui gui.mod, gui.bgcolor, grg[2,3], $e7e7e7// Statuszelle hellgrau
gui gui.mod, gui.textcolor, s_txt, rgb(255,0,0)// roter Statustext
msgbox 0,"Radius","Kreisberechnung","OK","1.0",kflaeche// Interaktion Eingabe
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc kflaeche(txt)
// falsch: kfl = math.pi*(float(txt))^2
kfl = math(math.pi)*float(txt)^2// Korrekturen IF
// falsch: gui gui.text, m_txt, "Die Kreisfläche beträgt\nA = " + str(kfl)
gui gui.mod, gui.text, m_txt, "Die Kreisfläche beträgt\nA = " + str(kfl)// ... Ausgabe
endproc
|
|
|
| |
|
|
|
| |
|
- Seite 3 - |
|
HofK |
Fehler bei width/height - siehe unten bei 08.03.2015
Nachtrag: Die Zeilen 15 bis 20 dürfen in der aktuellen Fassung von InfinityProfan am Ende kein \ enthalten!
Mode AutoHotKey ( [...] ) ist sicher der beste Ausgangspunkt bei einer neuen Sprache, wenn sie nicht einer vorhandenen sehr ähnlich ist. Das Theme ist eine andere Sache. Fummelt man ein wenig in den Teilen rum, aus denen die endgültigen Regulären Ausdrücke gebildet werden und letztendlich über Javascript HTML, CSS span, class manipuliert werden (überaus komplexes System) kann man Feinheiten anpassen.
Bei AutoHotKey war ; für Kommentarzeile voreingestellt, habe z.B. // daraus gemacht. /// funktioniert auch, wäre aber sehr unüblich.
this.$rules = { start: [ { token: 'comment.line.ahk', regex: '(?:^| )//.*$' }, { token: 'comment.block.ahk', regex: '/\\*', push: [ { token: 'comment.block.ahk', regex: '\\*/', next: 'pop' }, { defaultToken: 'comment.block.ahk' } ] }, ...
Für den Kommentarblock habe ich auch mal /# ...abcdefg ... .... hijklmnop #/ probiert - sieht nett aus, aber möchte man das wirklich?
Auch ein wenig Codefaltung /* <--> ~~ geht schon. Dazu muss man foldingStartMarker: '^\\s*/\\*|^(?![^{]*?;|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|;|/\\*(?!.*?\\*/.*\\S))', foldingStopMarker: '^\\s*\\*/|^\\s*\\}' } bearbeiten. Die aktuellen Änderungen sind jeweils momentan online. |
|
|
| |
|
|
|
| Klaus Hoffmeister (16.02.15)
Die identische Variante, aus autohotkey erzeugt wie oben nur statt Theme monokai nun solarized_light. Irgendwie nicht so bunt aber dezent und augenschonend. Man erkennt, dass die konkreten Farben vom Theme abhängen. Da muss erstmal eine Grundsatzentscheidung zum Theme her.
Ich würde die tolle Mgl., dass man das Thema onthefly ändern kann, durchaus beibelassen und machen oben ins Popupmenü dafür eine Themen-Auswahl. Soll der Nutzer entscheiden welches Thema er gerne nutzen möchte. So müssten wir auch keine konkreten Farben festlegen und könnten uns erst einmal rein darauf beschränken, dass der Parser die korrekte Syntax erkennt mit welchen Farben auch immer das Theme ausgestattet ist.
Was hältst Du davon? Das Popup-Menü kann ich leicht erweitern, würde ich php Funktion glob für das Themensuchen verwenden.
Klasse finde ich das die aktuellen Änderungen auch gleich Online sind sodass man auch gleich herumprobieren kann.
Bekommst Du es hin, dass auch if end procs gefaltet werden? Bei den /* rems */ funktioniert das schon sehr lecker. Ich freue mich richtig dass es mit AndroidProfan voran geht. |
|
|
| |
|
|
|
HofK | iF (18.02.15)
Bekommst Du es hin, dass auch if end procs gefaltet werden? Bei den /* rems */ funktioniert das schon sehr lecker. Ich freue mich richtig dass es mit AndroidProfan voran geht.
Hat sich gerade überschnitten. Soeben festgestellt, dass die Bearbeitung der foldingmarker alleine nicht ausreicht! Muss tiefer im System graben.
Das Theme wählbar zu machen ist die beste Lösung! |
|
|
| |
|
|
|
| Dann bau ich mal das mit der Popupmenüthemenauswahloption ein. |
|
|
| |
|
|
|
HofK | If ... procs falten ... hab es prinzipiell gefunden [...] weiter unten: Adding new folding rules to your mode can be a little tricky. ... Und dann kommt "harter Stoff" - da muss ich mich erstmal reinwühlen. Das dauert. |
|
|
| |
|
|
|
| Ja, genau, davor versuche ich mich (bisher ganz erfolgreich!) zu drücken. |
|
|
| |
|
|
|
| So, hab mal pauschal eine Theme-Auswahl eingebaut: [...]
Später wird die Einstellung (natürlich) auch noch mit dem Benutzeraccount verknüpft statt wie jetzt "nur" in der Session. |
|
|
| |
|
|
| |
|
- Seite 4 - |
|
|
HofK | ... folding rules can be a little tricky ... also erstmal etwas die Farben sortieren. Einfach die beiden Dateien in den Editor kopieren und sich per Ansicht /Theme an den Farben erfreuen. Verschiedene Varianten probiert, es gibt ein Problem mit der "Doppelnutzung" von del und sensor. Beim Theme Monokai treten die Farben deutlich hervor. |
|
|
| |
|
|
|
| Ah, auch sowas wei proc kreis(buttonHandle,event) da wird event gefärbt weil er glaubt das dass die Proc ist. Oje das wird eine Katastrophe dem das alles beizubringen. |
|
|
| |
|
|
|
HofK | iF (20.02.15)
Oje das wird eine Katastrophe dem das alles beizubringen.
Die eingebauten Funktionen und Konstanten der Sprache sind Sprachbestandteile. Damit sind die Bezeichner reservierte Bezeichner. Ich kann ja auch nicht die Variable var var = 0 definieren weil ich var so schön finde.
An der Struktur des Highligtings sieht man auch, dass im Wesentlichen reservierte Bezeichner in Gruppen notiert werden. Bei den "Sonderzeichen" wird es komplizierter.
Wenn es also event reserviert gibt, muss ich statt proc kreis(buttonHandle,event) wie auch üblich proc kreis(buttonHandle,e) oder proc kreis(btnHdl,e) schreiben. proc kreis(button,e) ginge ja auch nicht weil es button schon gibt. Sollte es math.e geben, geht das e auch nicht, aber ev und evnt. Die Variable e ginge dann auch nicht.
Problematischer sehe ich die Überschneidung von del und sensor innerhalb der Sprache. |
|
|
| |
|
|
|
HofK | "Webfehler " im Grid der Kreisberechnung
ups - die Höhen- und Breitenanngaben passen nicht. Sie waren für ein einfaches Grid g_gr gemacht. Nach der Änderung mit Verschachtelung hatte ich sie nicht angepasst. g_gr hat ja nur noch drei Zeilen und eine Spalte! Das hätte sicher einen Fehler ausgeworfen.
Korrigierte Fassung:
Nachtrag: Die Zeilen 15 bis 20 dürfen in der aktuellen Fassung von InfinityProfan am Ende kein \ enthalten! |
|
|
| |
|
|
|
HofK | Die App Kreisberechnung wird in der jetzt verfügbaren Leseprobe [...] (kostenlos)
vom in Arbeit befindlichen Infinity-Profan Buch Kap. 1
genauer unter die Lupe genommen.
___________________________________________________________
Bitte Hinweis zur veralteten Syntax aus 2015 am Anfang des Themas beachten! (15.01.2016) |
|
|
| |
|
|