Français
Online-Documentation

xpse.syntax Textblock

 
Vorwort

"Syntaktische Erweiterungen" hört sich zwar compliqué à, bedeutet mais lediglich cela un et cela Selbe anders geschrieben volonté peux. qui par XPSE gebotenen syntaktischen Erweiterungen volonté vom XPSE dans "normalen" mais optimierten XProfan-Voir le texte source konvertiert.

un simple Beispiel pour une syntaktische Erweiterung:
x&+
'ou bien
x&++
'ou bien
x&-
'ou bien
x&--
wird trop
inc x&
x&=x&+1
dec x&
x&=x&-1
konvertiert.

un d'autre Beispiel pour une syntaktische Erweiterung anhand einer For- Boucle, weil besonders à diesem Beispiel trop erkennen ist - cela syntaktische Erweiterungen qui Vue d'ensemble deutlich améliorer peut et/ou bien cela écrivons erleichtern:
declare h&
for h&:=500 downto 200 step 3 do begin
imprimer h&
end
wird trop
declare h&
H&=500
WHILE H& >= 200
PRINT H&
SUB H&,3
WEND
H&=200
konvertiert.

Anhand diesem Beispiel wird qui syntaktische Erweiterung des XPSE anhand des Konvertierens einer Funktion dargestellt:
declare h&
cls
h&=createhtmlbox(%Hwnd,
"mshtml:

Info

Testinfo"
,0,0,320,240)
waitinput
destroywindow(h&)
end
wird trop
DECLARE H&
USEDLL("ATL.DLL")
EXTERNAL("ATL.DLL","AtlAxWinInit")

PROC _XPSE_CREATEHTMLBOX

    PARAMETERS HDL&,TXT$,XP&,YP&,XW&,YW&
    RETOUR CONTROL("AtlAxWin",TXT$,1345323008,
    XP&,YP&,XW&,YW&,HDL&,0,%HINSTANCE,$200)

ENDPROC

CLS
H&=(_XPSE_CREATEHTMLBOX((%HWND),
"mshtml:<html><head></head><body><h1>Info</h1>Testinfo</body></html>",
(0),(0),(320),(240)))
WAITINPUT
DESTROYWINDOW(H&)
FIN
konvertiert.

Syntaktische Erweiterungen

<i>Befehlstrennung</i><b>Kurzfassung:</b> XPSE soutenu ; et : um Befehle voneinander trop trennen.
<b>Die Langfassung:</b>Viele Hochsprachenkompiler bieten heutzutage cela Feature des zeilenunabhängigen Parsens des Quelltextes. Streng pris ist es den meisten Kompilern sogar égal si qui gesammte Voir le texte source dans einer individuel la ligne, ou bien sur mehere Zeilen verteilt ist. avec cela ca sans Umwege possible ist gibt es "Befehlstrennungszeichen". dans den meisten Hochsprachen ist ca Heutzutage cela Semikolon. avec dem Semikolon volonté Befehle voneinander abgetrennt,- qui Kompiler muss ensuite pas plus Zeilengebunden parsen. ca peux entier allgemein chez qui Programmation, chez qui Eingabe et im Bezug sur qui Vue d'ensemble de Quelltexten, viele Vorteile mitsich apporter.

c'est seulement malheureusement so, qui qui zeilenorientierten Parser cela Abtrennen de Befehlen avec einem Befehlstrennungszeichen zumeist pas soutien, et im Umkehrschluß - qui Parser quelle ausschließlich Befehle avec Befehlstrennungszeichen erwarten, aucun Zeilenorientation mitsich apporter. qui difficulté ist es eh bien, là XProfan-Programmierer es gewohnt sommes sur une zeilenorientierten Parser trop vertrauen, beides nebenher trop ermöglichen. Dem XSPE gelang ca. XPSE bietet depuis XProfan8 qui Possibilité Befehle avec dem gewohnten Befehlstrennungszeichen "Semikolon" trop trennen - quand toujours on voudrais - mais avec dem Vorteil es pas trop "müssen". RGH implementierte ensuite cet Feature dans qui puis folgende XProfan- Version 9. Seither bietet XProfan également qui Possibilité avec einem Befehlstrennungszeichen Befehle voneinander trop trennen. cependant pas per Semikolon, mais per Doppelpunkt.

eh bien stand qui XPSE naturellement sur dem Prüfstand. il musste eh bien pas seulement pour sorgen Zeilenorientiert ou bien Semikolongetrennt trop parsen, mais es kam aussi encore un zweites Befehlstrennungszeichen en supplément - welches korrekt verarbeitet volonté musste. qui difficulté ist, là XProfan oui aussi dedans qui eigenen Syntax à manchen se mettre Semikolons et Doppelpunkte erwartet, quand même oui c'est ca unterscheiden trop peut quand un neuer Befehl beginnt. Dem XPSE gelang aussi ca. avec dem XPSE peux sogar dedans einer einzigen la ligne wild entre den Befehlstrennungzeichen modifié volonté. Sogar Anweisungen comment Cas (quelle une Doppelpunkt erwartet) ou bien SetWindowpos (quelle un Semikolon erwartet) [et alle anderen Befehle quelle un ou bien plusieurs Semikolons erwarten) volonté beim wilden Mischen de Befehlstrennungszeichen toujours richtig erkannt. c'est mir ne...aucune Erkennungsfehler bekannt et qui Anwendung cet Features une permanente Freude.

>export ExportProzeduren / Funktionen dans Unités volonté vom XPSE automatisch dans un .def Dossier geschrieben - sei car - es wird cela Schlüsselwort noexport à den Prozedurnamen "mit Freizeichen getrennt" angehangen. Zur Unterstützung de Unit-Programmierern gibt es cela Schlüsselwort "export". quoique XPSE chacun "nicht-avec-noexport-gekennzeichnete" Procédure/Funktion dans qui .def-Dossier écrit - bietet XPSE avec dem Schlüsselwort "export" qui Possibilité, qui une Art Hilfetext pour qui jeweilige avec "export" gekennzeichnete Procédure anzufügen. cette Hilfetext wird dans qui .hlp.htm- Dossier geschrieben.

ca ist très hilfreich si on sich un nachträgliches écrivons einer Hilfedatei ersparen voudrais. Siehe hierzu aussi den Kompilerschalter {$preferednamespace }.
'Beispiel:

proc ?_sid export "Erstellt une Art SessionID et gibt cet comme String zurück"

    declare s$,o%
    o%:=get("Décimal")
    set("Décimal",0)
    s$:=(date$(3)+del$(time$(0),3,1)+del$(time$(1),3,1)+str$(&gettickcount))
    set("Décimal",o%)
    return s$

endproc


>noexport NoExportsi une UnitProzedur ou bien UnitFunktion pas automatisch vom XPSE dans qui .def Dossier geschrieben volonté soll - ensuite ist simple cela Schlüsselwort "noexport" - avec Freizeichen getrennt - derrière den Namen qui Procédure/Funktion trop écrivons.
'Beispiel:

proc ?_sid noexport

    declare s$,o%
    o%:=get("Décimal")
    set("Décimal",0)
    s$:=(date$(3)+del$(time$(0),3,1)+del$(time$(1),3,1)+str$(&gettickcount))
    set("Décimal",o%)
    return s$

endproc

qui Funktion ist avec cela comme "nicht-öffentlich" gekennzeichnet et sollte ensuite aussi seulement dedans qui Unit verwendet volonté.

>for <i>For-Schleifen</i>XPSE soutenu For-Schleifen pour Pascal-Syntax.
'Beispiele:
cls
For i%=1 to 100 do begin;imprimer i%;end
waitkey
end
'
cls
For i%=1 to 100 do begin

si i%=50

    imprimer "Hälfte"

endif

end
waitkey
end
'
cls
For y%=1 to 100 do begin
For x%=1 to 100 do begin
setpixel % X, y%,0
end
imprimer "Zeile:",y%
end
waitkey
end
'
cls
For i%=1 to 100 do begin

Repeat

    imprimer o%
    o%++

until o%>100

end
waitkey
end

Um Abwärts trop zählen, ist aussi trop erwarten cela "downto" statt "to" trop verwenden.

aussi qui optionale "Step"-paramètre wird soutenu à Schrittweite selbst trop bestimmen.

ou bien Abwärts:

>asmstart <i>InlineAssembler</i>wohin "vorkompiliert" wird, peut aussi léger Plugins pour den Vorkompiler hergestellt volonté. cet chance ergriff Frank Abbing (https://frabbing.de  ) et stellte cela Erste XPSE-PlugIn XPIA  her, et später den XPRR .XPIA steht pour XProfanInlineAssembler.

XPIA pouvoir es possible cela dedans des XProfanprogrammes Prozeduren/Funktionen dans [High-Level]-Assembler geschrieben volonté peut. dedans des XProfanprogrammes peux sur cela Ergebnis qui Assemblerfunktionen sans Probleme zugegriffen volonté. cela Prinzip funktioniert so: XPSE bearbeitet den Voir le texte source comment gewohnt - achtet cependant sur Assemblerpassagen quelle avec ASMSTART eingeleitet, et ASMEND finissez volonté. il y a aussi ASMINCLUDE . Es peut beliebig viele Assemblerpassagen im XProfanquelltext vorkommen. avant dem Kompilieren - et chez Vorhandensein de Assemblerpassagen im Voir le texte source - wird XPIA avec dem trop bearbeitenden Voir le texte source gestartet. XPIA eruiert et trennt chaque Assemblerpassagen et erzeugt ASM-Projekte qui wiederum par XPIA à une Assemblerkompiler derart weitergegeben volonté, qui qui Assemblerkompiler une entsprechende DLL avec dem native-kompilierten Assemblercode erstellt. Anschließend écrit XPIA den XProfanquelltext derart um cela à Stelle qui Assemblerpassagen qui DLL-Aufrufe stattfinden. qui erzeugte DLL wird anschließend de XPIA dans une XProfan-Voir le texte source konvertiert - quel qui DLL wärend qui Laufzeit entpackt - si bien que cet pas mitgeliefert volonté doit! Es bleibt alors dabei cela lediglich qui Programme-Exe mitgeliefert volonté doit. cela Assembler wird komplett dans qui EXE verpackt. qui dans den Voir le texte source konvertierten DLL sommes aussi encore derart petite - cela cet den Voir le texte source pas aufblähen. I.d.R ist qui DLL grade la fois 8192 Byte grand! cela Inlineassember pour XProfan était avec cela née. :)

<i>INC et DEC</i>Variablenwert erhöhen et verringern. Simple Syntax zur Variablenin- et dekremierung - aussi wieder angelehnt à qui C++ / PHP Syntax. Mittels dem Suffix ++ peux une variable um 1 augmenté volonté, avec dem Suffix -- verringert.
'Beispiel:
declare i%
i%++
//ou bien
i%--

cet variante wird z.B. dans i%=i%+1 umgewandelt, il y a cependant lt. qui Profanhilfe aussi schnellere Funktionen, um une variable trop erhöhen ou bien trop verringern. Gemeint ist avec cela "INC" et "DEC". Pour cette bietet XPSE une encore komfortablere variante:
'Beispiel:
declare i%
i%+
//ou bien
i%-

Statt "DoppelPlus" bzw "Doppelminus" simple un simple "Plus" ou bien "Minus", et déjà wird qui Code pas dans i%=i%+1, mais dans inc i% konvertiert. il y a wohl rien Einfacheres comme i%+ trop écrivons, um i% um 1 trop erhöhen!

<i>Experimentell/Fun: chez Longs peux aussi sans Angabe des Variablensuffixes derart gearbeitet volonté. Wird ne...aucune Variablensuffix angegeben, so nimmt XPSE à c'est un Long. qui alors z.B. un Long nommé cnt& Inkremieren voudrais braucht seulement cnt+ ou bien cnt++ écrivons. Wobei aussi ici gilt: cnt+ ist plus rapide comme cnt++</i>

<i>Remarks/Rems</i>Besonders pour Programmierer, quelle pas ausschließlich dans XProfan programmieren, sommes cet deux zusätzlichen Remark-Varianten un Willkommensgeschenk. cet beiden Remvarianten sommes sous Anderem aus C++ et PHP bekannt. Es peux // ou bien /* text */ genutzt volonté.

cela Auskommentieren eines ganzen Blockes mittels /* text */ ist alors avec XPSE possible et qui IDE XProfEd  soutenu ca. Somit peut ganze Textpassagen simple et vite ausgeklammert volonté.
'Beispiel:
....la ligne1
/*....la ligne2
....la ligne3
....la ligne4 */
....la ligne5

es peux aussi dedans einer la ligne geRemarkt volonté.
imprimer "Hallo Welt",/*ici un rem*/&gettickcount
'auskommentieren mittels //
imprimer "Hallo Welt"//ici qui Kommentar, quel beim Zeilenende endet

<i>Repeat/Until</i>XPSE ermöglichte fußgesteuerte Repeat-Until Schleifen. jusqu'à XProfan8 étions solche Schleifen seulement avec XPSE possible. dans XProfan9 hat Roland cela Repeat- Until fest integriert. dans den seither nachfolgenden Versionen des XPSE wird cela Repeat-Until alors pas plus par XPSE mise en œuvre volonté, là ca eh bien pas plus nötig ist et Rolands variante par den Festeinbau zügiger ist.

>swap SwapSwap tauscht den le contenu zweier Variablen gleichen Typs.
'Beispiel:
declare a&,b&
a&=10
b&=20
swap a&,b&
imprimer a&
imprimer b&
waitkey
end

Gibt folgendes aus:
20
10


<i>Zuweisungs/Vergleichsoperatoren</i>C++ / Delphi & PHP'er sommes es z.B. gewohnt im opposition trop Basicprogrammierern pour cela "Zuweisen de Variablen" et cela "Vergleichen de Variablen" une différent Syntax trop verwenden. ca ist schlichtweg übersichtlicher et hilft chez qui genaueren Interpretierung par den les gens. dans Basic - so aussi dans XProfan - ist cela Gleichheitszeichen un Zuweisungs- <b>und</b> Vergleichoperator. Beim Lesen de XProfan-Code par une pas- XProfan-Programmierer peut ici empfindliche Mißverständnisse entstehen.

Es peux naturellement aussi weiterhin "Zugewiesen" et "Verglichen" volonté comment gewohnt. XPSE schränkt pas un - mais soll "Erweitern". XPSE bietet pour XProfaner eh bien zumindest qui augenscheinliche Possibilité entre Zuweisungs- et Vergleichsoperator trop unterscheiden.

opérationXProfanC + +/PHPDelphiXProfan avec XPSE
Wertzuweisung==:=<i>alle cet Varianten</i>
comparaison====<i>alle cet Varianten</i>

'Beispiel:

si (en%==b%)

    a%:=b%*4

endif


<i>Funktionen</i>qui "alten" Createfunktionen rester conservé! qui "alten" Createfunktionen rester dank automatischer Umwandlung dans qui "neue" Createsyntax conservé et volonté sogar erweitert.

<b>Folgende Funktionsnamen peut simple weiterverwendet volonté:</b>
· CREATETEXT
· CREATEDIALOG
· CREATECHOICEBOX
· CREATELISTBOX
· CREATESORTEDLISTBOX
· CREATETABCONTROL
· CREATEWINDOW
· CREATEGROUPBOX
· CREATEEDIT
· CREATEMULTIEDIT
· CREATEBUTTON
· CREATEDEFBUTTON
· CREATEDATEEDIT
· CREATETIMEEDIT
· CREATESPINEDIT
· CREATEPICBUTTON
· CREATEICONBUTTON
· CREATEHTMLBOX
· CREATETOOLWINDOW
· CREATELEFTBUTTON
· CREATECENTERTEXT
· CREATERIGHTTEXT
· CREATESUNKENTEXT
· CREATESUNKENCENTERTEXT
· CREATESUNKENRIGHTTEXT
· CREATESTATIC
· CREATEBLACKFRAME
· CREATEBLACKRECT
· CREATEHTMLBOX

cela Contrôle HTMLBOX est un Contrôle aus qui ATL.DLL. Es wird hierbei qui IE comme Anzeigemodul genutzt. CreateHtmlBox peux oui c'est ca comment z.B. Createtext sans Umwege erstellt volonté. qui comme 2. paramètre übergebene Text peux entweder une "URL" son, ou bien un direkter html beginnend avec "mshtml:". cet Funktion ist z.B. intéressant pour simple About-Boxen ou bien Hilfedateien. je konnte dans meinen Versuchen mindestens 32K Html direct per MSHTML: transfert - et qui le contenu wurde toujours korrekt angezeigt. si une lokale HTML-Dossier angezeigt volonté soll, ensuite ist cela "file:///c:/ordner/htmldatei.html"-Format trop nutzen. cela Contrôle ist aussi hervorragend trop nutzen um z.B. Bilddateien anzuzeigen - là qui IE nahezu chaque Format représenter peux.
'Beispiel:
declare h&
cls
h&=createhtmlbox(%Hwnd,
"mshtml:<html><head></head><body><h1>Info</h1>Testinfo</body></html>"
,0,0,320,240)
waitinput
destroywindow(h&)
end


Pour qui paramètre ist aussi simple qui "alte" forme trop nutzen, car XPSE mets cet vollständig um:
declare h&
cls
h&=createtext(%Hwnd,"Text",0,0,320,240)
waitinput
destroywindow(h&)
end

>oop <i>OOP</i>aussi pour den OOP-Begeisterten XProfaner bietet XPSE ici et là un paire experimentelle Features. Zum une den Operator :: et zum Anderen cela Schlüsselwort this->. mais aussi qui Possibilité des Weglassens des Suffixes pour qui Bereichsvariable quelle qui super aufnimmt ist très intéressant!

Um es kurz trop saisir ici zum Einen cela "normale", et zum Anderen une Possibilité qui avec XPSE genutzt volonté <u>kann</u>.
'cela Normale:
class le chien = le chien@, bellen@, bellAnzahl&

proc le chien.le chien

    .bellAnzahl&=0
    Imprimer "Hund initialisiert"
    le chien.bellen()

endproc

proc le chien.bellen

    .bellAnzahl&=.bellAnzahl&+1
    imprimer "Bell:",.bellAnzahl&

endproc

var myHund#=new(le chien)
myHund#.bellen()
waitkey
dispose myHund#
end

'cela avec XPSE mögliche:
class le chien = le chien@, bellen@, bellAnzahl&

proc le chien.le chien

    .bellAnzahl&:=0
    Imprimer "Hund initialisiert"
    this->bellen()

endproc

proc le chien.bellen

    .bellAnzahl&:=.bellAnzahl&+1
    imprimer "Bell:",.bellAnzahl&

endproc

var myHund:=new(le chien)'ne...aucune Rautezeichen!
myHund::bellen()'ne...aucune #. Fingerbrecher nötig :D
waitkey
dispose myHund'ne...aucune # nötig
end
Innherhalb de Klassen peux alors sur Methoden qui gleichen super avec this-> zugegriffen volonté (erspart cela wiederholte Tippen qui Klassenbezeichnung) et ausserhalb de Klassen peux sur Methoden mittels :: zugegriffen volonté. chez qui Verwendung de new  et :: et dispose  peux sur qui Angabe des Rautezeichens pour qui Bereichsvariable verzichtet volonté. (ausgenommen Arrays de Bereichsvariablen) Im Allgemeinen Umgang avec XProfanOOP hat sich ca comme très pratique erwiesen!

>include IncludeInkludiert Quelltextdateien, Headerdateien ou bien Unités. Je pour Endung qui Dossier wird vous entsprechend eingebunden.

Wird "#include" statt "include" geschrieben passt XPSE puis sur cela qui Include aussi seulement un la fois eingebunden wird - égal comment souvent qui Aufruf vorkommt. Ähnlich comment PHP's "include_once".

Um une Include-Dossier einzubinden wird dans XProfan qui Compilerschalter "$I" benutzt. XPSE'ler peut mais aussi Include ou bien #include écrivons - cela Verhalten bleibt juste. Besonders chez Comprend augmenté XPSE den confort. c'est eh bien z.B. possible, simple qui Dateiendung wegzulassen - es wird automatisch pour inc et prf gesucht. Ebenso, si XPSE qui Include pas im eigenen Verzeichnis findet, wird cet Reihenfolge genutzt, um den lieu qui Include festzustellen:

· /.inc
· /include
· /includes
· /include/.inc
· /includes/.inc
· /.prf
· /include/.prf
· /includes/.prf

on braucht alors seulement encore '#include myinc' écrivons, selbst si sich qui Inc ou bien Prf pas im selben Verzeichnis, mais dans einem qui genannten Unterordner est.

Es volonté aussi qui im ProfanEditor angegebenen Includepfade berücksichtig. Siehe aussi Compilerschalter:{$Includepath  ...}


Inkludiert qui Quelltextdatei "meine.inc".

Inkludiert cela HeaderFile "windows.ph".

Inkludiert qui Unit "lists.pcu" avec dem Namensraumsymbol "lst.".

>const ConstConst est un très mächtiges Werkzeug des XPSE. avec Const volonté Konstanten ou bien ganze Syntaxblöcke défini. qui Verwendung cette Konstanten statt qui Def -Konstanten empfehle je là cet pas zur Laufzeit, mais beim Kompilieren mise en œuvre volonté - quoi une Geschwindigkeitsvorteil bedeutet, et là cet Konstanten ne...aucune lästiges PreFix tragen doit.


 
30.05.2007  
 



Note / Question or Comment to the Help--Topic


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

2.219 Views

Untitledvor 0 min.
Christof Neuß10.09.2018
Andreas Koch14.01.2013
Mirko28.01.2012
Peter Max Müller13.12.2011
plus...

Themeninformationen

cet Thema hat 1 participant:

iF (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie