Das Problem ist, dass die BDE nun einmal mit Vista und Windows 7 nicht richtig funktioniert. Das ist so, Punkt. In größeren Projekten, insbesondere in Firmen, ist die Ablösung nicht so einfach, deshalb wird sie da auch heute noch verwendet. Aber ausgerechnet in kleinen Projekten?
Na gut, wenn du dir das Leben schwer machen willst...
Das Problem kann auch hier die Virtualisierung sein. Die BDE-Administrationsoberfläche muss mit Adminrechten gestartet werden, damit sie in den Pfad schreiben kann. Wurde aber vorher die idapi32.cfg bereits virtualisiert erstellt, dann gibt es davon zwei...
Wenn du jetzt die BDE-Konfiguration startest, benutzt die die eine Datei mit den einen Einstellungen. Und setzt z.B. auch die Pfade entsprechend. Wenn du dann dein Programm startest, ist alles ok.
Startest du jetzt das Programm alleine, wird aber evtl. eine andere Version der Datei benutzt. Schau einmal, ob auch die idapi32.cfg im VirtualStore liegt.
Dann ist noch das eingestellte Verzeichnis wichtig. Standardmäßig ist das das Laufwerk C: direkt im Root. Leider existiert das aber a nicht immer und b ist es in der Regel nicht beschreibbar...
Du musst also in der Konfiguration alle Pfade auf ein beschreibbares Verzeichnis setzen.
Dazu kommt, dass das Private Dir bei jeder Instanz deines Programms ein anderes sein sollte. Die Verzeichnisse (SessionDir, ...) solltest du deshalb beim Programmstart in der ersten Unit in der uses des Projekts korrekt setzen und die BDE auch gleich initialisieren.
Leider hilft auch das alles nur bedingt, aber zumindest wenn nur auf einem PC ohne Netzwerkfreigaben auf die Datenbank zugegriffen wird, läuft es so in der Regel stabil. Leider auch nicht 100%ig immer.
Deshalb kannst du viel versuchen, aber wenn es nur ein kleineres Projekt ist, wäre es viel viel einfacher gleich auf ein ordentliches Datenbanksystem umzusteigen. Erstens hast du dann deutlich weniger Probleme, zweitens deutlich mehr Features und drittens ist es bei kleineren Projekten auch teilweise deutlich einfacher (bei größeren leider nicht unbedingt...).