4D v14.3

Compilerbefehle

Home

 
4D v14.3
Compilerbefehle

Compilerbefehle  


 

 

Der in 4D integrierte Compiler übersetzt Ihre Datenbankanwendungen in Maschinensprache. Die Vorteile des Compilers sind:

  • Geschwindigkeit: Ihre Datenbank läuft um den Faktor von 3 bis 1000 mal schneller.
  • Überprüfung des Code: Ihre Datenbank wird auf Übereinstimmung des Code geprüft. 4D Compiler findet sowohl logische als auch Syntaxfehler.
  • Schutz: Ist Ihre Datenbank kompiliert, können Sie den interpretierten Code löschen. Denn die kompilierte Datenbanken hat dieselben Funktionalitäten wie ihr Original. Der Unterschied ist, dass Sie nicht auf die Struktur und Prozeduren zugreifen bzw. diese verändern können, weder gewollt noch versehentlich.
  • Eigenständige, doppelklickbare Anwendungen: Kompilierte Datenbanken lassen sich in eigenständige Anwendungen (.EXE Dateien) umwandeln, die im Finder durch ihr eigenes Symbol dargestellt werden.

Die Befehle dieses Kapitels werden mit dem Compiler eingesetzt. Damit können Sie innerhalb Ihrer Datenbank Datentypen normieren.

C_BLOBC_INTEGERC_REAL
C_BOOLEANC_LONGINTC_STRING
C_DATEC_PICTUREC_TEXT
C_GRAPHC_POINTERC_TIME
C_OBJECTIDLE

Diese Befehle deklarieren, mit Ausnahme von IDLE, Variablen und weisen einen spezifischen Datentyp zu. So vermeiden Sie zweideutige Zuweisungen. Ist eine Variable nicht mit einem dieser Compilerbefehle deklariert, versucht der Compiler den Datentyp einer Variablen zu bestimmen. Oft lässt sich der Datentyp von Variablen in Formularen nur schwer bestimmen. Von daher ist es besonders wichtig, Variablen in Formularen mit Compilerbefehlen zu deklarieren.

Hinweis: Um Zeit zu gewinnen, können Sie im Compiler-Fenster die Option zum Generieren und Aktualisieren von typisierten Methoden verwenden. Diese Option definiert die Anzahl der Durchgänge zum Typisieren der Variablen in der Datenbank.

Arrays sind Variablen, die zur Kompilierung dieselben Regeln wie Standardvariablen befolgen müssen. Die Befehle zum Deklarieren von Arrays werden im Kapitel Arrays beschrieben.

  • Die Variablen-Indirektion ist nicht erlaubt. Sie können keine Alpha Indirektion mit dem Symbol (§) für Absatz verwenden, um indirekt auf Variablen zu verweisen. Ebensowenig können Sie dafür die numerische Indirektion mit den geschweiften Klammern ({...}) verwenden. Geschweifte Klammern gelten nur für den Zugriff auf spezifische Elemente eines deklarierten Array. Sie können nur die Parameter-Indirektion verwenden.
  • Sie dürfen den Datentyp von Variablen oder Arrays nicht ändern.
  • Sie dürfen ein eindimensionales Array nicht in ein zweidimensionales Array umwandeln und umgekehrt.
  • Sie dürfen die Länge von String Variablen oder Elementen in String Arrays nicht ändern.
  • Auch wenn der Compiler den Typ der Variablen für Sie festlegt, sollten Sie bei zweideutigen Datentypen, wie z.B. in einem Formular, den Datentyp der Variablen mit Compiler-Befehlen deklarieren.
  • Durch explizites Zuweisen von Datentypen für Variablen optimieren Sie außerdem Ihren Code. Das gilt besonders bei Variablen, die als Zähler eingesetzt werden. Mit Variablen vom Typ Lange Ganzzahl erreichen Sie maximale Performance.
  • Wollen Sie eine Variable löschen, d.h. auf Null initialisieren, verwenden Sie den Befehl CLEAR VARIABLE mit dem Namen der Variablen. Verwenden Sie bei diesem Befehl keinen String für den Namen der Variablen.
  • Die Funktion Undefined gibt immer den Wert Falsch zurück. Variablen sind immer definiert.
  • Zahlenoperationen auf Variablen vom Typ Lange Ganzzahl und Ganzzahl sind in der Regel viel schneller als Operationen auf den standardmäßigen Typ (Zahl).

Die jeweilige Vorgehensweise wird in den folgenden Abschnitten erläutert:

Nachfolgend sehen Sie ein paar grundlegende Variablendeklarationen für den Compiler:

 C_BLOB(vxMyBlob)
  ` Die Prozessvariable vxMyBlob wird als Variable vom Typ BLOB deklariert
 C_BOOLEAN(◊OnWindows)
  ` Die Interprozessvariable ◊OnWindows wird als Variable vom Typ Boolean deklariert
 C_DATE($vdCurDate)
  ` Die lokale Variable $vdCurDate wird als Variable vom Typ Datum deklariert
 C_GRAPH(vg1;vg2;vg3)
  ` Die 3 Prozessvariablen vg1, vg2 und vg3 werden als Variablen vom Typ Diagramm deklariert

In folgendem Beispiel deklariert die Projektmethode OneMethodAmongOthers 3 Parameter:

  ` Projektmethode OneMethodAmongOthers
  ` OneMethodAmongOthers ( Zahl ; Ganzzahl { ; Lang } )
  ` OneMethodAmongOthers ( Anzahl ; Prozent { ; Ratio } )
 
 C_REAL($1` 1. Parameter ist vom Typ Zahl
 C_INTEGER($2` 2. Parameter ist vom Typ Ganzzahl
 C_LONGINT($3` 3. Parameter ist vom Typ Lange Ganzzahl
 
  ` ...

In folgendem Beispiel akzeptiert die Projektmethode Capitalize einen Parameter vom Typ String und gibt ein String Ergebnis zurück:

  ` Projektmethode Capitalize
  ` Capitalize ( String ) -> String
  ` Capitalize ( Ursprungsstring ) -> String in Großbuchstaben
 
 C_STRING(255;$0;$1)
 $0:=Uppercase(Substring($1;1;1))+Lowercase(Substring($1;2))

In folgendem Beispiel akzeptiert die Projektmethode SEND PACKETS einen Parameter vom Typ Zeit gefolgt von einer variablen Anzahl von Textparametern:

  ` Projektmethode SEND PACKETS
  ` SEND PACKETS ( Zeit ; Text { ; Text2... ; TextN } )
  ` SEND PACKETS ( DokRef ; Daten { ; Daten2... ; DatenN } )
 
 C_TIME($1)
 C_TEXT(${2})
 C_LONGINT($vlPacket)
 
 For($vlPacket;2;Count parameters)
    SEND PACKET($1;${$vlPacket})
 End for

In folgendem Beispiel deklariert die Projektmethode COMPILER_Param_Predeclare28 die Syntax von anderen Projektmethoden für 4D Compiler vor:

  ` Projektmethode COMPILER_Param_Predeclare28
 
 C_REAL(OneMethodAmongOthers;$1` OneMethodAmongOthers (Zahl ; Ganzzahl { ; Lang })
 C_INTEGER(OneMethodAmongOthers;$2` ...
 C_LONGINT(OneMethodAmongOthers;$3` ...
 C_STRING(Capitalize;255;$0;$1` In Großbuchstaben ( String ) -> String
 C_TIME(SEND PACKETS;$1` SEND PACKETS ( Zeit ; Text { ; Text2... ; TextN } )
 C_TEXT(SEND PACKETS;${2}) ` ...

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Compiler

 
SIEHE AUCH 

C_BLOB
C_BOOLEAN
C_DATE
C_GRAPH
C_INTEGER
C_LONGINT
C_PICTURE
C_POINTER
C_REAL
C_STRING
C_TEXT
C_TIME
IDLE

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v14 R2)
4D Programmiersprache ( 4D v14 R3)
4D Programmiersprache ( 4D v14.3)
4D Programmiersprache ( 4D v14 R4)

Geerbt von : Compilerbefehle ( 4D v11 SQL Release 6)