PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:diy:andere:profan

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:diy:andere:profan [14/02/2006 22:02]
uxt Korrektur
software:diy:andere:profan [22/02/2006 00:02] (aktuell)
Zeile 1: Zeile 1:
 ====== Profan v4.0 ====== ====== Profan v4.0 ======
  
- Als ich zuerst davon hörte war ich verwundert, eine Programmiersprache ​für ​den Pofo von der ich noch nichts gehört habe? Ein Arbeitskollege erzählte mir er habe auf www.profan.de etwas über ​den ATARI Porfolio gelesen.  + Als ich zuerst davon hörte war ich verwundert, eine Programmiersprache ​für den Pofo von der ich noch nichts gehört habe? Ein Arbeitskollege erzählte mir er habe auf www.profan.de etwas über den ATARI Porfolio gelesen.  
-Er sagte PROFAN sei eine praktische Programmiersprache,​ halb Script, halb Batch, ​für ​diverse Plattformen mit +Er sagte PROFAN sei eine praktische Programmiersprache,​ halb Script, halb Batch, ​für diverse Plattformen mit 
 Open-Source Quell-dateien. Open-Source Quell-dateien.
- ​Tatsächlich,​ es gab auch eine Version ​für ​den POFO.+ ​Tatsächlich,​ es gab auch eine Version ​für den POFO.
  
- Halb BASIC, halb PASCAL mit C-Ansätzen,​ ist es eine Script-Sprache mit gewissen Eigenheiten. Die vorliegende Version wurde speziell ​für ​den Portfolio angepasst, bietet also nicht alle Funktionen die die PC-Versionen beinhalten. + Halb BASIC, halb PASCAL mit C-Ansätzen,​ ist es eine Script-Sprache mit gewissen Eigenheiten. Die vorliegende Version wurde speziell ​für den Portfolio angepasst, bietet also nicht alle Funktionen die die PC-Versionen beinhalten. 
- Um Entäuschungen vorzubeugen sei hier gesagt: PROFAN ​ünterstützt ​keine Grafik (nur Text-Modus),​ keine Dezimalzahlen (nur Integer) und keine Operatoren (+ - * / ...), hierzu gibt es spezielle Funktionen wie @ADD(a,b) oder @MUL(a,b). @SQR(N) bildet die Quadratzahl (N hoch 2), Wurzel gibt es nicht. ​Dafür ​bietet PROFAN interessante String-Manipulationen wie @SUBSTR$(S1,​N,​S2),​ hiermit kann man Teile eines Strings in ein anderes lesen, oder @TRANSLATE$(S1,​S2,​S3) um Teilstücke ​eines Strings durch ein anderes zu ersetzen. + Um Entäuschungen vorzubeugen sei hier gesagt: PROFAN ​unterstützt ​keine Grafik (nur Text-Modus),​ keine Dezimalzahlen (nur Integer) und keine Operatoren (+ - * / ...), hierzu gibt es spezielle Funktionen wie @ADD(a,b) oder @MUL(a,b). @SQR(N) bildet die Quadratzahl (N hoch 2), Wurzel gibt es nicht. ​Dafür ​bietet PROFAN interessante String-Manipulationen wie @SUBSTR$(S1,​N,​S2),​ hiermit kann man Teile eines Strings in ein anderes lesen, oder @TRANSLATE$(S1,​S2,​S3) um Teilstücke ​eines Strings durch ein anderes zu ersetzen. 
- ​Ich ​fürchte, daß der folgende Bericht die Nutzbarkeit der Programmiersprache nicht entgültig ​beurteilen kann, es  + ​Ich ​fürchte, daß der folgende Bericht die Nutzbarkeit der Programmiersprache nicht entgültig ​beurteilen kann, es  
-gibt zu viele unterschiedliche Anforderungen. Welche diese Sprache ​erfüllt ​muß jeder selbst herausfinden. ​+gibt zu viele unterschiedliche Anforderungen. Welche diese Sprache ​erfüllt ​muß jeder selbst herausfinden. ​
 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 ​mich, als "​Ceisches BASCAL vom DOS" getauft ​+Allerdings muß man einen neuen Dialekt lernen den ich, für mich, als "​Ceisches BASCAL vom DOS" getauft ​
 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 ​irreführend, die Ursache liegt ganz wo anders.\\+Die Fehlermeldungen sind häufig ​irreführend, die Ursache liegt ganz wo anders.\\
  
-Vorsicht mit der Anleitung die dem Programm ​beigefügt ​ist. Da die Portfolio-Version eine abgespeckte PC-Version ist wurden die nicht unterstützten ​Features aus der Anleitung entfernt, nicht aber die Querverweise. Bei vielen Beschreibungen werden Funktionen erwähnt die diese Version nicht unterstützt.+Vorsicht mit der Anleitung die dem Programm ​beigefügt ​ist. Da die Portfolio-Version eine abgespeckte PC-Version ist wurden die nicht unterstützten ​Features aus der Anleitung entfernt, nicht aber die Querverweise. Bei vielen Beschreibungen werden Funktionen erwähnt die diese Version nicht unterstützt.
  
  
Zeile 29: Zeile 29:
  
  
-In PROFAN ​müssen ​alle Variablen (zeitlich) vor der ersten Benutzung deklariert werden. String-Variablen werden durch ein $, LongInt-Variablen durch ein &, Float-Variablen durch ein !, Integer-Variablen durch ein % und Bereichsvariablen durch ein # gekennzeichnet. 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/​der Prozedur wieder freigegegen. Beispliel:+In PROFAN ​müssen ​alle Variablen (zeitlich) vor der ersten Benutzung deklariert werden. String-Variablen werden durch ein $, LongInt-Variablen durch ein &, Float-Variablen durch ein !, Integer-Variablen durch ein % und Bereichsvariablen durch ein # gekennzeichnet. 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/​der Prozedur wieder freigegegen. Beispliel:
  
 ===== 1. Systemvariablen ===== ===== 1. Systemvariablen =====
  
-Systemvariablen geben Auskunft ​über ​Zustände des Systems, z.B. die aktuelle Cursorposition,​ das aktuelle Laufwerk, etc. Es gibt zwei Typen von Systemvariablen:​+Systemvariablen geben Auskunft ​über Zustände des Systems, z.B. die aktuelle Cursorposition,​ das aktuelle Laufwerk, etc. Es gibt zwei Typen von Systemvariablen:​
   *$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 ​Dateimodus+        *12 - Ungültiger ​Dateimodus
         *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 ​Laufwerksgrenzen möglich (siehe Rename)+        *17 - RENAME nicht über Laufwerksgrenzen möglich (siehe Rename)
         *18 - Kein weiterer Eintrag (bei @FindFirst/​@FindNext)         *18 - Kein weiterer Eintrag (bei @FindFirst/​@FindNext)
         *100 - Lesefehler von Diskette/​Platte         *100 - Lesefehler von Diskette/​Platte
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 ​gedrückten ​Taste. Anwendung nach den Befehlen WAITKEY und WAITINPUT:+  *%Key - Der ANSI-Code der zuletzt ​gedrückten ​Taste. Anwendung nach den Befehlen WAITKEY und WAITINPUT:
  
   WaitInput   WaitInput
     If @Equ(Key,​90)     If @Equ(Key,​90)
-    Print "Du hast '​Z' ​gedrückt"+    Print "Du hast '​Z' ​gedrückt"
   EndIf   EndIf
  
-  *%ParCount - Die Anzahl der beim Programmaufruf ​übergebenen ​Kommandozeilen-Parameter. Parameter 0 ist beim Interpreter der Interpreter selber, bei der Runtime das Runtime-Modul und bei einer EXE-Datei die EXE-Datei. Parameter 1 ist bei Interpreter und Runtime das ausgeführte ​Programm. Da eine EXE-Datei auch als Runtime fungieren kann, ist er dort entweder der Name der PRF-Datei oder ein String, der mit einem der folgenden Zeichen beginnt:+  *%ParCount - Die Anzahl der beim Programmaufruf ​übergebenen ​Kommandozeilen-Parameter. Parameter 0 ist beim Interpreter der Interpreter selber, bei der Runtime das Runtime-Modul und bei einer EXE-Datei die EXE-Datei. Parameter 1 ist bei Interpreter und Runtime das ausgeführte ​Programm. Da eine EXE-Datei auch als Runtime fungieren kann, ist er dort entweder der Name der PRF-Datei oder ein String, der mit einem der folgenden Zeichen beginnt:
 ! " # $ % & ' ( ) * + , - . / ! " # $ % & ' ( ) * + , - . /
 Weitere Hinweise siehe unter @PAR$. Weitere Hinweise siehe unter @PAR$.
-  *%ScanKey - Der Scancode (virtueller Code) der zuletzt ​gedrückten ​Taste.+  *%ScanKey - Der Scancode (virtueller Code) der zuletzt ​gedrückten ​Taste.
       *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, ​dürfen ​auch Funktionen stehen.  +wo in PROFAN Variablen oder konstante Werte (Literale) eingesetzt werden können, ​dürfen ​auch Funktionen stehen.  
-Der Rückgabewert ​der Funktion sollte der gleiche Typ sein, wie der erwartete Wert.+Der Rückgabewert ​der Funktion sollte der gleiche Typ sein, wie der erwartete Wert.
 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 ​zurück, die übrigen ​Funktionen einen numerischen Wert. In einigen Fällen enden auch Vergeleichsfunktionen,​ die entweder 1 oder 0 zurückgeben ​mit einem $, um deutlich zu machen, das hiermit Strings verglichen werden.+Funktionen, deren Funktionsnamen mit dem $ enden, geben in vielen Fällen einen String ​zurück, die übrigen ​Funktionen einen numerischen Wert. In einigen Fällen enden auch Vergeleichsfunktionen,​ die entweder 1 oder 0 zurückgeben ​mit einem $, um deutlich zu machen, das hiermit Strings verglichen werden.
  
-Wenn der Rückgabewert ​einer Funktion uninteressant ist, kann die Zuweisung auch weggelassen werden. Bis auf die +Wenn der Rückgabewert ​einer Funktion uninteressant ist, kann die Zuweisung auch weggelassen werden. Bis auf die 
 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$("​Das ist die Liste",​0)   @LISTBOX$("​Das ist die Liste",​0)
 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 ​über ​die Systemvariable $GETTEXT gelesen.+Ergebnis der Auswahl ​über die Systemvariable $GETTEXT gelesen.
  
  
Zeile 122: Zeile 122:
      *N : Integer (0 ... 8)      *N : Integer (0 ... 8)
      ​*Ergebnis:​ String      ​*Ergebnis:​ String
-Der N-te übergebene ​Parameter in einer selbstdefinierten Funktion (oder Prozedur) als String.+Der N-te übergebene ​Parameter in einer selbstdefinierten Funktion (oder Prozedur) als String.
  
   *@%(N)   *@%(N)
      *N : Integer (0 ... 8)      *N : Integer (0 ... 8)
      ​*Ergebnis:​ Integer      ​*Ergebnis:​ Integer
-Der N-te übergebene ​Parameter in einer selbstdefinierten Funktion (oder Prozedur) als Integer.+Der N-te übergebene ​Parameter in einer selbstdefinierten Funktion (oder Prozedur) als Integer.
  
   *@&(N)   *@&(N)
      *N : Integer (0 ... 8)      *N : Integer (0 ... 8)
      ​*Ergebnis:​ LongInt      ​*Ergebnis:​ LongInt
-Der N-te übergebene ​Parameter in einer selbstdefinierten Funktion (oder Prozedur) als LongInt. +Der N-te übergebene ​Parameter in einer selbstdefinierten Funktion (oder Prozedur) als LongInt. 
-Der 0. Parameter ist nach Aufruf einer Prozedur oder einem Unterprogramm mit RETURN <​Wert>  ​zurückgegebene ​Wert.+Der 0. Parameter ist nach Aufruf einer Prozedur oder einem Unterprogramm mit RETURN <​Wert>  ​zurückgegebene ​Wert.
  
   *@Abs(N)   *@Abs(N)
Zeile 144: Zeile 144:
       *S2 : String       *S2 : String
       *Ergebnis: String       *Ergebnis: String
-Verknüpfung ​der Strings S1 und S2. S2 wird an S1 angehängt.+Verknüpfung ​der Strings S1 und S2. S2 wird an S1 angehängt.
  
   *@Add(N1,​N2)   *@Add(N1,​N2)
Zeile 156: Zeile 156:
       *N2 : Wert       *N2 : Wert
       *Ergebnis: Wert       *Ergebnis: Wert
-Die Werte von N1 und N2 werden mit der AND-Funktion ​verknüpft. Das Ergebnis ist 0 wenn ein oder beide Werte 0 +Die Werte von N1 und N2 werden mit der AND-Funktion ​verknüpft. Das Ergebnis ist 0 wenn ein oder beide Werte 0 
 sind. Vergleiche: @OR, @NOT sind. Vergleiche: @OR, @NOT
  
Zeile 165: Zeile 165:
  
   *@Date$(N)   *@Date$(N)
-      *N : Integer - Ausgabeform+      *N : Integer ​(0..9) Dummy-Wert
       *Ergebnis: String - Datum       *Ergebnis: String - Datum
-Die Funktion ​ermittelt ​das aktuelle Datum in verschieden Formaten: +Die Funktion ​zeigt das aktuelle Datum an (TT.MM.JJ).
-          *0 : Kurzform ​(z.B"​09.04.1993"​) +
-          *1 : Langform (z.B. "9. April 1993") * +
-         *2 : Langform mit Tag (z.B. "​Freitag,​ der 9. April 1993") *+
  
   *@Del$(S,​N1,​N2)   *@Del$(S,​N1,​N2)
Zeile 258: Zeile 255:
      *S : Laufwerkskennzeichen      *S : Laufwerkskennzeichen
      ​*Ergebnis:​ String (Pfad)      ​*Ergebnis:​ String (Pfad)
-Der Pfad des angegebenen Laufwerks wird ermittelt, wobei "​@" ​für ​das aktuelle Laufwerk steht.+Der Pfad des angegebenen Laufwerks wird ermittelt, wobei "​@" ​für das aktuelle Laufwerk steht.
 Beispiel: Beispiel:
   Let CPfad$=@GetDir$("​C:"​)   Let CPfad$=@GetDir$("​C:"​)
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 ​Attribute:+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 ​zurück.+Wartet auf einen Tastendruck und gibt das Ergebnis ​zurück.
  
   *@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 ​gedrückte ​Taste im String S vorkommt.+Das Ergebnis ist dann 1, wenn die zuletzt ​gedrückte ​Taste im String S vorkommt.
 Beispiel: Beispiel:
   WaitKey   WaitKey
Zeile 380: Zeile 377:
     *N2 : Wert     *N2 : Wert
     *Ergebnis: Integer     *Ergebnis: Integer
-ODER-Funktion:​ Das Ergerbnis ist ungleich 0, wenn N1 ODER N2 (oder beide) ungleich 0 sind. Anders ​ausgedrückt: Es ist nur dann 0, wenn beide Argumente 0 sind.+ODER-Funktion:​ Das Ergerbnis ist ungleich 0, wenn N1 ODER N2 (oder beide) ungleich 0 sind. Anders ​ausgedrückt: Es ist nur dann 0, wenn beide Argumente 0 sind.
  
   *@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, ​ wobei S2 das Trennzeichen zwischen den Teilstrings ist. Beispiel: Aus dem String S1 wird der N-te Teilstring herausgefiltert, ​ wobei S2 das Trennzeichen zwischen den Teilstrings ist. Beispiel:
-  LET A$ = "​eins,​zwei,​drei,​vier,​fnf"+  LET A$ = "​eins,​zwei,​drei,​vier,​fünf"
   PRINT @SUBSTR$(A$,​3,","​)   PRINT @SUBSTR$(A$,​3,","​)
-Das Ergebnis wäre der String "​drei"​. Wird das Trennzeichen im String S1 nicht gefunden, ist das  Ergebnis ​für ​den ersten Teilstring der gesamte String und für ​ alle weiteren der Leerstring. Ist N kleiner als 1, erfolgt eine  Fehlermeldung. Ist N hingegen größer als die Anzahl der vorhandenen Teilstrings,​ so ist das Ergebnis ein Leerstring.\\+Das Ergebnis wäre der String "​drei"​. Wird das Trennzeichen im String S1 nicht gefunden, ist das  Ergebnis ​für den ersten Teilstring der gesamte String und für  alle weiteren der Leerstring. Ist N kleiner als 1, erfolgt eine  Fehlermeldung. Ist N hingegen größer als die Anzahl der vorhandenen Teilstrings,​ so ist das Ergebnis ein Leerstring.\\
 HINWEIS: S2 darf auch aus mehreren Zeichen bestehen! HINWEIS: S2 darf auch aus mehreren Zeichen bestehen!
  
Zeile 433: Zeile 430:
     *N : Integer (0 .. 9) Dummy-Wert     *N : Integer (0 .. 9) Dummy-Wert
     *Ergebnis: String     *Ergebnis: String
-Die Funktion ermittelt die aktuelle Uhrzeit in Stunden und Minuten (z.B. "​23:​45"​)\\+Die Funktion ermittelt die aktuelle Uhrzeit in Stunden und Minuten (z.B. "​23:​45"​)
  
   *@Translate$(S1,​S2,​S3)   *@Translate$(S1,​S2,​S3)
Zeile 445: Zeile 442:
     *S : String     *S : String
     *Ergebnis: String     *Ergebnis: String
-Die führenden ​und endenden Leerzeichen eines Strings werden abgeschnitten.+Die führenden ​und endenden Leerzeichen eines Strings werden abgeschnitten.
  
   *@Upper$(S)   *@Upper$(S)
     *S : String     *S : String
     *Ergebnis: String     *Ergebnis: String
-Der String S wird komplett in Großbuchstaben umgewandelt,​ wobei die deutschen Umlaute korrekt ​berücksichtigt ​werden.+Der String S wird komplett in Großbuchstaben umgewandelt,​ wobei die deutschen Umlaute korrekt ​berücksichtigt ​werden.
  
   *@Val(S)   *@Val(S)
Zeile 477: Zeile 474:
   *AddFiles S   *AddFiles S
     *S : String - Dateimaske     *S : String - Dateimaske
-Mit diesem Befehl wird eine Dateiliste der Listbox-Liste ​hinzugefügt+Mit diesem Befehl wird eine Dateiliste der Listbox-Liste ​hinzugefügt
 Beispiel: Beispiel:
   ClearList   ClearList
Zeile 484: Zeile 481:
   *AddString S   *AddString S
     *S : String     *S : String
-Mit diesem Befehl wird der String der Listbox-Liste ​hinzugefügt.+Mit diesem Befehl wird der String der Listbox-Liste ​hinzugefügt.
 Beispiel: Beispiel:
   ClearList   ClearList
Zeile 492: 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 #​1,"​TEST.DAT"​   Assign #​1,"​TEST.DAT"​
Zeile 526: Zeile 523:
  
   *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 548: Zeile 545:
   *Declare VAR [,​VAR[,​VAR]...]   *Declare VAR [,​VAR[,​VAR]...]
     *VAR : Variablen-Name     *VAR : Variablen-Name
-In PROFAN ​müssen ​alle Variablen (zeitlich) vor der ersten Benutzung deklariert werden. String-Variablen werden durch ein $, LongInt-Variablen durch ein &, Float-Variablen durch ein !, Integer-Variablen durch ein % und Bereichsvariablen durch ein # gekennzeichnet.+In PROFAN ​müssen ​alle Variablen (zeitlich) vor der ersten Benutzung deklariert werden. String-Variablen werden durch ein $, LongInt-Variablen durch ein &, Float-Variablen durch ein !, Integer-Variablen durch ein % und Bereichsvariablen durch ein # gekennzeichnet.
  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/​der Prozedur wieder freigegegen.+nur dort lokal gültig. Der verwandte Speicherplatz wird bei Verlassen des Unterprogrammes/​der Prozedur wieder freigegegen.
 Beispliel: Beispliel:
   Decalare XPos%,​YPos%,​Text$   Decalare XPos%,​YPos%,​Text$
Zeile 566: Zeile 563:
   *FileMode N   *FileMode N
     *N: Integer - Filemodus (siehe DOS-Dokumentation)     *N: Integer - Filemodus (siehe DOS-Dokumentation)
-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:+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 578: Zeile 575:
   *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%,​78)   If @Equ(Test%,​78)
Zeile 584: 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 ​erfüllt ​ist, wird der zugehörige Programmteil abgearbeitet und anschließend mit der Zeile nach dem ENDIF fortgefahren:​+Auch eine Abrage auf mehrere Bedingungen (z.B. bei der Auswertung eines Menüs) ist mit ELSEIF möglich. Sobald eine Bedingung ​erfüllt ​ist, wird der zugehörige Programmteil abgearbeitet und anschließend mit der Zeile nach dem ENDIF fortgefahren:​
   IF @Lt(A%,1)   IF @Lt(A%,1)
  PRINT "A ist kleiner als 1"  PRINT "A ist kleiner als 1"
Zeile 594: Zeile 591:
  PRINT "A ist größer als 2"  PRINT "A ist größer als 2"
   ENDIF   ENDIF
-ACHTUNG: Hinter ELSEIF muß ein Bedingungsausdruck stehen. Fehlt dieser ​würde ​der Interpreter das ELSEIF zwar wie ELSE behandeln, aber das Runtime-Modul ​würde ​den Fehler merken und mit einer Fehlermeldung "Zu wenig Parameter"​ abbrechen.+ACHTUNG: Hinter ELSEIF muß ein Bedingungsausdruck stehen. Fehlt dieser ​würde ​der Interpreter das ELSEIF zwar wie ELSE behandeln, aber das Runtime-Modul ​würde ​den Fehler merken und mit einer Fehlermeldung "Zu wenig Parameter"​ abbrechen.
  
   *IfNot N ... [ElseIf N ... ] [Else ...]    *IfNot N ... [ElseIf N ... ] [Else ...] 
   *EndIf   *EndIf
-Als Kurzform ​für ​If @Not(N) kann auch das kürzere ​(und schnellere) IfNot verwandt werden:+Als Kurzform ​für If @Not(N) kann auch das kürzere ​(und schnellere) IfNot verwandt werden:
  IfNot @Equ(Test%,​78)  IfNot @Equ(Test%,​78)
  Print "Test% ist nicht 78!"  Print "Test% ist nicht 78!"
Zeile 634: 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 ​für ​Stringvariablen können nun - ähnlich wie beim PRINT-Befehl - mehrere ​Stringausdrücke ​durch Semikolon bzw. Komma getrennt angegeben werden. Werden zwei Stringausdrücke ​mit einem Komma getrennt, wird ein Leerzeichen ​eingefügt. Diese Methode ist einfacher und deutlich (!) schneller als das Zusammenfügen ​von Strings mittels der @ADD$-Funktion.+Beim LET-Befehl ​für Stringvariablen können nun - ähnlich wie beim PRINT-Befehl - mehrere ​Stringausdrücke ​durch Semikolon bzw. Komma getrennt angegeben werden. Werden zwei Stringausdrücke ​mit einem Komma getrennt, wird ein Leerzeichen ​eingefügt. Diese Methode ist einfacher und deutlich (!) schneller als das Zusammenfügen ​von Strings mittels der @ADD$-Funktion.
 Beispiel: Beispiel:
   LET Text$ = "Du hast",​@Str$(Score%),"​Punkte erzielt!"​   LET Text$ = "Du hast",​@Str$(Score%),"​Punkte erzielt!"​
-HINWEIS: Die automatische Typumwandlung funktioniert bei einfachen Variablen. Bei Funktionen, die einen numerischen Wert zurükgegeben, wird nicht immer automatisch umgewandelt,​ daher ist hier immer die Funktion @Str$ zu verwenden!+HINWEIS: Die automatische Typumwandlung funktioniert bei einfachen Variablen. Bei Funktionen, die einen numerischen Wert zurükgegeben, wird nicht immer automatisch umgewandelt,​ daher ist hier immer die Funktion @Str$ zu verwenden!
  
   *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 ​übernommen.+Der String S wird wird an Position N in die ListBox-Liste ​übernommen.
  
   *Locate X,Y   *Locate X,Y
Zeile 653: 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 ​kürzer ​wird er mit führenden ​Leerzeichen ​aufgefüllt. Standarteinstellung ist 7.+Mindestweite der Ausgabe numerischer Werte. Dieser Wert wird auch von der @STR$-Funktion und dem Befehl DrawText verwandt. Ist der Ausgabestring ​kürzer ​wird er mit führenden ​Leerzeichen ​aufgefüllt. Standarteinstellung ist 7.
 Siehe auch: Decimals Siehe auch: Decimals
  
Zeile 671: 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; 
-überprft ​wird dieses aber ebensowenig,​ wie die Datentypen. Gegebenenfalls erfolgt eine automatische Umwandlung.+überprft ​wird dieses aber ebensowenig,​ wie die Datentypen. Gegebenenfalls erfolgt eine automatische Umwandlung.
 Siehe auch: Proc Siehe auch: Proc
  
Zeile 677: Zeile 674:
     *N : Wert - Dateikennzeichen (1..8)     *N : Wert - Dateikennzeichen (1..8)
     *f : druckbarer Ausdruck     *f : druckbarer Ausdruck
-Der Ausdruck, bzw. die Ausdrücke ​werden in die mit N bezeichnete Datei geschrieben. Steht zwischen den Ausdrücken ​ein Semikolon, so werden sie direkt aneinander gehängt, bei einem Komma wird ein Leerzeichen ​eingefügt.+Der Ausdruck, bzw. die Ausdrücke ​werden in die mit N bezeichnete Datei geschrieben. Steht zwischen den Ausdrücken ​ein Semikolon, so werden sie direkt aneinander gehängt, bei einem Komma wird ein Leerzeichen ​eingefügt.
 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 ​werden auf den Bildschirm geschrieben. Steht zwischen den Ausdrücken ​ein Semikolon, so werden sie direkt aneinander gehängt, bei einem Komma wird ein Leerzeichen ​eingefügt. Siehe auch unter LOCATE. Beispiel:+Der Ausdruck, bzw. die Ausdrücke ​werden auf den Bildschirm geschrieben. Steht zwischen den Ausdrücken ​ein Semikolon, so werden sie direkt aneinander gehängt, bei einem Komma wird ein Leerzeichen ​eingefügt. Siehe auch unter LOCATE. Beispiel:
   Print "Dies ist der",​N%;"​. Test"   Print "Dies ist der",​N%;"​. Test"
  
Zeile 689: Zeile 686:
     *<​Name>​ : Name der Prozedur     *<​Name>​ : Name der Prozedur
 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 ​Parameter eingelesen.+PARAMETERS-Befehl werden die übergebenen ​Parameter eingelesen.
 Beispiel: Beispiel:
   PROC Wiederhole   PROC Wiederhole
Zeile 701: Zeile 698:
   ENDPROC   ENDPROC
   Wiederhole "​Testtext",​10   Wiederhole "​Testtext",​10
-Die in der Prozedur ​über ​PARAMETERS oder DECLARE deklarierten Variablen sind nur innerhalb der Prozedur bekannt (lokal). Alle Variablen, die außerhalb (oberhalb) der Prozedur definiert wurden sind in der Prozedur auch bekannt (wie in PASCAL). Die Prozedur kann auch schon vor Erreichen der Zeile ENDPROC ​über ​RETURN verlassen werden, wobei dann die +Die in der Prozedur ​über PARAMETERS oder DECLARE deklarierten Variablen sind nur innerhalb der Prozedur bekannt (lokal). Alle Variablen, die außerhalb (oberhalb) der Prozedur definiert wurden sind in der Prozedur auch bekannt (wie in PASCAL). Die Prozedur kann auch schon vor Erreichen der Zeile ENDPROC ​über RETURN verlassen werden, wobei dann die 
 Übergabe eines Wertes an das aufrufende Programm möglich ist. Übergabe eines Wertes an das aufrufende Programm möglich ist.
  
Zeile 707: 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 ​würde ​die Datei vergrößert werden.+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 ​würde ​die Datei vergrößert werden.
 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. ​Für ​Kommentare hinter anderen Befehlen ist das ' zu benutzen.+Alles was dahinter steht, ist Kommentar. REM steht immer am Anfang der Kommentarzeile. ​Für Kommentare hinter anderen Befehlen ist das ' zu benutzen.
  
  
Zeile 740: Zeile 737:
  
   *Return [<​Wert>​]   *Return [<​Wert>​]
-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 747: Zeile 744:
   Print "Im Hauptprogramm"​   Print "Im Hauptprogramm"​
   Test   Test
-  Print "​Wieder ​zurck! Ergebnis:",​@$(0) +  Print "​Wieder ​zurück! Ergebnis:",​@$(0) 
-Der zurückgegebene ​Wert darf auch eine lokale Variable sein.  WICHTIG: Auch wenn eine Prozedur mit RETURN verlassen wird, muß die Definition der Prozedur mit ENDPROC abgeschlossen werden.+Der zurückgegebene ​Wert darf auch eine lokale Variable sein.  WICHTIG: Auch wenn eine Prozedur mit RETURN verlassen wird, muß die Definition der Prozedur mit ENDPROC abgeschlossen werden.
  
   *Rewrite #N   *Rewrite #N
Zeile 764: Zeile 761:
 Das Verzeichnis S wird gelöscht. Enthält es noch Dateien oder Unterverzeichnisse,​ kann es nicht gelöscht werden. Bei erfolgreicher Operation hat %IORESULT den Wert 0. Das Verzeichnis S wird gelöscht. Enthält es noch Dateien oder Unterverzeichnisse,​ kann es nicht gelöscht werden. Bei erfolgreicher Operation hat %IORESULT den Wert 0.
 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 "​NOTEPAD HILFE.TXT"​ 
-  Run "​E:​\PROFAN\PROFAN DEMO.RGH"​ 
-  Run "​WRITE"​ 
  
   *Seek #N,A   *Seek #N,A
Zeile 782: 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 ​ganz Vorsichtige:​ Warnungen werden wie Fehler behandelt und führen ​zu einer Fehlermeldung mit Programmabbruch. +      *2 - Für ganz Vorsichtige:​ Warnungen werden wie Fehler behandelt und führen ​zu einer Fehlermeldung mit Programmabbruch. 
-      *1 - Für ​die Programmentwicklung:​ Auch Warnungen werden ausgeben, aber das Programm läuft auf Wunsch weiter.+      *1 - Für die Programmentwicklung:​ Auch Warnungen werden ausgeben, aber das Programm läuft auf Wunsch weiter.
       *0 - Der Normalzustand:​ Warnungen werden nicht angezeigt. Diesen Errorlevel sollte man bei einem fertigen Programm verwenden.       *0 - Der Normalzustand:​ Warnungen werden nicht angezeigt. Diesen Errorlevel sollte man bei einem fertigen Programm verwenden.
-      *-1 - Fast schon kriminell: Auch Fehlermeldungen werden ​übergangen. Das kann unter Umständen zu einem Windowsfehler ​oder Absturz des Systemes mit Datenverlust ​führen.+      *-1 - Fast schon kriminell: Auch Fehlermeldungen werden ​übergangen. Das kann unter Umständen zu einem DOS-Fehler ​oder Absturz des Systemes mit Datenverlust ​führen.
 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 799: 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 "​NOTEPAD HILFE.TXT"​ 
-Vergleiche auch: Run 
  
   *StrWidth N   *StrWidth N
     *N: Integer (Mindestweite)     *N: Integer (Mindestweite)
-Die Mindest-Ausgabeweite ​für ​Strings (mittels des PRINT-Befehles) wird festgelegt. Strings, die kürzer ​als N sind, werden entsprechend mit vorangestellten Leerzeichen verlängert. Voreingestellt ist der Wert 0 (= "​normales"​ Verhalten der Strings).+Die Mindest-Ausgabeweite ​für Strings (mittels des PRINT-Befehles) wird festgelegt. Strings, die kürzer ​als N sind, werden entsprechend mit vorangestellten Leerzeichen verlängert. Voreingestellt ist der Wert 0 (= "​normales"​ Verhalten der Strings).
  
   *Sub VAR,N   *Sub VAR,N
Zeile 853: Zeile 835:
  ... - ...  ... - ...
  123 - F12  123 - F12
-Die übrigen ​lassen sich durch Ausprobieren mit folgendem Programm leicht austesten:+Die übrigen ​lassen sich durch Ausprobieren mit folgendem Programm leicht austesten:
   Cls   Cls
   While 1    '​Endlosschleife!   While 1    '​Endlosschleife!
Zeile 902: Zeile 884:
 |115 :| ENDPROC nicht gefunden!| |115 :| ENDPROC nicht gefunden!|
  
-^Ungültige/fehlende Parameter^^ +^Ungültige/fehlende Parameter^^ 
-|200 :| Ungültiger ​Funktionswert!|+|200 :| Ungültiger ​Funktionswert!|
 |201 :| Division durch 0!| |201 :| Division durch 0!|
 |204 :| String-Index ist < 1 !| |204 :| String-Index ist < 1 !|
 |205 :| Substring-Nr ist < 1 !| |205 :| Substring-Nr ist < 1 !|
 |206 :| So viele Elemente sind nicht da!| |206 :| So viele Elemente sind nicht da!|
-|207 :| Bereichsgrenze ​überschritten:|+|207 :| Bereichsgrenze ​überschritten:|
 |208 :| Kommandozeilenparameter fehlt!| |208 :| Kommandozeilenparameter fehlt!|
 |209 :| Datei nicht gefunden:| |209 :| Datei nicht gefunden:|
Zeile 918: Zeile 900:
 |215 :| Variable nicht deklariert:​| |215 :| Variable nicht deklariert:​|
 |216 :| Falscher Parametertyp:​| |216 :| Falscher Parametertyp:​|
-|217 :| Speicher ​für ​Integer-Variablen erschöpft!| +|217 :| Speicher ​für Integer-Variablen erschöpft!| 
-|218 :| Speicher ​für ​LongInt-Variablen erschöpft!| +|218 :| Speicher ​für LongInt-Variablen erschöpft!| 
-|219 :| Speicher ​für ​String-Variablen erschöpft!|+|219 :| Speicher ​für String-Variablen erschöpft!|
 |221 :| Während der Druckausgabe verboten:| |221 :| Während der Druckausgabe verboten:|
 |222 :| Box nicht innerhalb des Fensters!| |222 :| Box nicht innerhalb des Fensters!|
Zeile 938: Zeile 920:
 |901 :| Nur 999 Zeilen sind erlaubt!| |901 :| Nur 999 Zeilen sind erlaubt!|
 |902 :| Zeile zu lang (max. 127 Zeichen)!| |902 :| Zeile zu lang (max. 127 Zeichen)!|
-|905 :| Keine gültige ​PROFAN Datei!|+|905 :| Keine gültige ​PROFAN Datei!|
 |906 :| Programmdatei fehlerhaft!| |906 :| Programmdatei fehlerhaft!|
software/diy/andere/profan.1139951549.txt.gz · Zuletzt geändert: 14/02/2006 00:02 (Externe Bearbeitung)