Doppelte Pfade für dBASE Include-Dateien

Das folgende Thema ist eine Spezialität, die meiner Erfahrung nach nur sehr wenige dBASE-Entwickler betrifft. Wenn Sie also nach dem nächsten Abschnitt nicht wissen um was es geht können Sie sich den Rest auch sparen, dann sind Sie von dem Problem nicht betroffen.

Im Installations-Verzeichnis von dBASE gibt es ein Unterverzeichnis include mit Dateien, die über #include eingebunden werden können (siehe dBASE lebt! Band 2 ab Seite 173). Wichtig sind diese Dateien z. B. wenn Sie die Windows-API nutzen wollen. Für komplexere dBASE-Programm kann es auch nötig werden, diese Dateien individuell anzupassen, was problemlos möglich ist. Sie müssen nur vor der Installation neuer dBASE-Versionen (auch Updates!) die von Ihnen dort geänderten Dateien in Sicherheit zu bringen und nach der Installation wieder zurück kopieren. Bis einschliesslich Windows XP war das alles easy.

Dann kamen Vista und Windows7 und damit tun sich evtl. ganz neue Probleme auf, wenn Sie diese Dateien ändern. Denn ab Vista und Windows7, zumindest bei den 64bit Versionen und evtl. auch bei 32bit, liegen die Dateien aus dem dBASE include Verzeichnis zusätzlich noch woanders und werden von dort eingebunden. Dieser andere Pfad lautet beispielsweise

c:\users\xxxxx\appdata\local\dbase\include

wobei das xxxxx für den jeweiligen Benutzernamen steht. Von dort werden diese Dateien bei der Kompilierung verwendet, nicht mehr aus dem bisherigen include Verzeichnis! Das heisst, dass Sie die von Ihnen geänderten Versionen auch dorthin kopieren müssen, damit Ihre Änderungen verwendet werden.

Wo das beschrieben steht? Nirgends, wozu auch … Woher man das dann wissen soll? Na z. B. indem ein Programm unter Windows XP fehlerfrei kompiliert wird und unter Windows7 nicht. Und man einen halben Vormittag nach dem Grund sucht … Und irgendwann entnervt die duplizierten Includedateien findet … Man hat ja auch sonst nichts zu tun.

Obiges gilt für Windows7 64bit Home Premium. Bei der 32bit Version und/oder anderen Varianten (Home oder Business, Premium oder nicht) und anderen Benutzer-Konfigurationen mag das im Detail anders sein. Am besten suchen Sie Ihre Festplatte nach Dateien wie z. B. vdbase.hwinuser.h oder win32api.prg ab, dann finden Sie die Verzeichnisse schon.

Bei Vista dürfte es ähnlich sein, ebenso beim neuen Windows8 (ich schreibe “dürfte”, denn beide Versionen liefen hier noch nie auf für produktive Arbeit genutzten PCs …).

(Stand dieser Info: 2014)

Update 2018: es gehört zu den immer wieder neu erlebten Freuden der IT-Branche, dass Lösungen für ein Programm der Version x beim Update auf Version x+1 nicht mehr funktionieren. So geschehen nach dem Update auf das derzeit aktuelle dBASE Plus 11.

Wieder hat die Kompilierung diverser Programme nicht mehr funktioniert (“Nicht genügend Arbeitsspeicher für diese Operation” auch bei kleinsten Dateien), wieder waren es die Include-Dateien der Windows-API, die jedes dBASE neu mitbringt und die diesmal schon wieder woanders abgelegt wurden. Wieder waren damit meine angepassten Varianten, z. B. eine entschlackte winuser.h, nicht mehr im Zugriff. Wieder die Suche wo sie denn diesmal sind …

Zur Abwechslung fand ich die neuen Dateien jetzt unter diesem Pfad:

C:\Users\_name_\Documents\dbase\_version_\Include

_name_ ist der Benutzername und _version_ die dBASE Plus Version, bzw. so wie Sie das Installations-Verzeichnis für die Programmdateien (das woanders liegt!) genannt haben.