AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem beim Starten des Programms via Datenverknüpfung
Thema durchsuchen
Ansicht
Themen-Optionen

Problem beim Starten des Programms via Datenverknüpfung

Ein Thema von Chaoten-Joe · begonnen am 30. Mai 2010 · letzter Beitrag vom 30. Mai 2010
Antwort Antwort
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem beim Starten des Programms via Datenverknüpfung

  Alt 30. Mai 2010, 22:02
Hallo zusammen,

ich habe folgendes Problem und keine Ahnung, ob es am Programm oder falschen Verknüpfung in der Registry liegt.

Sachverhalt:
Mein Programm funktioniert problemlos und hat eine integrierte Datensicherung. Nun habe ich seit der letzten Installation via Inno-Setup die Dateiendung *.gds in der Registry als "Datensicherungsdatei für mein Programm" hinterlegt. Durch einen Doppelklick auf die Datei soll sich mein Programm öffnen (Parameter werden übergeben) und die Datensicherung eingearbeitet werden. Wird auch alles super in Windows angezeigt und auch der Aufruf funktioniert.

Die Datensicherungen können von verschiedenen Benutzern ausgetauscht werden und liegen daher zuerst meist auf einem USB-Stick, auf CD oder in einem temp. Verzeichnis vor

Das Problem ist folgendes:
Dadurch, dass die Datensicherungsdatei meist an irgendeinem beliebigen Ort ist (nur eben nicht im Programmverzeichnis) ... bricht der Programmstart mit einem Fehler ab. Es müsste irgendwie an das Programm ein "Ausführen in"-Parameter übergeben werden.

Zum Vergleich: In den Eigenschaften des Desktop-Icons ist ja das Programmverzeichnis bei "Ausführen in" vermerkt. Ist dort nichts eingegeben, funktioniert der Programmstart auch nicht. War bisher auch kein Problem. ABER JETZT!

Wo liegt das Problem? Kann ich beim Doppelklick auf eine Windows-Datei und beim Einlesen der Parameter "irgendwie" sicherstellen, dass die Datei auch im Arbeitsverzeichnis ausgeführt wird?

Ich hoffe, ich habe das Problem einigermaßen schildern können. Ich denke, es ist kein Inno-Problem (Anzeige funktioniert, Klick funktioniert, Programm startet auch).

Zur Info: So ist der Dateityp registriert:
Delphi-Quellcode:
[Registry]
;Mit dieser Anweisung wird ein Registryschlüssel namens ".gds" erzeugt
Root: HKCR; Subkey: ".gds"; ValueType: string; ValueName: ""; ValueData: "GDS.File"; Flags: uninsdeletevalue
;TYpenSchlüssel erstellen
Root: HKCR; Subkey: "GDS.File"; ValueType: string; ValueName: ""; ValueData: "Datensicherung der Gebietskartei"; Flags: uninsdeletekey
;Icon Zuordnen
Root: HKCR; Subkey: "GDS.File\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\gebiete.exe,1"
;Aktion beim Klicken festlegen
Root: HKCR; Subkey: "GDS.File\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\gebiete.exe"" ""restorebackup"" ""%1""";
;Beschreibung der Aktion festlegen
Root: HKCR; Subkey: "GDS.File\shell\open"; ValueType: string; ValueName: ""; ValueData: "Öffnet die Gebietskartei und startet die Datenwiederherstellung";
Danke für einen Tipp!
Und vielen Dank vorab!

Christian
Christian Becker
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Problem beim Starten des Programms via Datenverknüpfung

  Alt 30. Mai 2010, 22:04
Zitat:
bricht der Programmstart mit einem Fehler ab
Der genaue Fehler wäre interessant.
Aber dein Problem klingt danach das du irgendwo relative Pfade verwendest.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
30. Mai 2010, 22:09
Dieses Thema wurde von "Matze" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
In die Code-Library gehören nur funktionierende Codes (= Nachschlagewerk)
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Problem beim Starten des Programms via Datenverknüpfung

  Alt 30. Mai 2010, 22:12
Es ist meine eigene Fehlermeldung á la "Es ist ein Fehler beim Initialisieren der DB aufgetreten" ...
Ich arbeite eigentlich immer mit absoluten Pfaden: Pfad beim Starten der *.exe einlesen und darauf aufbauen.

Aber daran könnte es auch liegen. Denn ich starte (durch die Dateiverknüpfung) ja ganz woanders ...
Wie kann ich das umgehen???
Christian Becker
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Problem beim Starten des Programms via Datenverknüpfung

  Alt 30. Mai 2010, 22:18
Umgehen ist zwar ein schlechter Weg (Ursache beseitigen ist besser als den Fehler zu vertuschen) aber ein Weg wäre am besten noch in der Projektdatei bevor irgendwas anderes passiert das CurrentDirectory zu setzen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Problem beim Starten des Programms via Datenverknüpfung

  Alt 30. Mai 2010, 22:52
Super! Hat geklappt! Habe folgendes gemacht, da in der Registry der Programmpfad gespeichert ist:
Delphi-Quellcode:
begin
  Reg := TRegistry.Create;
  try
    //Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.RootKey := HKEY_CURRENT_USER;
    Reg.OpenKey('\Software\Gebietskartei',True);
    with Reg do
    begin
      try
        Mainroot:=ReadString('Path');
      except end;
    end;
  finally
    Reg.CloseKey;
    Reg.Free;
  end;
  if Mainroot<>'then SetCurrentDir(Mainroot);
  Application.Initialize;
  ...
... und habe dann zuvor noch folgenden Code eingebaut:
Delphi-Quellcode:
function SetCurrentDir(const ADir: string): Boolean;
begin
  Result := SetCurrentDirectory(PChar(ADir));
end;
Er liest nun den korrekten Pfad aus der Registry ein und setzt den Pfad vor der Erstellung aller Formulare. Klasse!

Danke und schönen Abend!
Das ging aber echt fix!
Christian Becker
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz