1. Artikel
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forum
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Paules-PC-Forum.de
  2. Forum
  3. Programmierung
  4. XProfan

XProfan 9.1 - Einstieg ins Programmieren mit der Freeware

  • AxT
  • 8. April 2015 um 16:09
  • AxT
    Premium-Mitglied
    Reaktionen
    2.978
    Beiträge
    33.384
    • 2. Mai 2015 um 01:18
    • #21

    Zum Arbeiten mit DLLs

    • Call (Funktion) -> Aufrufen von externen Funktionen
    • FreeDLL (Befehl) -> DLL wird aus dem Speicher entfernt
    • External (Funktion) -> Aufrufen von DLL-Funktionen
    • ExtString$ (Funktion) -> Aufruf von Strings in Resourcen
    • IconCount (Funktion) -> Anzahl der enthaltenen Icons
    • UseDLL (Funktion) -> DLL wird in den Speicher geladen
    • %hInstance (Systemvariable) -> Instanz-Handle des aktuell laufenden XProfan-Programmes

    Einmal editiert, zuletzt von AxT (2. Mai 2015 um 01:27)

  • AxT
    Premium-Mitglied
    Reaktionen
    2.978
    Beiträge
    33.384
    • 2. Mai 2015 um 01:19
    • #22

    Zum Arbeiten mit Bereichsvariablen und Variablen

    • Addr (Funktion) -> Adresse einer Variablen ermitteln
    • BlockRead (Funktion) -> Lesen eines Blockes aus einer Datei in eine Bereichsvariable
    • BlockWrite (Befehl) -> In Datei werden Daten aus Bereichsvariable geschrieben
    • Byte (Befehl) -> Byte an Adresse in einer Bereichsvariablen wird gesetzt
    • Byte (Funktion) -> Wert des Bytes an einer Adresse in einer Bereichsvariablen lesen
    • Char (Befehl) -> String wird im Speicherbereich abgelegt
    • Char$ (Funktion) -> Ermittelung einer Zeichenkette im Speicher
    • Clear (Befehl) -> Zurücksetzung einer Variablen
    • Declare (Befehl) -> Variablendeklarierung
    • Dim (Befehl) -> Bereichsvariable wird zugewiesen
    • Dispose (Befehl) -> Speicherbereich einer Bereichsvariablen oder Objekt wird freigegeben
    • EndWith (Befehl) -> Ende eines With-Zugriffs auf eine Struktur
    • Float (Befehl) -> Fließkommawert an Speicheradresse schreiben
    • Float (Funktion) -> Fließkommawert (64 Bit) an der Adresse in einer Bereichsvariablen lesen
    • Long (Befehl) -> Setzen eines Long-Wertes im Speicher
    • Long (Funktion) -> 32-Bit-Wert an der Adresse in einer Bereichsvariablen lesen
    • MemPos (Funktion) -> Suchen einer beliebigen Zeichenfolge in einer Bereichsvariablen
    • ReadText (Befehl) -> Textdatei wird komplett in den Speicherbereich eingelesen
    • SizeOf (Funktion) -> Größe einer Struktur, Bereichsvariable oder Objekt
    • String (Befehl) -> String wird im Speicherbereich abgelegt
    • String$ (Funktion) -> Ermittelung einer Zeichenkette aus einer Bereichsvariablen
    • Struct (Befehl) -> Strukturdefinition
    • TypeOf (Funktion) -> Ermittelt den Typ einer Bereichsvariablen
    • With (Befehl) -> Zugriff auf die Elemente einer Struktur
    • Word (Befehl) -> Word, das sind zwei Bytes, an Adresse in Bereichsvariablen wird gesetzt
    • Word (Funktion) -> Ermittlung des 2-Byte-Datenwortes aus einer Bereichsvariablen
  • AxT
    Premium-Mitglied
    Reaktionen
    2.978
    Beiträge
    33.384
    • 2. Mai 2015 um 01:21
    • #23

    Zum Ausführen anderer Programme

    • Run (Befehl) -> Programm wird aufgerufen und XProfan-Programm wird beendet
    • Shell (Befehl) -> Programm wird aufgerufen und XProfan-Programm läuft weiter
    • ShellExec (Funktion) -> Ausführen eines Dokumentes
    • WinHelp (Befehl) -> Windowshilfe wird mit der Datei aufgerufen
    • WinExec (Funktion) -> Starten einer Anwendung
    • WinExecWait (Funktion) -> Starten einer Anwendung und Warten auf Ausführungsende
  • AxT
    Premium-Mitglied
    Reaktionen
    2.978
    Beiträge
    33.384
    • 2. Mai 2015 um 01:22
    • #24

    Zum Drucken

    • EndPrint (Befehl) -> Ende der Druckausgabe
    • NextPage (Befehl) -> Innerhalb eines Druckauftrages wird eine neue Seite begonnen
    • ScreenCopy (Befehl) -> Bereich wird auf den Drucker kopiert und die Seite ausgedruckt
    • Set (Funktion) -> Setzen von Systemvariablen/Systemzuständen
    • StartPrint (Befehl) -> Umleiten der Bildschirmausgaben auf Drucker
    • WinCopy (Befehl) -> Fenster wird auf den Drucker ausgegeben
    • &PDC (Systemvariable) -> Device-Context des Druckers
    • %Printing (Systemvariable) -> Kennziffer ob Druckvorgang aktiv ist
  • AxT
    Premium-Mitglied
    Reaktionen
    2.978
    Beiträge
    33.384
    • 2. Mai 2015 um 01:23
    • #25

    Zum Umgang mit FTP und Mail

    • FTP (Funktion) -> FTP-Verbindung zu anderen Rechnern
    • SMTP (Funktion) -> eMail-Versand per SMTP-Protokoll
    • %FTPConnected (Systemvariable) -> Kennzeichen ob FTP-Verbindung besteht
    • %FTPStatus (Systemvariable) -> Status-/Fehlernummer der letzten FTP-Funktion
    • $FTPStatus (Systemvariable) -> Status-/Fehlertext der letzten FTP-Funktion
  • AxT
    Premium-Mitglied
    Reaktionen
    2.978
    Beiträge
    33.384
    • 2. Mai 2015 um 01:25
    • #26

    Sonstige

    • ClassOf (Funktion) -> Die Klasse eines Objektes
    • CloseCom (Funktion) -> Schnittstelle wird geschlossen
    • ComError (Funktion) -> Ermittelung des letzten Fehlerwertes der Schnittstelle
    • DDELink (Befehl) -> DDE-Verbindung wird aufgebaut
    • DDEExecute (Befehl) -> DDE-Kommando wird ausgeführt
    • DDETerminate (Befehl) -> DDE-Verbindung wird beendet
    • DebugOut (Befehl) -> Text wird im Debugger ausgegeben
    • Def (Befehl) -> Funktions- oder Konstantendefinition
    • End (Befehl) -> Programmende
    • EndProc (Befehl) -> Prozedurende
    • ExitWindows (Befehl) -> Windowssitzung wird beendet
    • Get (Funktion) -> Lesen von Systemvariablen/Systemzuständen
    • GetEnv$ (Funktion) -> Inhalt der entsprechenden Umgebungsvariablen auslesen
    • Inp (Funktion) -> Lesen eines Daten-Wortes am Input-Port
    • InpB (Funktion) -> Lesen eines Daten-Bytes am Input-Port
    • Joy (Funktion) -> Joystick/Joypad abfragen
    • KillTimer (Befehl) -> Zeitgeber wird freigegeben
    • New (Funktion) -> Objekt erzeugen und Konstruktor aufrufen
    • Not (Funktion) -> Logisches Nicht
    • OpenCom (Funktion) -> Schnittstelle wird initialisiert und geöffnet
    • OutP (Befehl) -> Wert wird an Port ausgegeben
    • OutPB (Befehl) -> Byte-Wert wird an Port ausgegeben
    • Par$ (Funktion) -> Kommandozeilenparameter des Programms auslesen
    • Parameters (Befehl) -> Zuweisung von Parametern einer Prozedur zu einer Variablen
    • PassWord (Befehl) -> Verschlüsseln eines Strings
    • Proc (Befehl) -> Prozeduranfang
    • ProgEnd (Befehl) -> Kompilat wird nur bis zu diesem Befehl eingelesen
    • ReadCom$ (Funktion) -> String wird aus der Schnittstelle lesen
    • Rem (Befehl) -> Kommentar
    • RePaint (Befehl) -> Zeichnet den Bildschirm neu
    • Return (Befehl) -> Vorzeitiges Beenden einer Prozedur
    • Set (Funktion) -> Setzen von Systemvariablen/Systemzuständen
    • SetCom (Funktion) -> Schnittstelle wird auf neue Werte eingestellt
    • SetComExt (Funktion) -> Einstellung für COM-Schnittstelle ändern
    • SetComTimeOuts (Funktion) -> TimeOut-Einstellungen der COM-Schnittstelle ändern
    • SetTimer (Befehl) -> Zeitgeber wird eingestellt
    • Sleep (Befehl) -> Eigenes Programm wird für bestimmte Zeit angehalten
    • TraceOn (Befehl) -> Schaltet den Trace-Modus ein
    • TraceOff (Befehl) -> Schaltet den Trace-Modus ab
    • WriteCom (Funktion) -> String wird an Schnittstelle gesendet
    • XOr (Funktion) -> Bitweise Exklusiv-Oder
    • %DDEWin (Systemvariable) -> Handle des DDE-Servers
    • %DOS16 (Systemvariable) -> Liefert 1 in der 16-bit DOS-Version von Profan zurück (Entwicklung seit Profan 4.0 eingestellt)
    • %DOS32 (Systemvariable) -> Liefert 1 in der 32-bit DOS-Version von XProfan zurück
    • $DosVer (Systemvariable) -> Ermittelt die DOS-Version
    • %ErrNumber (Systemvariable) -> Enthält die Nummer des zuletzt aufgetretenen Fehlers
    • %Error (Systemvariable) -> Der zuletzt aufgetretene Fehlercode
    • %ErrorLevel (Systemvariable) -> Augenblicklicher Errorlevel
    • &GetTickCount (Systemvariable) -> Anzahl von Millisekunden an seit Windows gestartet wurde
    • %Linux (Systemvariable) -> Liefert 1 bei Linux zurück
    • %OS2 (Systemvariable) -> Liefert 1 bei der OS/2-Version von Profan zurück (Entwicklung seit Profan 4.0 eingestellt)
    • %ParCount (Systemvariable) -> Anzahl der übergebenen Kommandozeilen-Parameter
    • %PCount (Systemvariable) -> Anzahl der übergebenen Parameter des letzten Prozeduraufrufes
    • $ProfVer (Systemvariable) -> Aktuelle XProfan-Version
    • $ProgDir (Systemvariable) -> Verzeichnis, in dem die Exedatei gestartet wurde
    • %ProgEnd (Systemvariable) -> Position in der Datei, wo das Kompilat aufhört und die Daten beginnen
    • %Win16 (Systemvariable) -> Liefert 1 bei der 16-bit Windows-Version von Profan zurück (Entwicklung seit Profan 6.5 eingestellt)
    • %Win32 (Systemvariable) -> Liefert 1 bei der 32-bit Windows-Version von XProfan zurück
    • $WinVer (Systemvariable) -> Ermittelt die Windows-Version
  • AxT
    Premium-Mitglied
    Reaktionen
    2.978
    Beiträge
    33.384
    • 8. Mai 2015 um 16:56
    • #27
    • PRF Dateiendung: Dateien mit der Endung .prf kennzeichnen lesbare Profan Quelltextdateien. Diese sind mit der Profan.exe ausführbar.
    • INC Dateiendungen: Auch bei Dateien mit der Endung .inc handelt es sich um lesbare Quelltextdateien. INC (Include) Dateien, sind Quelltextdateien, die in PRF Dateien über $I <INC-Dateiname>[=Alias] einbinden lassen. INC Dateien sind dafür da, Quelltextbausteine mit Prozeduren und Variablen in mehreren unterschiedlichen Programmen verwenden zu können.
    • PCU Dateiendung: Bei Dateien mit der Endung .pcu handelt es sich um sogenannte Units. Units sind codierte Quelltexte. Wie INC Dateien sind sie zum Einbinden in Programme gedacht, um zusätzliche Funktionen bereitzustellen. In PRF Dateien werden sie über $U <PCUI-UnitName>[=Alias] eingebunden.
    • PRC Dateiendung: Bei Dateien mit der Endung .prc handelt es sich um kompilierte (also codierte) XProfan Quelltexte. PRC Dateien können mit der PRFRUN32.exe ausgeführt werden.
    • PH Dateiendung: Bei Dateien mit der Dateiendung .ph handelt es sich um XProfan Headerdateien. Header Dateien werden ebenfalls bei Bedarf in PRF Dateien eingebunden - und zwar über $H <Header-Dateiname>. Headerdateien sind dazu da, Windowskonstantennamen in ihre dazugehörigen Zahlen zu übersetzen (das erleichtert das Programmieren im API Bereich und macht Quelltexte besser lesbar). Desweiteren übersetzen sie im Quelltext Funktionsnamen in API Aufrufe. Man kann bei der API Programmierung diese Headerdateien verwenden, muss das aber nicht zwingend tun.
    • PRJ Dateiendung: Bei Dateien mit der Dateiendung .prj handelt es sich um XPRofan Projektdateien - darin werden also die Einstellungen für ein Projekt gespeichert.

    Einmal editiert, zuletzt von AxT (8. Mai 2015 um 18:18)

  • AxT
    Premium-Mitglied
    Reaktionen
    2.978
    Beiträge
    33.384
    • 9. Mai 2015 um 11:55
    • #28

    Variablen sind beim Programmieren eine Art Platzhalter (ähnlich wie X und Y in der Mathematik), auf die im Speicher Werte abgelegt werden können. Damit erst mal Speicher für eine Variable bereitgestellt wird, muss man sie vor der Verwendung mittels des Profanbefehls Declare erst einmal festlegen.
    XProfan kennt diese Arten von Variablen:

    • Strings: Strings sind Variablen, in die Textausdrücke gespeichert werden können. Die Programmiersprache stellt immer automatisch soviel virtuellen Speicher für einen String bereit, wie der Textausdruck groß ist. Stringsvariablen können beliebige Namen haben - am Ende des Variablennamens steht aber immer ein $, um zu kennzeichnen, dass es sich um eine Stringvariable handelt. Textausdrücke selbst stehen übrigens (um sie als Textausdruck zu kennzeichnen) im Quelltext immer in Anführungszeichen. Beispielcode zur Verwendung:
    Code
    Declare Username$
    Username$ = "Der User"
    • LongInts: Longints sind Variablen, in denen ganze Zahlen gespeichert werden. Eine Longint Variable ist im Speicher immer 32Bit groß. Der Wertebereich geht von -2 Milliarden bis etwas über +2 Milliarden. Ein Longint hat am Ende des Variablennamens ein & Zeichen. Beispielcode zur Verwendung:
    Code
    Declare Zahl&
    Zahl& = 1200
    • Integer: Ein Integer ist eine Variable zum Speichern von ganzen Zahlen. Wieviel Speicher ein Integer einnimmt, hängt davon ab, ob man ein 32Bit Programm oder ein 64Bit Programm kompiliert. In einem 32Bit Programm ist ein Integer 32Bit groß - in einem 64Bit Programm 64Bit. Da XProfan9 nur 32Bit Programme kompilieren kann, ist ein Integer in XProfan (wie ein Longint auch) 32Bit groß. Ein Integer sollte man in XProfan zum Abspeichern von Adressen und Handels verwenden. Ein Integer hat am Ende des Variablennamens ein % Zeichen. Beispielcode zur Verwendung:
    Code
    Declare IntegerZahl%
    Integerzahl% = -12345
    • Float: Ein Float nimmt man zum Abspeichern von Kommazahlen. Ein Float ist in XProfan 64Bit groß. Ein Float hat am Ende des Variablennamens ein ! Zeichen. Kommas werden beim Programmieren bei Zahlen durch einen Punkt dargestellt. Beispielcode zur Verwendung:
    Code
    Declare Kommazahl!
    Kommazahl! = 1.5
    • Bereichsvariablen: Bereichsvariablen können eine beliebige Größe besitzen. Wie groß der Speicherbereich im RAM sein soll, wird (nachdem der Name einer Bereichvariable über Declare festgelegt wurde), mit dem Befehl DIM festgelegt. Bereichvariablen muss man sich als Blöcke im RAM vorstellen, dessen Inhalt für die Programmiersprache nicht feststeht. Ein Bereich hat am Ende des Variablennamens ein # Zeichen. Da alle anderen Variablen eine feste größe besitzen, gibt es bei denen kein DIM. Um Bereiche zu füllen, gibt es unterschiedliche Befehle - je nachdem, ob man da eine Zahl, einen String oder sonstwas reinschreiben möchte. Wird ein Bereich nicht mehr im Programm benötigt, kann der Speicher mit Dispose wieder freigegeben werden. Beispielcode zur Verwendung:
    Code
    Declare Bereich#
    DIM Bereich#, 100
    String Bereich#, 0 = "Hallo"
    Dispose Bereich#
    Code
    Declare Bereich#
    DIM Bereich#, 4
    Long Bereich#, 0 = 5
    Dispose Bereich#
    Code
    Declare Bereich#
    DIM Bereich#, 8
    Float Bereich#, 0 = 1.5
    Dispose Bereich#

    2 Mal editiert, zuletzt von AxT (7. Dezember 2015 um 20:19)

  • AxT
    Premium-Mitglied
    Reaktionen
    2.978
    Beiträge
    33.384
    • 9. Mai 2015 um 22:54
    • #29

    Befehle und Funktionen
    Wenn man mal in das Befehlslisting von XProfan schaut wird man feststellen, dass da zwischen Befehlen und Funktionen unterschieden wird. Befehle tun etwas - Funktionen tun auch etwas, sie liefern aber auch ein Ergebnis, das man wiederum in einer Variablen abspeichern kann. Das ist der Unterschied.

    Systemvariablen
    Neben den Variablen, die man selbst deklariert und mit Werten belegt, gibt es in XProfan mit bestimmten Werten vorbelegte Variablen - Systemvariablen.
    Diese Variablen habe ihr $, %, & oder ! Zeichen nicht am Ende des Variablennamen sondern vorne - siehe auch hier: Für Fenster, Fensterelemente und Dialoge
    Auf diesen Systemvariablen liegen bestimmte Werte - so zum Beispiel auf %hwnd das Handle des Hauptfenster, das wir ja gerade bei unserem Programm erzeugt haben.

    Handles
    Später wird uns der Begriff Handle auch noch über den Weg laufen. Ein Handle ist im Prinzip eine Zahl, hinter der sich ein Objekt verbirgt (zum Beispiel ein Prozess, eine Datei, ein Registryschlüssel, ein Fenster, ein Icon...). Über diese Zahl kann man Zugriff auf das Objekt erhalten, das sich dahinter verbirgt.
    Man erhält ein Handle auf ein Objekt entweder wenn man dieses Objekt erzeugt, oder wenn man ein existierendes Objekt erfolgreich "öffnet" - wie zum Beispiel eine Datei. "Erfolgreich" heißt, dass Windows ein Öffnen ja aufgrund von fehlenden Rechten (bei zum Beispiel einer Datei) nicht erlauben muss. Dann gibt es beim Versuch des Öffnens auch kein Handle zurück.

  • AxT
    Premium-Mitglied
    Reaktionen
    2.978
    Beiträge
    33.384
    • 7. Dezember 2015 um 21:06
    • #30

    Beim Programmieren ist es ein riesen Unterschied, ob man Zahlen als Zahl oder als Textausdruck addiert. Addiert man 5 und 6 als Zahlen, komt als Ergebnis 11 heraus. Addiert man 5 und 6 als Textausdrücke, ist das Ergebnis davon 56. Tsstausdrücke werden beim Programmieren immer in Anführungszeichen gesetzt. Wir basteln uns dafür mal ein Kleines Programm.

    • Declare -> Wir legen Variablen fest, um Text und eine Zahl abzuspeichern.
    • Print -> Ausgabe auf dem Bildschirm.
    • WaitKey -> Auf Tastendruck warten, damit sich das Fenster nicht sofort wieder schließt.
    Code: Additionen.prf
    Declare Zahl&, Text$
    Print "Als Zahlen addiert:"
    Zahl& = 5 + 6
    Print Zahl&
    Print "Als Text addiert:"
    Text$ = "5" + "6"
    Print Text$
    WaitKey


    [Blockierte Grafik: http://abload.de/img/test1rnbpc.jpg]

    So wie man keine 5 Äpfel zu 6 Birnen addieren kann, kann man auch keine Zahl zu einem Textausdruck addieren. Es gibt da also Funktionen zum Umwandeln von Zahlen in Text und Text in eine Zahl:

    • Val() -> Wandelt text in eine Zahl um.
    • Str$() -> Wandelt eine Zahl in einen Textausdruck um.
    Code: Additionen2.prf
    Declare Zahl&, Text$
    Zahl& = 5 + 6
    Print "5 + 6 als Zahlen addiert: " + Str$(Zahl&)
    Print Zahl&
    Text$ = "5" + "6"
    Print "5 + 6 als Text addiert: " + Text$
    Zahl& = Val(Text$) + 4
    Print Text$ + " + 4 = " + Str$(Zahl&)
    WaitKey

    [Blockierte Grafik: http://abload.de/img/test1tgsa1.jpg]


    Texte müssen logischerweise immer in einer Textvariablen, Zahlen in einer Variablen für Zahlen gespeichert werden.

    Bestimmte Operationen kann man nur mit Zahlen durchführen.
    Zahlen kann man:

    • Addieren: +

      Code: Addieren.prf
      Print 5 + 6
      Waitkey
    • Subtrahieren: -

      Code: Subtrahieren.prf
      Print 5 - 6
      Waitkey
    • Malnehmen: *

      Code: Multiplizieren.prf
      Print 5 * 6
      Waitkey
    • Teilen: /

      Code
      Print 5 / 6
      Waitkey
    • Potenzieren: ^

      Code: Potenz.prf
      Print 5 ^ 6
      Waitkey
    • Auf Ungleichheit testen: <>

      Code: Ungleichheit.prf
      Print 5 <> 6
      Waitkey
    • Auf Gleichheit testen: =

      Code: Gleichheit.prf
      Print 5 = 6
      Waitkey
    • Daraufhin testen, ob etwas größer ist: >

    Code: Groesser.prf
    Print 5 > 6
    Waitkey



    Texte kann man:

    • Addieren: +

      Code: TextAddieren.prf
      Print "Hallo " + "du!"
      Waitkey
    • Auf Gleichheit testen: =

      Code: Textgleichheit.prf
      Print "Hallo " = "du!"
      Print "Hallo " = "Hallo "
      Waitkey
    • Auf Ungleichheit testen: <>

      Code: Textungleichheit.prf
      Print "Hallo " <> "du!"
      Print "Hallo " <> "Hallo "
      Waitkey

    3 Mal editiert, zuletzt von AxT (7. Dezember 2015 um 22:12)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Windows 11

Benutzer online in diesem Thema

  • 4 Besucher
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™