SQL-Fehler wenn Programm im Autostart
-
- Beiträge: 31
- Registriert: Mo 16. Jan 2012, 11:24
- OS, Lazarus, FPC: Win7 (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: Tübingen
SQL-Fehler wenn Programm im Autostart
Hallo,
ich habe ein Programm mit SQLLite-Datenbank laufen unter Win7 (+ Zeos Komponenten). Alles funktioniert wunderbar, wenn ich das Programm "manuell" starte. Aber wenn ich das Programm per Registry-Eintrag in den Autostart setze und dann Windows starte, kommt eine Fehlermeldung beim Programmstart:
"SQL Error: library routine called out of sequence"
Wo liegt da das Problem? Es funktioniert doch eigentlich alles...
LG
ich habe ein Programm mit SQLLite-Datenbank laufen unter Win7 (+ Zeos Komponenten). Alles funktioniert wunderbar, wenn ich das Programm "manuell" starte. Aber wenn ich das Programm per Registry-Eintrag in den Autostart setze und dann Windows starte, kommt eine Fehlermeldung beim Programmstart:
"SQL Error: library routine called out of sequence"
Wo liegt da das Problem? Es funktioniert doch eigentlich alles...
LG
-
- Beiträge: 465
- Registriert: Sa 21. Aug 2010, 21:30
- OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
- CPU-Target: 64-Bit
- Wohnort: nahe Bremen
- Kontaktdaten:
Re: SQL-Fehler wenn Programm im Autostart
wie gibst du den Pfad zur DB an? vollständig oder relativ?
www.mcpatcher.net | www.hoeper.me
-
- Beiträge: 31
- Registriert: Mo 16. Jan 2012, 11:24
- OS, Lazarus, FPC: Win7 (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: Tübingen
Re: SQL-Fehler wenn Programm im Autostart
Bei Programmstart (main.create):
[delphi]ZConnection1.Database:= 'data\zz-projekte.db';
ZConnection1.Connected:= true;[/delphi]
sprich: relativ...
[delphi]ZConnection1.Database:= 'data\zz-projekte.db';
ZConnection1.Connected:= true;[/delphi]
sprich: relativ...
-
- Beiträge: 465
- Registriert: Sa 21. Aug 2010, 21:30
- OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
- CPU-Target: 64-Bit
- Wohnort: nahe Bremen
- Kontaktdaten:
Re: SQL-Fehler wenn Programm im Autostart
versuch mal den Pfad ganz anzugeben.
www.mcpatcher.net | www.hoeper.me
-
- Beiträge: 31
- Registriert: Mo 16. Jan 2012, 11:24
- OS, Lazarus, FPC: Win7 (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: Tübingen
Re: SQL-Fehler wenn Programm im Autostart
Tatsache, das funktioniert. Vielen Dank! Gibt's da eine Erklärung, warum das bei relativen Pfanden im Autostart nicht funzt, oder muss man das einfach so hinnehmen? 

- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: SQL-Fehler wenn Programm im Autostart
Vermutlich fehlt dem Programm bei deiner Autostartmethode ein passendes Arbeitsverzeichnis. Wie sieht denn dein Eintrag dafür genau aus?kmayse hat geschrieben:Gibt's da eine Erklärung, warum das bei relativen Pfanden im Autostart nicht funzt, oder muss man das einfach so hinnehmen?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 31
- Registriert: Mo 16. Jan 2012, 11:24
- OS, Lazarus, FPC: Win7 (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: Tübingen
Re: SQL-Fehler wenn Programm im Autostart
So erstelle ich den Registry-Eintrag:
[delphi]try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
Reg.WriteString('Programmname', ParamStr(0));
Reg.CloseKey;
finally
Reg.Free;
end;[/delphi]
[delphi]try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
Reg.WriteString('Programmname', ParamStr(0));
Reg.CloseKey;
finally
Reg.Free;
end;[/delphi]
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: SQL-Fehler wenn Programm im Autostart
Ja, das Problem ist dann wohl wirklich das fehlende Arbeitsverzeichnis. Das kannst du beim Autostart über die Registry aber nicht direkt übergeben. Es gibt nun mehrere Möglichkeiten:
Micha
- Autostart per Verknüpfung im im Programme/Autostart - Ordner. Verknüpfungen besitzen eine Option "Arbeitsverzeichnis", welches dann der Startpunkt für die relativen Pfade ist.
- In die Registry unter App Paths dein Programm und das zugehörige Arbeitsverzeichnis eintragen. Wird hier beschrieben welche Schlüssel dafür notwendig sind: http://stackoverflow.com/questions/2822 ... -directory" onclick="window.open(this.href);return false;
- Beim Programmstart das Arbeitsverzeichnis mit ChDir wechseln und zwar dahin wo auch die Exe liegt.
- ...
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 31
- Registriert: Mo 16. Jan 2012, 11:24
- OS, Lazarus, FPC: Win7 (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: Tübingen
Re: SQL-Fehler wenn Programm im Autostart
Ok, die Sache mit dem Autostart funktioniert jetzt. Aber ich erhalte einen SQL-Fehler, wenn ich das Programm auf einem anderen PC starte. Solange er sich in einem "Eigene Dokumente"-Ordner befindet, alles paletti, da funktioniert alles. Aber wenn ich das Programm etwa in C:\Programme\xyz kopiere, kam zunächst folgender Error:
"Attempt to write a readonly database"
Dann habe ich die Benutzerrechte der datenbank-File entsprechend geändert, damit jeder User Schreibzugriff darauf hat. Nach erneutem Programmstart kam diesmal die Fehlermeldung:
"Unable to open database file"
Ich versteh's nicht... Alle Rechte sind da, die datenbank-file ist da, der Pfand ist korrekt (absolut, s.o.) angegeben...
"Attempt to write a readonly database"
Dann habe ich die Benutzerrechte der datenbank-File entsprechend geändert, damit jeder User Schreibzugriff darauf hat. Nach erneutem Programmstart kam diesmal die Fehlermeldung:
"Unable to open database file"
Ich versteh's nicht... Alle Rechte sind da, die datenbank-file ist da, der Pfand ist korrekt (absolut, s.o.) angegeben...
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: SQL-Fehler wenn Programm im Autostart
Da sollen auch keine Datendateien liegen unter Windows 7. Schau dir mal die Funktionen GetAppConfigDir und GetUserDir an. Vielleicht kannst du die Daten dort unterbringen?kmayse hat geschrieben:Ok, die Sache mit dem Autostart funktioniert jetzt. Aber ich erhalte einen SQL-Fehler, wenn ich das Programm auf einem anderen PC starte. Solange er sich in einem "Eigene Dokumente"-Ordner befindet, alles paletti, da funktioniert alles. Aber wenn ich das Programm etwa in C:\Programme\xyz kopiere, ...
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: SQL-Fehler wenn Programm im Autostart
Nicht nur W7, war schon XP so, wenn man nicht im GOD Mode gearbeitet hat (so wie die meisten User). Nur unter W7 setzt das System das strenger durch.m.fuchs hat geschrieben:Da sollen auch keine Datendateien liegen unter Windows 7. Schau dir mal die Funktionen GetAppConfigDir und GetUserDir an. Vielleicht kannst du die Daten dort unterbringen?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 465
- Registriert: Sa 21. Aug 2010, 21:30
- OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
- CPU-Target: 64-Bit
- Wohnort: nahe Bremen
- Kontaktdaten:
Re: SQL-Fehler wenn Programm im Autostart
so hab ichs auch vermutet nur ich wusste gerade nicht wie ich das ausdrücken sollm.fuchs hat geschrieben:Vermutlich fehlt dem Programm bei deiner Autostartmethode ein passendes Arbeitsverzeichnis. Wie sieht denn dein Eintrag dafür genau aus?kmayse hat geschrieben:Gibt's da eine Erklärung, warum das bei relativen Pfanden im Autostart nicht funzt, oder muss man das einfach so hinnehmen?

www.mcpatcher.net | www.hoeper.me