SQL-Fehler wenn Programm im Autostart

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
kmayse
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

Beitrag von kmayse »

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

Bauer321
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

Beitrag von Bauer321 »

wie gibst du den Pfad zur DB an? vollständig oder relativ?
www.mcpatcher.net | www.hoeper.me

kmayse
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

Beitrag von kmayse »

Bei Programmstart (main.create):
[delphi]ZConnection1.Database:= 'data\zz-projekte.db';
ZConnection1.Connected:= true;[/delphi]

sprich: relativ...

Bauer321
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

Beitrag von Bauer321 »

versuch mal den Pfad ganz anzugeben.
www.mcpatcher.net | www.hoeper.me

kmayse
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

Beitrag von kmayse »

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? :-)

Benutzeravatar
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

Beitrag von m.fuchs »

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? :-)
Vermutlich fehlt dem Programm bei deiner Autostartmethode ein passendes Arbeitsverzeichnis. Wie sieht denn dein Eintrag dafür genau aus?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

kmayse
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

Beitrag von kmayse »

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]

Benutzeravatar
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

Beitrag von m.fuchs »

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:
  • 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.
  • ...
hth
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

kmayse
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

Beitrag von kmayse »

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...

Benutzeravatar
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

Beitrag von m.fuchs »

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, ...
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?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
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

Beitrag von af0815 »

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?
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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Bauer321
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

Beitrag von Bauer321 »

m.fuchs hat geschrieben:
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? :-)
Vermutlich fehlt dem Programm bei deiner Autostartmethode ein passendes Arbeitsverzeichnis. Wie sieht denn dein Eintrag dafür genau aus?
so hab ichs auch vermutet nur ich wusste gerade nicht wie ich das ausdrücken soll :)
www.mcpatcher.net | www.hoeper.me

Antworten