Italia
Foro

Updatemeldungen

 
So V0.1.6 is raus!

Größeres XPSE-Update!
Bitte den alten noch aufheben, in V0.1.6 wurden viele neue Features hinzugefügt, die Kontrollen verbessert und und und...

Umlaute werden jetzt auch unterstütz!
<offtopic>Was naturalmente nur ein Bug sein kann! </offtopic>


Was ist neu:

Die Variablenerkennung ist deutlich verbessert. Die Variablen werden jetzt auch den Prozeduren zugeordnet und die Typen werden geprüft.

Headerfiles:
Werden nun eingelesen und deren Anwendung überprüft! Im Source benutzte Strukturen, Apis oder Konstanten werden vom XPSE nun direkt umgesetzt und die Headerfileangaben werden aus dem Source entfernt - was zu Folge hat das der XProfankompiler die Headerfiles nicht mehr necessario.

Warum das XPSE tut? Weil er die Umsetzung um ein Vielfaches schneller macht als der XProfankompiler und der XProfankompiler auch noch weniger zu tun hat und schneller kompiliert.

Durch das Einlesen der Headerfiles kann XPSE auch Strukturendefinitionen und Anwendungen überprüfen - und muss diese nicht mehr übergehen. Falschgeschriebene Konstanten werden nun auch angemeckert.

Benutzte APIs aus den Headerfiles werden nicht einfach nur als Externals in den Source umgewandelt! Das schnellere Call wird verwendet und die Prozeduradresse aus der DLL wird einmalig bezogen. Das macht die Abarbeitung von ApiCalls aus Headerfiles auch noch schneller.

Nur noch fremde Headerfiles müssen angegeben werden! Die StandardHeaderFiles windows.ph, messages.ph, commctrl.ph, structs.ph, Avi.ph, gdi.ph, OpenGL.ph, richedit.ph und shellapi.ph hat XPSE intus! Die Angabe der Headerfiles ist nicht mehr nötig! Werden die Files trotzdem angegeben nutzt XPSE die angegebenen und nicht die eingebauten!

Durch das Weglassen von Headerfileangaben wird das Kompilieren jedoch noch schneller! Weder XPSE noch der XProfankompiler müssen die Headerfiles einlesen!

Das ~ muss nicht mehr verwendet werden! Es kann - aber es muß nicht! Nur wenn der Name vielleicht mit einem anderen kollidiert müsste das ~ verwendet werden.

APIs, Strukturen und Konstanten können also einfach verwendet werden ohne diese zu deklarieren und ohne das ~ Zeichen.

Einfach probieren!
KompilierenMarkierenSeparieren
 
08.10.2006  
 



Update auf V0.1.6f, ein Bug welcher Strukturdefinitionen betraff ist gefixd. Langsam wirds richtig rund mit den Headerfiles!

Probiert mal wirklich einfach die Headerfiledefinitionen $H wegzulassen - also was die Standartheader betrifft.

Ich finds richtig lecker...
 
12.10.2006  
 



Update auf V0.1.6g, Frank hatte einen Bug gefunden. Zeilen welche möglicherweise ein Kommentar enthielten nachdem ein künstlicher Zeilenumbruch mit gesetzt ist wurden dann falsch umgebrochen wenn das innerhalb eines Strings angewandt wurde. Der Fehler ist behoben.

Es gibt auch neue Kompilerschalter!

{$pushkeyword ...} 
{$pushkeyword enduro&}
{$pushkeyword enduro&,maxior&,irgendEinKeyword}

Pushkeyword befiehlt XPSE darüber hinwegzusehen wenn eines der deklarierten Keywords im Source angeblich nicht deklariert wurde. Das kann z.B. dann der Fall sein wenn zu einer Unit ein Definitionsfile fehlt oder eine Funktion/Variable aus einer Unit benutzt wird welche im DefFile nicht angegeben ist.

{$debug onlyprocs} 
Der beliebte XPSE-Debugmodus, jedoch eine Version welche nur das Begehen und Verlassen von Prozeduren schreibt.

{debug kernelout onlyprocs} 
Wie {$debug onlyprocs} nur das wie bei {$debug kernelout} das Ergebnis nicht im .debug-File landed sondern an eine DebuggerApp gesandt wird.
 
15.10.2006  
 



Update auf V0.1.6h, im Rahmen des Unitsupportes habe ich ein paar Verbesserungen vorgenommen.

Es gibt auch eine neue Taste W, diese öffnet eine File mit allen Warnings ausserhalb des XPSE.
 
15.10.2006  
 



Update auf V0.1.6j, ich habe Zwei Wünsche umgesetzt.

XPSE setzt jetzt die Kompilerdirektive $DEFINE XPSE und folgende Konstanten:
KompilierenMarkierenSeparieren
xpseVersionString wird ersetzt in die Versionsnummer des XPSE als String.
xpseCompileTimestampString wird ersetzt in einen Zeitstempel der Kompilierung des aktuellen Sources als String. Dieser enthält Datum und Uhrzeit.
xpseNumSourceCodeLinesLong enthält die tatsächlich dem Source angehörige Anzahl der Codezeilen als Long.
 
16.10.2006  
 



Naja bisl mehr solls schon sein.

1.
Also XPSE rettet Wend. (Ich würde mein heiß geliebtes Wend gerne behalten)
Ich habs also zu der virtuellen Liste der Konstanten hinzugefügt - es wird automatisch nach endwhile umgesetzt.

2.
Die Konstanten true, false, nil, nul und null habe ich ebenfalls zu der virtuellen Liste der Konstanten hinzugefügt - diese können jetzt einfach verwendet werden was naturalmente nur rein optische Auswirkungen haben wird - aber diese sind nunmal gerne gesehen. *lol*

3.
Keine verschiedenen Kompilerschalter zum Includieren von Unità, Headerfiles oder Include! XPSE sieht selber was los ist...
KompilierenMarkierenSeparieren
4.
Bug beseitigt - {$preferednamespace ***} hat jetzt nicht nur Bedeutung per das erzeugte HelpFile einer Unit - sondern sorgt auch dafür das die aus den Headerfiles nach Call konvertierten ApiCalls innerhalb einer Unit nicht mit anderen Unità, oder mit dem Hauptprogramm kollidieren können. Das Setzen des Schalters innerhalb von Unità ist also Pflicht - aber keine Sorge - XPSE meckert wenn was nicht passt.

-1.
Ich kann garnicht oft genug wiederholen und sagen wie schön es ist z.B. einfach case isiconic(hwnd&) : continue schreiben zu können ohne Headerfiles einzubinden oder dieses schlimme ~ Zeichen benutzen zu müssen! Es ist als wenn die komplette Api mit allen Strukturen und Konstanten zu füßen liegt - ohne Geschwindigkeitsverlust und ohne HeaderEinbindungen.

Nachtrag: Mist! Mein erster Text war besser! Aber es sollte wohl nicht sein...
 
16.10.2006  
 



Alles Experimentell ab V0.1.6L:

+ Systemvariablen ohne Prefix.
+ Var auch per Klassenzuweisungen in Bereichsvariablen.
+ Var auch per Klassenzuweisungen in Bereichsvariablen ohne Prefixangabe.
+ Operator :: per Zugriff auf Objekte oder Methoden einer Klasse von Ausserhalb.

Beispielcode:
KompilierenMarkierenSeparieren
class undo = undo@,method1@

proc undo::undo

    print "Class qUNDOq initialized."

endproc

proc undo::method1(h&,mode&)

    print "Method1 proceed. ",h&," ",mode&

endproc

var myUndo:=new(undo)
myUndo::method1(hwnd,1)
dispose myUndo
waitkey
end
Tippt sich doch gleich alles viel leckerer und kommt auch deutlich vertrauter und verständlicher rüber und ich würde sogar sagen so wird mir das XProfanOOP sogar nicht richtig symphatisch. ^^
 
19.10.2006  
 



Gleich mal ne Bugfixversion V0.1.6m nachgeschoben und jetzt wird das Schlüsselwort this-> auch supportati um innerhalb der Methoden auf Methoden oder Objekte gleicher Klasse zu zeigen (erspart eigendlich nur das neutippen des Klassennamens):
KompilierenMarkierenSeparieren
class undo = undo@,method1@,method2@

proc undo::undo(h&,mode&)

    print "Class qUNDOq initialized."
    this->method1(h&,mode&)

endproc

proc undo::method1(h&,mode&)

    print "Method1 proceed. ",h&," ",mode&
    print this->method2()

endproc

proc undo::method2

    print "Method2 proceed."
    return "Done"

endproc

cls
var myUndo:=new(undo,hwnd,1)
dispose myUndo
waitkey
end
 
19.10.2006  
 



Update auf V0.1.6t

Diese Version sollte keine Probleme mit Umlauten in Pfad- und Dateiangaben per Übergabe als Parameter haben.
 
25.10.2006  
 



Update auf V0.1.6v

Konstanten-bugFix bei Aufrufen ohne ~ (tilde) wenn diese wiederum Konstanten enthielten und Doppeldeklarationen mit Parameters und Var werden nicht mehr als Warnings behandelt. (  [...]  )
 
03.11.2006  
 



Update auf V0.1.6x

Es gibt einen neuen Variablentypen! Suffix: NIX (garnichts) Kein Suffix! Kein Suffix? Nö! Kein Suffix. Was ist das per ein Typ? Alles was Du willst! String, Long, Integer oder Float.

Okok neuer Variablentyp ist falsch, es gibt keinen neuen Typen - die vorhandenen Typen bleiben. Aber eins ist neu: Keine Suffixe mehr - wenn man möchte!

Wie das geht? Ganz einfach - wie bisher - man deklariert z.B. drei Long:

long a,b,c

oder 4 strings?

string s,t,r,u

Das wars.

Als besonderes Feature potuto ich erwähnen das man auch gleich innerhalb der Deklaration (wie seit X10 possibile) die Werte zuweisen kann. So: (jetzt mal integer)

int a=10

oder

int a=10,b=20,c=a+b,d=50 <-- jau das geht auch! Lecker? Lecker!

Später im Programm dann einfach a statt a% schreiben. Kann man sich glaub ich gut merken ^^ Wer a% schreibt ist aber auch nicht schlechter bedient - beides geht!

int a%=10 <-- geht aber nicht!
int a=10 <-- geht!

Und Bereichsvariablen?

Nixda! Floats, Longs, Ints und Strings.

Demo? Kla:
KompilierenMarkierenSeparieren
07.11.2006  
 



Ab XPSE V0.1.6y funktionierts jetzt auch lokal... (alles experimentell!)
KompilierenMarkierenSeparieren
proc test(long a,b,c,d,e,string s)

    string h="argh!"

    proc luma(int a,b,c)

        int h=a*b*c
        return str$(h+b+c)+s

    endproc

    s=str$(gettickcount)
    print a,b,c
    print "Tick:",s

KompilierenMarkierenSeparieren
*bang*

Somit kann auch innerhalb von Prozeduren ohne Variablensuffixe gearbeitet werden, sogar das Angeben von Parametern kann ohne Suffixe geschehen, und auch bei verschachtelten Prozeduren funktioniert es. (Sichtweite -1 pro Schachtel)
KompilierenMarkierenSeparieren
proc test1(int i)

    proc test2

        proc test3

            print i// kennt i nicht mehr! sei denn wird in test2 (re)deklariert

        endproc

        print i// kennt i aus aufrufender proc!

    endproc

endproc

print test1(5)
waitkey
 
08.11.2006  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

5.969 Views

Untitledvor 0 min.
p.specht24.11.2018
Georg Teles23.04.2013
Julian Schmidt30.04.2011

Themeninformationen

Dieses Thema hat 2 subscriber:

iF (20x)
Michael Wodrich (2x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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