4D v16.3Fehlermeldungen |
||
|
4D v16.3
Fehlermeldungen
Fehlermeldungen
Dieser Abschnitt beschreibt die vom Compiler generierten Meldungen. Es gibt folgende Arten:
Diese Meldungen werden während der Kompilierung erstellt. Die zugrunde liegenden Probleme werden im folgenden anhand von Beispielen erklärt. Zeiger in COPY ARRAY COPY ARRAY(Pointer->;Array) Zeiger in SELECTION TO ARRAY SELECTION TO ARRAY(Pointer->;MyArray) Zeiger in ARRAY TO SELECTION ARRAY TO SELECTION(Pointer->;[MyTable]MyField) Zeiger in LIST TO ARRAY LIST TO ARRAY(List;Pointer->) Zeiger in ARRAY TO LIST ARRAY TO LIST(Pointer->;List) Zeiger in Array-Deklaration ARRAY REAL(Pointer->;5) Die Anweisung ARRAY REAL(Array;Pointer->) generiert nicht diese Warnung. Der Wert einer Dimension eines Array hat keinen Einfluss auf seinen Typ. In diesem Beispiel muss das Array, auf welches sich der Zeiger bezieht, an anderer Stelle definert worden sein. Zeiger in DISTINCT VALUES DISTINCT VALUES(Pointer->;Array) Die Verwendung der Funktion Undefined wird nicht empfohlen. If(Undefined(Variable)) Die Funktion Undefined gibt in einer kompilierten Datenbank immer FALSCH zurück. Diese Methode ist mit einem Kennwort geschützt. Eine Schaltfläche mit automatischer Aktion hat keinen Namen im Formular MyForm auf Seite X. Um Konflikte zu vermeiden, sollten alle Schaltflächen Namen haben. Nimmt an, dass der Zeiger auf einen alphanumerischen Ausdruck zeigt. Pointer->≤2≥:="a" Nimmt an, dass der Stringindex numerisch ist. String≤Pointer->≥:="a" Nimmt an, dass der Arrayindex vom Typ Zahl ist. ALERT(MyArray{Pointer->}) Fehlender Parameter im Prozessaufruf des Plug-In. WR SET FONT(Area) Hinweis: Mit nachfolgende Tags können Sie Warnungen individuell aktivieren und deaktivieren: //%W-warning_number, um eine Warnung zu deaktivieren. //%W+warning_number, um eine Warnung zu aktivieren. Warnungen auf diese Weise zu aktivieren bzw. deaktivieren, wirkt sich auf Code aus, der im Kompilierungsplan sukzessive durchlaufen wird. Wollen Sie Warnungen generell aktivieren bzw. deaktivieren, können Sie einfach das entsprechende Tag in eine Methode mit Namen "Compiler_xxx" einfügen. Diese Methoden werden vom Kompiler als erste durchlaufen. Um z.B. die Warnung "Zeiger in COPY ARRAY" zu deaktivieren, können Sie das Tag "//%W-518.1" an der entsprechenden Stelle einfügen. Diese Meldungen werden während der Kompilierung generiert. Sie müssen die zugrundeliegenden Fehler korrigieren, damit der Compiler eine kompilierte Datenbank erstellen kann. Die Fehler werden im folgenden anhand von Beispielen erklärt. MyReal:=12.3 Anzahl Dimensionen eines Array ändern ARRAY TEXT(MyArray;5;5) Typisierungskonflikt der Variablen MyArray im Formular. ARRAY INTEGER(MyArray) Ein Array ohne Dimensionen deklarieren ARRAY INTEGER(MyArray) Es wurde eine Variable erwartet. COPY ARRAY(MyArray;"") Der Typ der Variablen ist unbekannt. Diese Variable wird in Methode M1 verwendet. Unbekannter Konstantentyp OK:="Das Wetter ist schön" Die Methode M1 ist unbekannt. Inkorrekte Verwendung eines Feldes MyDate:=Add to date(BooleanField;1;1;1) Die Länge eines Strings kann nicht mehr als 255 Zeichen betragen. C_STRING(325;MyString) Die Variable VARIABLE ist keine Methode. Variable(1) Die Variable VARIABLE ist kein Array. Variable{5}:=12 Das Ergebnis der Funktion ist mit diesem Ausdruck nicht kompatibel. Text:="Number"+Num(i) Die in diesem Ausdruck verwendeten Variablentypen sind nicht kompatibel. Integer:=MyDate*Text Änderung des Variablentyps $i vom Typ feste Länge in Zahl. $i:="3" Index des Arrays ist keine Zahl. IntArray{"3"}:=4 Retypisierung der Variable Variable vom Typ Text zu Array Typ Text. C_TEXT(Variable) Retypisierung der Variablen Variable vom Typ Text auf Typ Zahl. Variable:=Num(Variable) Retypisierung des Array MyBoolean von Array Typ Boolean auf Variable Typ Zahl. Variable:=MyBoolean Retypisierung des Array IntArray von Array Typ Ganzzahl auf Array Typ Text. ARRAY TEXT(IntArray;12) wenn IntArray an anderer Stelle als Array vom Typ Ganzzahl deklariert wurde. Versuch, eine Variable zu dereferenzieren, die nicht vom Typ Zeiger ist. Variable->:=5 Wenn die Variable nicht vom Typ Zeiger ist. Retyisierung der Variablen Var1 vom Typ Text auf Typ Zahl. Var1:=3.5 Fehlerhafte Verwendung eines Feldes. Variable:=[MyTable]MyField [MyTable]MyField ist ein Datenfeld. Die Variable ist numerisch. Variable:=Num("Das Wetter ist schön")-> Diese Funktion lässt sich nicht dereferenzieren. Syntaxfehler: If(Boolean) Zu viele linke geschweifte Klammern ({). Zu viele rechte geschweifte Klammern (}). Klammer zu ) erwartet. Klammer auf ( erwartet. Es wurde ein Feld erwartet. If(Modified(Variable)) Eine linke runde Klammer wurde erwartet. C_INTEGER($ Es wurde eine Variable erwartet. C_INTEGER([MyTable]MyField) Die Nummer einer Konstanten wurde erwartet. C_INTEGER(${"3"}) Ein Semicolon ; wurde erwartet. COPY ARRAY(Array1 Array2) Mac OS Zu viele öffnende Symbole für Zeichenreferenz. MyString≤3:="a" Zu viele schließende Symbole für Zeichenreferenz. MyString3≥:="a" Windows Zu viele öffnende Symbole für Zeichenreferenz. MyString[[3:="a" Zu viele schließende Symbole für Zeichenreferenz. MyString 3]]:="a" Eine Untertabelle wurde nicht erwartet. ARRAY TO SELECTION(Array;Subtable) Das Argument einer IF-Anweisung muss vom Typ Boolean sein. If(Pointer) Der Ausdruck ist zu komplex. Die Methode ist zu komplex. Unbekanntes Feld. Unbekannte Tabelle. Zeiger auf einen fehlerhaften Ausdruck. Pointer:=->Variable+3 Inkorrekte Verwendung des String Index. MyReal≤3≥or MyReal[[3]] oder MyString≤Variable≥or MyString[[Variable]] wobei Variable keine numerische Variable ist. MyMethod(Num(MyString)) wenn MyMethod einen Ausdruck vom Typ Boolean erwartet. Es wurden dieser Methode zu viele Parameter übergeben. DEFAULT TABLE(Table;Form) Dieser Wert kann nicht als Parameter an diese Methode oder Befehl übergeben werden. MyMethod(3+2) wenn MyMethod einen Ausdruck vom Typ Boolean erwartet. Konflikt beim Typ des Funktionsergebnis. C_INTEGER($0) <gen9>C_INTEGER(${3}) Dieser 4D Befehl benötigt keinen Parameter. SHOW TOOL BAR(MyVar) Dieser 4D Befehl benötigt mindestens einen Parameter. DEFAULT TABLE <gen9>MyMethod(MyString)</gen9> wenn MyMethod einen Parameter vom Typ Boolean erwartet. Der Typ des Parameters $1 unterscheidet sich in der aufrufenden und aufgerufenen Methode. Calculate("3+2") mit der Direktiven C_INTEGER($1) in Calculate. Einer der Parameter in COPY ARRAY ist eine Variable. COPY ARRAY(Variable;Array) Retypisierung der Variablen $1 von Typ Zahl auf Typ Text. $1:=String($1) Ein Array kann nicht als Parameter verwendet werden. Bool2:=Bool1+True In Feldern vom Typ Boolean ist keine Addition möglich. Der Operator > wurde nicht erwartet: QUERY(MyTable;[MyTable]MyField=0;>) Variablen von diesem Typ sind nicht miteinander vergleichbar: If(Number=Picture2) Boolean:=-False Plug-in Befehle Der Plug-In Befehl PExt scheint nicht richtig definiert zu sein. Es wurden diesem Plug-In Befehl zu wenige Parameter übergeben. Es wurden diesem Plug-In Befehl zu viele Parameter übergeben. Der Plug-In Befehl Variable scheint nicht richtig definiert zu sein. Allgemeine Fehler Zwei Methoden haben den gleichen Namen: Name. Um Ihre Datenbank zu kompilieren, muss jede Projektmethode einen anderen Namen haben. Interner Fehler # xx. Die Variable VARIABLE lässt sich nicht typisieren. Sie wird in Methode M1 verwendet. Die Originalmethode ist beschädigt. Unbekannter 4D Befehl. Retypisierung der Variablen VARIABLE im Formular FORM. Der Name der Funktion NAME wird bereits als Name einer Variablen im Formular NAME verwendet. Eine Methode und eine Variable haben den gleichen Namen: Name. Ein Plug-In Befehl und eine Variable haben den gleichen Namen: Name. Kann in einer als thread-safe deklarierten Methode keinen Befehl aufrufen, der nicht thread-safe ist. Kann in einer als thread-safe deklarierten Methode keine nicht thread-safe Methode 'Methodenname' aufrufen. Diese Meldungen werden in 4D generiert, während die kompilierte Datenbank läuft. Sie erscheinen in einem spezifischen Fehler-Dialogfenster. Das Ergebnis ist außerhalb des Array-Bereichs. Division durch Null. Var1:=0 Zugriff auf nicht vorhandenen Parameter. Der Zeiger ist nicht korrekt initialisiert. MyPointer->:=5 wenn MyPointer noch nicht initialisiert wurde. Der Zielstring ist kürzer als die Quelle. C_STRING(MyString1;5) Ungültiger Zeichenzugriff. i:=-30 Der Parameter ist ein leerer String. MyString≤1≥:="" Modulo durch Null. Var1:=0 Ungültiger Parameter in einem AUSFÜHREN Befehl. EXECUTE FORMULA("MyMethod(MyAlpha)") wenn MyMethod nicht einen alphanumerischen Parameter erwartet. Zeiger auf eine unbekannte Variable. MyPointer:=Get pointer("Variable") wenn Variable nicht explizit in der Datenbank erscheint. Versuch einer Typenänderung mit einem Zeiger. Boolean:=Pointer-> wenn Pointer auf ein Feld vom Typ Ganzzahl zeigt. Falsche Verwendung eines Zeigers oder Zeiger auf eine unbekannte Variable. Character:=StringVar≤Pointer->≥ wenn Pointer nicht auf eine Zahl zeigt.
Siehe auch
Compiler Direktiven
|
EIGENSCHAFTEN
Produkt: 4D
GESCHICHTE
SCHLÜSSELWÖRTER warning ARTIKELVERWENDUNG
4D Programmiersprache ( 4D v16) |