Makros und Programme einsetzen

VDP-Anwendungen für TurboDB Studio anpassen

Top  Previous  Next

Wenn Sie vorhandene Programme von Visual Data Publisher für TurboDB Studio anpassen wollen, müssen Sie unter Umständen einige Änderungen vornehmen, die im folgenden beschrieben sind. Öffnen Sie ihr Projekt und stellen Sie sicher, dass beim Öffnen selbst keine Fehlermeldungen auftreten. Beantworten Sie die Frage, ob das Programm neu übersetzt werden soll mit ja. Falls nun Fehler beim Übersetzen auftreten, die unter Visual Data Publisher nicht aufgetreten sind, können Sie im folgenden Abschnitt nachschlagen, was die wahrscheinliche Ursache für diese Fehlermeldung ist und diese beheben.

Auch wenn Sie das Programm übersetzt haben und ausprobieren, können noch einige (sehr wenige) Fehlermeldungen auftreten, die Sie mit Visual Data Publisher nicht hatten. Diese Fehlermeldungen sind im übernächsten Abschnitt zusammen mit Hinweisen zur Behebung beschrieben.

Fehlermeldungen beim Übersetzen

Fehler 125

Einer Konstanten kann nichts zugewiesen werden.

In VDP 3 war folgende Sequenz möglich:

def k = a * b
k := 3;

Dabei wird k zuerst als Kurzfunktion definiert und gleich anschließend wie eine Variable mit einem Wert belegt. Diese Anweisungsfolge ist nicht sinnvoll und verursacht deshalb in TurboDB Studio einen Fehlermeldung. Grundsätzlich kann man einem Namen, der als Kurzfunktion definiert wurde nur mit einem weiteren def oder mit var einen neuen Wert zuweisen:

def k = a * b
var k = 3

würde also funktionieren, auch wenn auch hier die Definition der Kurzfunktion überflüssig ist. Sinnvoller wäre es, für die zweite Definition einen eigenen Namen zu benutzen.

Fehler 174

Der Bezeichner ist nicht eindeutig.

Dies bedeutet, dass Sie auf eine Tabellenspalte oder einen Variablen-Namen verweisen, der in der Anwendung öfter vorkommt.

vardef a: String;
a := Name;

löst beispielsweise diesen Fehler aus, wenn es zwei Tabellen mit einer Spalte namens Name gibt. VDP 3 hat hier eine dieser Tabellen ausgewählt (normalerweise die, die im Projekt als erstes kommt), aber das führt manchmal zu unerwarteten Ergebnissen (das Programm funktioniert nicht mehr, wenn man die Reihenfolge der Tabellen im Projekt ändert). Deshalb müssen Sie in TurboDB Studio in solchen Fällen, den Namen der Tabelle voranstellen, um die Fehlermeldung zu beseitigen.

vardef a: String;
a := KUNDEN.Name;

Fehlermeldungen zur Laufzeit

Fehler 118

Die externen Prozedur "<Prozedurname>" hat entweder eine Ausnahme ausgelöst oder die dllproc-Deklaration ist nicht korrekt.

Wenn Sie diese Meldung mit Visual Data Publisher nicht hatten, scheidet die erste Möglichkeit als Fehlerursache aus. In TurboDB Studio entspricht ein String in einer dllproc-Deklaration einem Unicode-String, in VDP 4 einem ANIS-String. Dadurch wird die Dll-Funktion nicht mehr korrekt aufgerufen. Die einfachste Variante, dies zu korrigieren, ist es die dllproc-Deklaration anzupassen.

dllproc MyProc(S: String): Integer library "MyDll.dll"

wird zu

dllproc MyProc(S: String as LPStr): Integer library "MyDll.dll"

Allerdings ist dies nicht die beste Lösung, weil dann kein Unicode-String verwendet wird, dieser aber der Standard unter Windows sein sollte. Besser ist es, die DLL so zu ändern, dass ein Unicode-String verwendet wird. Wenn die aufgerufene Dll eine Windows-Dll ist, geht das ganz einfach dadurch, dass die Version der Funktion mit dem Endbuchstaben W statt dem Endbuchstaben A gewählt wird.

dllproc GetTempPathW(L: Integer; var Buffer: String): Integer library "kernel32.dll";

statt

dllproc GetTempPathA(L: Integer; var Buffer: String): Integer library "kernel32.dll";

 

Siehe auch "DLL-Funktionen aufrufen"