software:diy:andere:profan
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:diy:andere:profan [14/02/2006 18:02] – ergänzt uxt | software:diy:andere:profan [08/01/2023 19:01] (aktuell) – Download-Abschnitt angelegt bttr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Profan v4.0 ====== | ====== Profan v4.0 ====== | ||
- | Als ich zuerst davon hörte war ich verwundert, eine Programmiersprache | + | Als ich zuerst davon hörte war ich verwundert, eine Programmiersprache |
- | Er sagte PROFAN sei eine praktische Programmiersprache, | + | Er sagte PROFAN sei eine praktische Programmiersprache, |
Open-Source Quell-dateien. | Open-Source Quell-dateien. | ||
- | | + | |
- | Halb BASIC, halb PASCAL mit C-Ansätzen, | + | Halb BASIC, halb PASCAL mit C-Ansätzen, |
- | Um Entäuschungen vorzubeugen sei hier gesagt: PROFAN | + | Um Entäuschungen vorzubeugen sei hier gesagt: PROFAN |
- | | + | |
- | gibt zu viele unterschiedliche Anforderungen. Welche diese Sprache | + | gibt zu viele unterschiedliche Anforderungen. Welche diese Sprache |
Sie kann mit PBASIC, PowerBasic, oder Swift!Basic insgesamt sicher nicht mithalten, aber als Script-Sprache | Sie kann mit PBASIC, PowerBasic, oder Swift!Basic insgesamt sicher nicht mithalten, aber als Script-Sprache | ||
irgendwo zwischen BATCH-Dateien und Basic mit einer Größe von 18kB vielleicht ein manchmal akzeptabler | irgendwo zwischen BATCH-Dateien und Basic mit einer Größe von 18kB vielleicht ein manchmal akzeptabler | ||
Kompromiss. Beim Aufbauen von Text-Screens ist es auf jeden Fall flexibler als DOS und, so scheint mir, | Kompromiss. Beim Aufbauen von Text-Screens ist es auf jeden Fall flexibler als DOS und, so scheint mir, | ||
schneller als PBASIC. Da es keine Runtime-Module wie PowerBasic und Swift! benötigt ist es autark. | schneller als PBASIC. Da es keine Runtime-Module wie PowerBasic und Swift! benötigt ist es autark. | ||
- | Allerdings muß man einen neuen Dialekt lernen den ich, für | + | Allerdings muß man einen neuen Dialekt lernen den ich, für mich, als " |
habe.\\ | habe.\\ | ||
\\ | \\ | ||
PPM.EXE kann nur vom aktuellen Pfad aus gestartet werden, egal ob es im Systempfad (set path=....) liegt. | PPM.EXE kann nur vom aktuellen Pfad aus gestartet werden, egal ob es im Systempfad (set path=....) liegt. | ||
- | Die Fehlermeldungen sind häufig | + | Die Fehlermeldungen sind häufig |
- | Vorsicht mit der Anleitung die dem Programm | + | Vorsicht mit der Anleitung die dem Programm |
Zeile 29: | Zeile 29: | ||
- | In PROFAN | + | In PROFAN |
===== 1. Systemvariablen ===== | ===== 1. Systemvariablen ===== | ||
- | Systemvariablen geben Auskunft | + | Systemvariablen geben Auskunft |
*$Name - Der Ergebnistyp ist ein String | *$Name - Der Ergebnistyp ist ein String | ||
*%Name - Der Ergebnistyp ist ein Integer\\ | *%Name - Der Ergebnistyp ist ein Integer\\ | ||
Zeile 47: | Zeile 47: | ||
*1 - Warnung | *1 - Warnung | ||
*2 - Fehler | *2 - Fehler | ||
- | *%ErrNumber - enthält die Nummer des zuletzt aufgetretenen Fehlers. Beim Auslesen wird %ERRNUMBER auf 0 zurückgesetzt. | + | *%ErrNumber - enthält die Nummer des zuletzt aufgetretenen Fehlers. Beim Auslesen wird %ERRNUMBER auf 0 zurückgesetzt. |
*%GetCount - Die Anzahl der Einträge in der ListBox-Liste (beginnend bei 0, also immer n+1). | *%GetCount - Die Anzahl der Einträge in der ListBox-Liste (beginnend bei 0, also immer n+1). | ||
Zeile 62: | Zeile 62: | ||
*3 - Pfad nicht gefunden | *3 - Pfad nicht gefunden | ||
*5 - Zugriff verweigert (ReadOnly?) | *5 - Zugriff verweigert (ReadOnly?) | ||
- | *12 - Ungültiger | + | *12 - Ungültiger |
*15 - Laufwerksnummer unzuzulässig | *15 - Laufwerksnummer unzuzulässig | ||
*16 - Verzeichnis kann nicht gelöscht werden (noch Dateien drin?) | *16 - Verzeichnis kann nicht gelöscht werden (noch Dateien drin?) | ||
- | *17 - RENAME nicht über | + | *17 - RENAME nicht über Laufwerksgrenzen möglich (siehe Rename) |
*18 - Kein weiterer Eintrag (bei @FindFirst/ | *18 - Kein weiterer Eintrag (bei @FindFirst/ | ||
*100 - Lesefehler von Diskette/ | *100 - Lesefehler von Diskette/ | ||
Zeile 74: | Zeile 74: | ||
*105 - Datei nicht zum Schreiben geöffnet (Rewrite oder Append fehlt) | *105 - Datei nicht zum Schreiben geöffnet (Rewrite oder Append fehlt) | ||
*106 - Falsches Format (bei Input #N,..) | *106 - Falsches Format (bei Input #N,..) | ||
- | *%Key - Der ANSI-Code der zuletzt | + | *%Key - Der ANSI-Code der zuletzt |
WaitInput | WaitInput | ||
If @Equ(Key, | If @Equ(Key, | ||
- | Print "Du hast ' | + | Print "Du hast ' |
EndIf | EndIf | ||
- | *%ParCount - Die Anzahl der beim Programmaufruf | + | *%ParCount - Die Anzahl der beim Programmaufruf |
! " # $ % & ' ( ) * + , - . / | ! " # $ % & ' ( ) * + , - . / | ||
Weitere Hinweise siehe unter @PAR$. | Weitere Hinweise siehe unter @PAR$. | ||
- | *%ScanKey - Der Scancode (virtueller Code) der zuletzt | + | *%ScanKey - Der Scancode (virtueller Code) der zuletzt |
*Wichtige Scancodes: | *Wichtige Scancodes: | ||
*16 - Shift | *16 - Shift | ||
Zeile 105: | Zeile 105: | ||
===== 2. Funktionen ===== | ===== 2. Funktionen ===== | ||
- | Eine Funktion gibt einen Wert zurück, der in der Regel von den Parametern der Funktion abhängig ist. Überall da, | + | Eine Funktion gibt einen Wert zurück, der in der Regel von den Parametern der Funktion abhängig ist. Überall da, |
- | wo in PROFAN Variablen oder konstante Werte (Literale) eingesetzt werden können, | + | wo in PROFAN Variablen oder konstante Werte (Literale) eingesetzt werden können, |
- | Der Rückgabewert | + | Der Rückgabewert |
Alle Funktionsnamen in PROFAN beginnen mit einem @. | Alle Funktionsnamen in PROFAN beginnen mit einem @. | ||
- | Funktionen, deren Funktionsnamen mit dem $ enden, geben in vielen Fällen einen String | + | Funktionen, deren Funktionsnamen mit dem $ enden, geben in vielen Fällen einen String |
- | Wenn der Rückgabewert | + | Wenn der Rückgabewert |
immer noch notwendigen Klammern, wird die Funktion dann wie ein Befehl verwandt. | immer noch notwendigen Klammern, wird die Funktion dann wie ein Befehl verwandt. | ||
Beispiel: | Beispiel: | ||
@LISTBOX$(" | @LISTBOX$(" | ||
In diesem Fall wird die Listbox nur zum Anschauen angezeigt oder aber das | In diesem Fall wird die Listbox nur zum Anschauen angezeigt oder aber das | ||
- | Ergebnis der Auswahl | + | Ergebnis der Auswahl |
Zeile 122: | Zeile 122: | ||
*N : Integer (0 ... 8) | *N : Integer (0 ... 8) | ||
| | ||
- | Der N-te übergebene | + | Der N-te übergebene |
*@%(N) | *@%(N) | ||
*N : Integer (0 ... 8) | *N : Integer (0 ... 8) | ||
| | ||
- | Der N-te übergebene | + | Der N-te übergebene |
*@&(N) | *@&(N) | ||
*N : Integer (0 ... 8) | *N : Integer (0 ... 8) | ||
| | ||
- | Der N-te übergebene | + | Der N-te übergebene |
- | Der 0. Parameter ist nach Aufruf einer Prozedur oder einem Unterprogramm mit RETURN < | + | Der 0. Parameter ist nach Aufruf einer Prozedur oder einem Unterprogramm mit RETURN < |
*@Abs(N) | *@Abs(N) | ||
Zeile 144: | Zeile 144: | ||
*S2 : String | *S2 : String | ||
*Ergebnis: String | *Ergebnis: String | ||
- | Verknüpfung | + | Verknüpfung |
*@Add(N1, | *@Add(N1, | ||
Zeile 156: | Zeile 156: | ||
*N2 : Wert | *N2 : Wert | ||
*Ergebnis: Wert | *Ergebnis: Wert | ||
- | Die Werte von N1 und N2 werden mit der AND-Funktion | + | Die Werte von N1 und N2 werden mit der AND-Funktion |
sind. Vergleiche: @OR, @NOT | sind. Vergleiche: @OR, @NOT | ||
Zeile 165: | Zeile 165: | ||
*@Date$(N) | *@Date$(N) | ||
- | *N : Integer - Ausgabeform | + | *N : Integer |
*Ergebnis: String - Datum | *Ergebnis: String - Datum | ||
- | Die Funktion | + | Die Funktion |
- | *0 : Kurzform | + | |
- | *1 : Langform (z.B. "9. April 1993") * | + | |
- | *2 : Langform mit Tag (z.B. " | + | |
*@Del$(S, | *@Del$(S, | ||
Zeile 258: | Zeile 255: | ||
*S : Laufwerkskennzeichen | *S : Laufwerkskennzeichen | ||
| | ||
- | Der Pfad des angegebenen Laufwerks wird ermittelt, wobei " | + | Der Pfad des angegebenen Laufwerks wird ermittelt, wobei " |
Beispiel: | Beispiel: | ||
Let CPfad$=@GetDir$(" | Let CPfad$=@GetDir$(" | ||
Zeile 274: | Zeile 271: | ||
*#N: Dateikennung | *#N: Dateikennung | ||
*Ergebnis: Integer - Attribut | *Ergebnis: Integer - Attribut | ||
- | Das Attribut einer Datei wird ermittelt. Der Dateikennung muß zuvor mit ASSIGN einer Datei zugewiesen worden sein. Die Datei darf nicht geöffnet sein. Die Werte für | + | Das Attribut einer Datei wird ermittelt. Der Dateikennung muß zuvor mit ASSIGN einer Datei zugewiesen worden sein. Die Datei darf nicht geöffnet sein. Die Werte für Attribute: |
*$01 = ReadOnly | *$01 = ReadOnly | ||
*$02 = Hidden | *$02 = Hidden | ||
Zeile 296: | Zeile 293: | ||
*@GetKey$() | *@GetKey$() | ||
*Ergebnis: String (1 Zeichen) | *Ergebnis: String (1 Zeichen) | ||
- | Wartet auf einen Tastendruck und gibt das Ergebnis | + | Wartet auf einen Tastendruck und gibt das Ergebnis |
*@GT(N1,N2) | *@GT(N1,N2) | ||
Zeile 313: | Zeile 310: | ||
*S : String | *S : String | ||
*Ergebnis: Wert (0 oder 1) | *Ergebnis: Wert (0 oder 1) | ||
- | Das Ergebnis ist dann 1, wenn die zuletzt | + | Das Ergebnis ist dann 1, wenn die zuletzt |
Beispiel: | Beispiel: | ||
WaitKey | WaitKey | ||
Zeile 380: | Zeile 377: | ||
*N2 : Wert | *N2 : Wert | ||
*Ergebnis: Integer | *Ergebnis: Integer | ||
- | ODER-Funktion: | + | ODER-Funktion: |
*@Ord(S) | *@Ord(S) | ||
Zeile 400: | Zeile 397: | ||
*N : Integer - Scancode | *N : Integer - Scancode | ||
*Ergebnis: Integer (1 oder 0) | *Ergebnis: Integer (1 oder 0) | ||
- | Wenn der letzte Scancode (virtueller Tastencode) mit N (0 bis 254) bereinstimmt, ist das Ergebnis 1, anderenfalls ist es 0. Tabelle der Scancodes siehe unter %SCANKEY. | + | Wenn der letzte Scancode (virtueller Tastencode) mit N (0 bis 254) übereinstimmt, ist das Ergebnis 1, anderenfalls ist es 0. Tabelle der Scancodes siehe unter %SCANKEY. |
*@Sqr(N) | *@Sqr(N) | ||
Zeile 425: | Zeile 422: | ||
*Ergebnis: Substring aus S1 | *Ergebnis: Substring aus S1 | ||
Aus dem String S1 wird der N-te Teilstring herausgefiltert, | Aus dem String S1 wird der N-te Teilstring herausgefiltert, | ||
- | LET A$ = " | + | LET A$ = " |
PRINT @SUBSTR$(A$, | PRINT @SUBSTR$(A$, | ||
- | Das Ergebnis wäre der String " | + | Das Ergebnis wäre der String " |
HINWEIS: S2 darf auch aus mehreren Zeichen bestehen! | HINWEIS: S2 darf auch aus mehreren Zeichen bestehen! | ||
*@Time$(N) | *@Time$(N) | ||
- | *N : Integer (0 .. 1) - Unterfunktion | + | *N : Integer (0 .. 9) Dummy-Wert |
*Ergebnis: String | *Ergebnis: String | ||
- | Die Funktion ermittelt die aktuelle Uhrzeit:\\ | + | Die Funktion ermittelt die aktuelle Uhrzeit |
- | N = 0 : Sunden | + | |
- | N = 1 : Sekunden und 100stel Sekunden (z.B. " | + | |
*@Translate$(S1, | *@Translate$(S1, | ||
Zeile 447: | Zeile 442: | ||
*S : String | *S : String | ||
*Ergebnis: String | *Ergebnis: String | ||
- | Die führenden | + | Die führenden |
*@Upper$(S) | *@Upper$(S) | ||
*S : String | *S : String | ||
*Ergebnis: String | *Ergebnis: String | ||
- | Der String S wird komplett in Großbuchstaben umgewandelt, | + | Der String S wird komplett in Großbuchstaben umgewandelt, |
*@Val(S) | *@Val(S) | ||
Zeile 479: | Zeile 474: | ||
*AddFiles S | *AddFiles S | ||
*S : String - Dateimaske | *S : String - Dateimaske | ||
- | Mit diesem Befehl wird eine Dateiliste der Listbox-Liste | + | Mit diesem Befehl wird eine Dateiliste der Listbox-Liste |
Beispiel: | Beispiel: | ||
ClearList | ClearList | ||
Zeile 486: | Zeile 481: | ||
*AddString S | *AddString S | ||
*S : String | *S : String | ||
- | Mit diesem Befehl wird der String der Listbox-Liste | + | Mit diesem Befehl wird der String der Listbox-Liste |
Beispiel: | Beispiel: | ||
ClearList | ClearList | ||
Zeile 494: | Zeile 489: | ||
*Append #N | *Append #N | ||
*N: Wert - Dateinummer (1 .. 8) | *N: Wert - Dateinummer (1 .. 8) | ||
- | Die Datei #N wird geöffnet, um Daten anzufügen. Tritt ein Fehler auf, ist %IoResult größer als 0. | + | Die Datei #N wird geöffnet, um Daten anzufügen. Tritt ein Fehler auf, ist %IoResult größer als 0. |
Beispiel: | Beispiel: | ||
Assign # | Assign # | ||
Zeile 518: | Zeile 513: | ||
*Beep | *Beep | ||
- | Gibt einen Signalton aus. Zur Tonausgabe siehe auch unter SOUND und PLAY! | + | Gibt einen Signalton aus. |
*ChDir S | *ChDir S | ||
Zeile 524: | Zeile 519: | ||
Es wird zum Verzeichnis S gewechselt. Enthält S eine Laufwerksangabe, | Es wird zum Verzeichnis S gewechselt. Enthält S eine Laufwerksangabe, | ||
Beispiel: | Beispiel: | ||
- | ChDir "D:\TABELLEN\GRAFIK" | + | ChDir "A:\PROFAN\DATEN" |
- | | + | |
*ClearList | *ClearList | ||
- | Die ListBox-Liste wird gelöscht, d.h. der Zeiger wird auf den Anfang gesetzt. Mit AddFiles oder AddString wird die Liste gefüllt. | + | Die ListBox-Liste wird gelöscht, d.h. der Zeiger wird auf den Anfang gesetzt. Mit AddFiles oder AddString wird die Liste gefüllt. |
*Close #N | *Close #N | ||
Zeile 543: | Zeile 538: | ||
*Cls | *Cls | ||
Löscht den Bildschirm. | Löscht den Bildschirm. | ||
- | |||
- | *Color C1,C2 | ||
- | *C1 : Wert - Textfarbe (0 .. 15) | ||
- | *C2 : Wert - Hintegrund (0 .. 15) | ||
- | Die Farben des Textmodus (PRINT, TBOX, INPUT) werden festgelegt. Die Farben entsprechen den 16 Farben von MS-DOS | ||
- | im Textmodus. | ||
- | Beispiel: | ||
- | Color 15,0 | ||
- | Print "Hugo was here!" | ||
- | |||
- | *Copy S1 > S2 | ||
- | *S1 : String - Quelldatei | ||
- | *S2 : String - Zieldatei | ||
- | Die Quelldatei wird kopiert und erhält Zieldatei als Namen. Beide Strings können auch Pfadangaben enthalten. | ||
- | Wildcards sind jedoch nicht gestattet. | ||
- | Beispiel: | ||
- | COPY " | ||
*Dec VAR | *Dec VAR | ||
Zeile 567: | Zeile 545: | ||
*Declare VAR [, | *Declare VAR [, | ||
*VAR : Variablen-Name | *VAR : Variablen-Name | ||
- | In PROFAN | + | In PROFAN |
Mit Ausnahme der Bereichsvariablen sind alle Variablen, die in Prozeduren oder Unterprogrammen deklariert werden | Mit Ausnahme der Bereichsvariablen sind alle Variablen, die in Prozeduren oder Unterprogrammen deklariert werden | ||
- | nur dort lokal gültig. Der verwandte Speicherplatz wird bei Verlassen des Unterprogrammes/ | + | nur dort lokal gültig. Der verwandte Speicherplatz wird bei Verlassen des Unterprogrammes/ |
Beispliel: | Beispliel: | ||
Decalare XPos%, | Decalare XPos%, | ||
Zeile 585: | Zeile 563: | ||
*FileMode N | *FileMode N | ||
*N: Integer - Filemodus (siehe DOS-Dokumentation) | *N: Integer - Filemodus (siehe DOS-Dokumentation) | ||
- | Der Filemodus der für | + | Der Filemodus der für das Öffnen von Dateien (mit RESET, REWRITE oder OPENRW) und den Zugriff auf diesen gilt, wird eingestellt. Unter allen DOS-Versionen sind folgende Filemodi vorhanden: |
*0: Nur lesen | *0: Nur lesen | ||
*1: Nur schreiben | *1: Nur schreiben | ||
Zeile 592: | Zeile 570: | ||
*Font N | *Font N | ||
- | *N : Wert - Font - Nummer (0 .. 2) | + | Wird erkannt, ist beim Portfolio aber wirkungslos. |
- | Der Font N fr den Textmodus (Textausgabe mit PRINT) wird gewählt: | + | |
- | * 0 : System-Font (ANSI-Zeichensatz) | + | |
- | *1 : OEM-Font (ASCII-Zeichensatz) | + | |
- | *2 : ANSI-Font | + | |
- | Ist unter DOS wirkungslos. Damit die Zeichen unter Windows richtig angezeigt werden, solle am Anfang des Programmes FONT 1 eingestellt werden. | + | |
*If N ... [ElseIf N ...] [Else ... ] | *If N ... [ElseIf N ...] [Else ... ] | ||
*EndIf | *EndIf | ||
*N : Wert . Bedingungsausdruck | *N : Wert . Bedingungsausdruck | ||
- | Die zwischen IF und ENDIF stehenden Zeilen werden nur dann ausgeführt, wenn N ungleich 0 ist. | + | Die zwischen IF und ENDIF stehenden Zeilen werden nur dann ausgeführt, wenn N ungleich 0 ist. |
Beispiel: | Beispiel: | ||
If @Equ(Test%, | If @Equ(Test%, | ||
Zeile 608: | Zeile 581: | ||
Print " | Print " | ||
EndIf | EndIf | ||
- | Auch eine Abrage auf mehrere Bedingungen (z.B. bei der Auswertung eines Menüs) ist mit ELSEIF möglich. Sobald eine Bedingung | + | Auch eine Abrage auf mehrere Bedingungen (z.B. bei der Auswertung eines Menüs) ist mit ELSEIF möglich. Sobald eine Bedingung |
IF @Lt(A%,1) | IF @Lt(A%,1) | ||
- | COLOR 1,15 | ||
PRINT "A ist kleiner als 1" | PRINT "A ist kleiner als 1" | ||
ELSEIF @Equ(A%,1) | ELSEIF @Equ(A%,1) | ||
- | COLOR 2,15 | ||
PRINT "A ist gleich 1" | PRINT "A ist gleich 1" | ||
ELSEIF @Equ(A%,2) | ELSEIF @Equ(A%,2) | ||
- | COLOR 3,15 | ||
PRINT "A ist gleich 2" | PRINT "A ist gleich 2" | ||
ELSE | ELSE | ||
- | PRINT "A ist gr”áer | + | PRINT "A ist größer |
ENDIF | ENDIF | ||
- | ACHTUNG: Hinter ELSEIF muß ein Bedingungsausdruck stehen. Fehlt dieser | + | ACHTUNG: Hinter ELSEIF muß ein Bedingungsausdruck stehen. Fehlt dieser |
*IfNot N ... [ElseIf N ... ] [Else ...] | *IfNot N ... [ElseIf N ... ] [Else ...] | ||
*EndIf | *EndIf | ||
- | Als Kurzform | + | Als Kurzform |
IfNot @Equ(Test%, | IfNot @Equ(Test%, | ||
Print "Test% ist nicht 78!" | Print "Test% ist nicht 78!" | ||
Zeile 661: | Zeile 631: | ||
*S : String | *S : String | ||
Einer zuvor mit DECLARE declarierten Variablen wird ein Wert zugewiesen. Das LET darf nicht weggelassen werden! | Einer zuvor mit DECLARE declarierten Variablen wird ein Wert zugewiesen. Das LET darf nicht weggelassen werden! | ||
- | Beim LET-Befehl | + | Beim LET-Befehl |
Beispiel: | Beispiel: | ||
LET Text$ = "Du hast", | LET Text$ = "Du hast", | ||
- | HINWEIS: Die automatische Typumwandlung funktioniert bei einfachen Variablen. Bei Funktionen, die einen numerischen Wert zurükgegeben, wird nicht immer automatisch umgewandelt, | + | HINWEIS: Die automatische Typumwandlung funktioniert bei einfachen Variablen. Bei Funktionen, die einen numerischen Wert zurükgegeben, wird nicht immer automatisch umgewandelt, |
*ListBoxItem$ N = S | *ListBoxItem$ N = S | ||
*N : Integer - Index (0 .. 999) | *N : Integer - Index (0 .. 999) | ||
*S : String | *S : String | ||
- | Der String S wird wird an Position N in die ListBox-Liste | + | Der String S wird wird an Position N in die ListBox-Liste |
*Locate X,Y | *Locate X,Y | ||
*X : Wert - Zeile | *X : Wert - Zeile | ||
*Y : Wert - Spalte | *Y : Wert - Spalte | ||
- | Der nächste PRINT- oder INPUT-Befehl | + | Der nächste PRINT- oder INPUT-Befehl |
- | Wirkt nur für Textmodus-Befehle. | + | |
*MkDir S | *MkDir S | ||
Zeile 681: | Zeile 650: | ||
Das Verzeichnis S wird angelegt. Im Falle eines Fehlers hat %IORESULT einen von 0 verschiedenen Wert. | Das Verzeichnis S wird angelegt. Im Falle eines Fehlers hat %IORESULT einen von 0 verschiedenen Wert. | ||
Beispiel: | Beispiel: | ||
- | MkDir "C:\WINDOWS\TEST" | + | MkDir "C:\DOS\TEST" |
Siehe auch: ChDir, RmDir | Siehe auch: ChDir, RmDir | ||
*NumWidth N | *NumWidth N | ||
*N: Integer - Mindestweite | *N: Integer - Mindestweite | ||
- | Mindestweite der Ausgabe numerischer Werte. Dieser Wert wird auch von der @STR$-Funktion und dem Befehl DrawText verwandt. Ist der Ausgabestring | + | Mindestweite der Ausgabe numerischer Werte. Dieser Wert wird auch von der @STR$-Funktion und dem Befehl DrawText verwandt. Ist der Ausgabestring |
Siehe auch: Decimals | Siehe auch: Decimals | ||
Zeile 699: | Zeile 668: | ||
Die Aufrufparameter einer Prozedur werden Variablen zugewiesen, die innerhalb der Prozedur bekannt sind. | Die Aufrufparameter einer Prozedur werden Variablen zugewiesen, die innerhalb der Prozedur bekannt sind. | ||
Ein Beispiel findet sich unter PROC. Die Anzahl der Variablen sollte gleich der Anzahl der Übergabeparameter sein; | Ein Beispiel findet sich unter PROC. Die Anzahl der Variablen sollte gleich der Anzahl der Übergabeparameter sein; | ||
- | überprft | + | überprft |
Siehe auch: Proc | Siehe auch: Proc | ||
Zeile 705: | Zeile 674: | ||
*N : Wert - Dateikennzeichen (1..8) | *N : Wert - Dateikennzeichen (1..8) | ||
*f : druckbarer Ausdruck | *f : druckbarer Ausdruck | ||
- | Der Ausdruck, bzw. die Ausdrücke | + | Der Ausdruck, bzw. die Ausdrücke |
Siehe auch unter ASSIGN, REWRITE, APPEND und CLOSE. | Siehe auch unter ASSIGN, REWRITE, APPEND und CLOSE. | ||
*Print f;f,f... | *Print f;f,f... | ||
*f : druckbarer Ausdruck | *f : druckbarer Ausdruck | ||
- | Der Ausdruck, bzw. die Ausdrücke | + | Der Ausdruck, bzw. die Ausdrücke |
Print "Dies ist der", | Print "Dies ist der", | ||
Zeile 717: | Zeile 686: | ||
*< | *< | ||
Eine Prozedur wird definiert, die im nachfolgenden Programm wie ein neuer Befehl verwandt werden kann. Über den | Eine Prozedur wird definiert, die im nachfolgenden Programm wie ein neuer Befehl verwandt werden kann. Über den | ||
- | PARAMETERS-Befehl werden die übergebenen | + | PARAMETERS-Befehl werden die übergebenen |
Beispiel: | Beispiel: | ||
PROC Wiederhole | PROC Wiederhole | ||
Zeile 729: | Zeile 698: | ||
ENDPROC | ENDPROC | ||
Wiederhole " | Wiederhole " | ||
- | Die in der Prozedur | + | Die in der Prozedur |
Übergabe eines Wertes an das aufrufende Programm möglich ist. | Übergabe eines Wertes an das aufrufende Programm möglich ist. | ||
Zeile 735: | Zeile 704: | ||
*#N1: Dateikennung (1 - 8) | *#N1: Dateikennung (1 - 8) | ||
*N2: Integer - zu schreibender Wert (0 ... 255) | *N2: Integer - zu schreibender Wert (0 ... 255) | ||
- | Das Byte N2 wird an die aktuelle Position des Dateizeigers in die Datei mit der Kennung #N1 geschrieben und der Dateizeiger um 1 weitergesetzt. Befindet sich dadurch der Zeiger hinter dem Ende der Datei, liefert @EOF(#N) den Wert 1. Durch weitere Schreiboperationen mit PUTBYTE | + | Das Byte N2 wird an die aktuelle Position des Dateizeigers in die Datei mit der Kennung #N1 geschrieben und der Dateizeiger um 1 weitergesetzt. Befindet sich dadurch der Zeiger hinter dem Ende der Datei, liefert @EOF(#N) den Wert 1. Durch weitere Schreiboperationen mit PUTBYTE |
Siehe auch: @GetByte | Siehe auch: @GetByte | ||
*Randomize | *Randomize | ||
- | Sorgt dafür, daß die Zufallszahlen (@RND) auch wirklich zufälligen Charakter haben. | + | Sorgt dafür, daß die Zufallszahlen (@RND) auch wirklich zufälligen Charakter haben. |
*Rem ... | *Rem ... | ||
- | Alles was dahinter steht, ist Kommentar. REM steht immer am Anfang der Kommentarzeile. | + | Alles was dahinter steht, ist Kommentar. REM steht immer am Anfang der Kommentarzeile. |
Zeile 768: | Zeile 737: | ||
*Return [< | *Return [< | ||
- | Beenden einer Prozedur. Es ist möglich einen Wert zurückzugeben. Dieser steht dann in @$(0), @%(0), @&(0) und/oder @!(0): | + | Beenden einer Prozedur. Es ist möglich einen Wert zurückzugeben. Dieser steht dann in @$(0), @%(0), @&(0) und/oder @!(0): |
PROC Test | PROC Test | ||
Print "Das ist ein Test" | Print "Das ist ein Test" | ||
Zeile 775: | Zeile 744: | ||
Print "Im Hauptprogramm" | Print "Im Hauptprogramm" | ||
Test | Test | ||
- | Print " | + | Print " |
- | Der zurückgegebene | + | Der zurückgegebene |
*Rewrite #N | *Rewrite #N | ||
Zeile 792: | Zeile 761: | ||
Das Verzeichnis S wird gelöscht. Enthält es noch Dateien oder Unterverzeichnisse, | Das Verzeichnis S wird gelöscht. Enthält es noch Dateien oder Unterverzeichnisse, | ||
Sie auch: ChDir MkDir | Sie auch: ChDir MkDir | ||
- | |||
- | *Run S | ||
- | *S : String - Programmname | ||
- | Das Programm S wird aufgerufen und das aufrufende Profanprogramm beendet. Es können alle Windowsprogramme - auch mit Parametern - aufgerufen werden. | ||
- | Beispiele: | ||
- | Run " | ||
- | Run " | ||
- | Run " | ||
*Seek #N,A | *Seek #N,A | ||
Zeile 810: | Zeile 771: | ||
*N: Integer - Errorlevel | *N: Integer - Errorlevel | ||
Je nach Wunsch kann der Errorlevel auf einen der möglichen Werte gesetzt werden. Damit wird das Verhalten des Systems bei Auftreten eines Fehlers oder einer Warnung definiert: | Je nach Wunsch kann der Errorlevel auf einen der möglichen Werte gesetzt werden. Damit wird das Verhalten des Systems bei Auftreten eines Fehlers oder einer Warnung definiert: | ||
- | *2 - Für | + | *2 - Für ganz Vorsichtige: |
- | *1 - Für | + | *1 - Für die Programmentwicklung: |
*0 - Der Normalzustand: | *0 - Der Normalzustand: | ||
- | *-1 - Fast schon kriminell: Auch Fehlermeldungen werden | + | *-1 - Fast schon kriminell: Auch Fehlermeldungen werden |
Warnungen treten auf, wenn ein Ausdruck nicht als numerischer Wert zu interpretieren ist oder z.B. eine Bilddatei nicht gefunden wird ... | Warnungen treten auf, wenn ein Ausdruck nicht als numerischer Wert zu interpretieren ist oder z.B. eine Bilddatei nicht gefunden wird ... | ||
Zeile 827: | Zeile 788: | ||
*$20 = Archiv | *$20 = Archiv | ||
Werden mehrer Attribute verwandt, so sind sie zu addieren. | Werden mehrer Attribute verwandt, so sind sie zu addieren. | ||
- | |||
- | *Shell S | ||
- | *#S : String - Programmname | ||
- | Das Programm S wird aufgerufen und das aufrufende Profanprogramm läuft weiter. Es können alle Windowsprogramme - auch mit Parametern - aufgerufen werden. | ||
- | Beispiel: | ||
- | Shell " | ||
- | Vergleiche auch: Run | ||
*StrWidth N | *StrWidth N | ||
*N: Integer (Mindestweite) | *N: Integer (Mindestweite) | ||
- | Die Mindest-Ausgabeweite | + | Die Mindest-Ausgabeweite |
*Sub VAR,N | *Sub VAR,N | ||
Zeile 881: | Zeile 835: | ||
... - ... | ... - ... | ||
123 - F12 | 123 - F12 | ||
- | Die übrigen | + | Die übrigen |
Cls | Cls | ||
While 1 ' | While 1 ' | ||
Zeile 909: | Zeile 863: | ||
Wend | Wend | ||
- | ========================= | + | ===== Fehlermeldungen |
Folgende Fehlermeldungen und Warnungen werden vom Interpreter bzw. Compiler und Runtime-System erzeugt: | Folgende Fehlermeldungen und Warnungen werden vom Interpreter bzw. Compiler und Runtime-System erzeugt: | ||
- | Programm-Struktur | + | ^Programm-Struktur^^ |
- | ----------------- | + | |100 :| Systemvariable unbekannt:| |
- | 100 : Systemvariable unbekannt: | + | |101 :| Funktion unbekannt:| |
- | 101 : Funktion unbekannt: | + | |102 :| Befehl unbekannt:| |
- | 102 : Befehl unbekannt: | + | |103 :| Integer-Variable erwartet!| |
- | 103 : Integer-Variable erwartet! | + | |104 :| Dateikennung erwartet!| |
- | 104 : Dateikennung erwartet! | + | |105 :| Tabellenkennung erwartet!| |
- | 105 : Tabellenkennung erwartet! | + | |106 :| ENDIF bzw. ELSE nicht gefunden!| |
- | 106 : ENDIF bzw. ELSE nicht gefunden! | + | |107 :| ENDIF nicht gefunden!| |
- | 107 : ENDIF nicht gefunden! | + | |108 :| Zu tiefe WHILE-Verschachtelung!| |
- | 108 : Zu tiefe WHILE-Verschachtelung! | + | |109 :| ENDWHILE bzw. WHILE nicht gefunden!| |
- | 109 : ENDWHILE bzw. WHILE nicht gefunden! | + | |110 :| WHILE fehlt!| |
- | 110 : WHILE fehlt! | + | |111 :| GOSUB/PROC fehlt!| |
- | 111 : GOSUB/PROC fehlt! | + | |112 :| PROC fehlt!| |
- | 112 : PROC fehlt! | + | |113 :| Label nicht gefunden:| |
- | 113 : Label nicht gefunden: | + | |114 :| Zu tiefe GOSUB/ |
- | 114 : Zu tiefe GOSUB/ | + | |115 :| ENDPROC nicht gefunden!| |
- | 115 : ENDPROC nicht gefunden! | + | |
+ | ^Ungültige/ | ||
+ | |200 : | ||
+ | |201 :| Division durch 0!| | ||
+ | |204 :| String-Index ist < 1 !| | ||
+ | |205 :| Substring-Nr ist < 1 !| | ||
+ | |206 :| So viele Elemente sind nicht da!| | ||
+ | |207 :| Bereichsgrenze überschritten: | ||
+ | |208 :| Kommandozeilenparameter fehlt!| | ||
+ | |209 :| Datei nicht gefunden: | ||
+ | |210 :| Dateinummer nicht im erlaubten Bereich!| | ||
+ | |211 :| Parameterzahl muß zwischen 0 und 8 liegen!| | ||
+ | |212 :| Zu wenig Parameter!| | ||
+ | |213 :| Funktionsargument fehlt!| | ||
+ | |214 :| Keine Zahl:| | ||
+ | |215 :| Variable nicht deklariert: | ||
+ | |216 :| Falscher Parametertyp: | ||
+ | |217 :| Speicher für Integer-Variablen erschöpft!| | ||
+ | |218 :| Speicher für LongInt-Variablen erschöpft!| | ||
+ | |219 :| Speicher für String-Variablen erschöpft!| | ||
+ | |221 :| Während der Druckausgabe verboten: | ||
+ | |222 :| Box nicht innerhalb des Fensters!| | ||
+ | |231 :| Es sind lediglich 0 bis 999 Elemente erlaubt!| | ||
+ | |232 :| Zu viele Elemente!| | ||
+ | |233 :| Das Element gibt es nicht!| | ||
+ | |238 :| Stringende fehlt!| | ||
+ | |||
+ | ^IO-Fehler^^ | ||
+ | |300 :| Datei kann nicht gelesen werden:| | ||
+ | |301 :| Datei kann nicht erzeugt werden:| | ||
+ | |302 :| Fehler beim Lesen:| | ||
+ | |303 :| Fehler beim Schreiben:| | ||
- | Ungltige/ | + | ^Sonstige Fehler^^ |
- | ---------------------------- | + | |900 :| Dieser Befehl |
- | 200 : Ungltiger Funktionswert! | + | |901 :| Nur 999 Zeilen |
- | 201 : Division durch 0! | + | |902 :| Zeile zu lang (max. 127 Zeichen)!| |
- | 204 : String-Index | + | |905 :| Keine gültige PROFAN Datei!| |
- | 205 : Substring-Nr ist < 1 ! | + | |906 :| Programmdatei fehlerhaft!| |
- | 206 : So viele Elemente sind nicht da! | + | |
- | 207 : Bereichsgrenze berschritten: | + | |
- | 208 : Kommandozeilenparameter fehlt! | + | |
- | 209 : Datei nicht gefunden: | + | |
- | 210 : Dateinummer nicht im erlaubten Bereich! | + | |
- | 211 : Parameterzahl muá zwischen 0 und 8 liegen! | + | |
- | 212 : Zu wenig Parameter! | + | |
- | 213 : Funktionsargument fehlt! | + | |
- | 214 : Keine Zahl: | + | |
- | 215 : Variable nicht declariert: | + | |
- | 216 : Falscher Parametertyp: | + | |
- | 217 : Speicher fr Integer-Variablen ersch”pft! | + | |
- | 218 : Speicher fr LongInt-Variablen ersch”pft! | + | |
- | 219 : Speicher fr String-Variablen ersch”pft! | + | |
- | 221 : W„hrend | + | |
- | 222 : Box nicht innerhalb des Fensters! | + | |
- | 231 : Es sind lediglich 0 bis 999 Elemente | + | |
- | 232 : Zu viele Elemente! | + | |
- | 233 : Das Element gibt es nicht! | + | |
- | 238 : Stringende fehlt! | + | |
- | IO-Fehler | + | ===== Download ===== |
- | --------- | + | |
- | 300 : Datei kann nicht gelesen werden: | + | |
- | 301 : Datei kann nicht erzeugt werden: | + | |
- | 302 : Fehler beim Lesen: | + | |
- | 303 : Fehler beim Schreiben: | + | |
- | Sonstige Fehler | + | {{: |
- | --------------- | + | |
- | 900 : Dieser Befehl ist in der Sharewareversion nicht vorhanden! | + | |
- | 901 : Nur 999 Zeilen sind erlaubt! | + | |
- | 902 : Zeile zu lang (max. 127 Zeichen)! | + | |
- | 905 : Keine gltige PROFANý Datei! | + | |
- | 906 : Programmdatei fehlerhaft! | + |
software/diy/andere/profan.1139938638.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)