AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kompatibilität

Ein Thema von LkZ · begonnen am 6. Jan 2005 · letzter Beitrag vom 8. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2      
LkZ

Registriert seit: 26. Mai 2004
75 Beiträge
 
Delphi 6 Enterprise
 
#1

Kompatibilität

  Alt 6. Jan 2005, 20:27
hi leute!

ich hab da ein progamm, dass mit einer ADOConnection und ADODataSet komponente mit einer mdb(acces-Datenbank) arbeitet..
naja ich hab bei meinem programm es so eingestellt, dass er meine ADO-DSN in die Registry schreibt/liest(natürlich sind Hauptprogramm und Datanbank-Datei im selben Ordner), damit es beim öffnen des Programms keine Probleme gibt.
Also beim starten des Programms liest er die DSN vom der Registry und beim schließen schreibt er in die Registry die DSN...

Nur das Problem ist, als ich das Programm anderen Leuten geben wollte und die das dann installiert haben, dann wollte das progamm nicht starten, alles was man dann sehen konnte ist der Splashscreen des programms und als der splashscreen dann verschwand kam nix mehr.

Doch warum gehts denn bei mir, ich hab auch oft bei mir installiert und es läuft einwandfrei.

ich hab denn mal recherchiert und hab gesehen, dass beim Registry-Eintrag beim "Wert" also da wo die DSN eigentlich stehen sollte, auf einmal nix mehr steht...sehr seltsam

kann mir jemand vielleicht helfen? ich probiers schon seit tagen aber das Resultat ist immer das selbe...

danke
MfG LkZ!
Immer probiern!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Kompatibilität

  Alt 6. Jan 2005, 20:42
Es sind noch ein paar Fragen offen:

1, Wird in der DNS der komplette Pfad angegeben bzw. dieser dynamisch ergänzt. Falls nicht, so kann dies ein Problem darstellen, da ohne Pfadangabe immer der aktuelle Pfad zu suche genommen wird und dieser nicht immer der Anwendungspfad ist

2, Wo wird in die Registry geschrieben? Hoffentlich unter HKEY_CURRENT_USER. Unter HKEY_LOCAL_SYSTEM benötigt man Admin-Rechte für den schreibzugriff.

Falls diese Tipps nichts helfen, solltest Du noch etwas Code posten, was bei deiner Programminitialisierung passiert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#3

Re: Kompatibilität

  Alt 6. Jan 2005, 20:47
Ein paar zusätzliche Infos wären nicht schlecht.

- schreibst den registry key mit dem connectionstring wärend des setups un die registry oder machst du das, wie ich es vermute, im onCreate deiner Mainform ?

Wenn das so ist, schau dir mal an wir ich das gemacht habe ...

//TAdoConnection.WillConnect(...);

Delphi-Quellcode:
Procedure TData.connWillConnect(Connection: TADOConnection;
  var ConnectionString, UserID, Password: WideString;
  var ConnectOptions: TConnectOption; var EventStatus: TEventStatus);

var reg:tregistry;
begin

  reg:=Tregistry.Create;
  try
    try
      reg.RootKey:=HKEY_LOCAL_MACHINE;
      reg.OpenKey('\Software\ESS\DaxoKal',true);
      if reg.ValueExists('DBDir') then DataPath:=reg.ReadString('DBDir') else Datapath:=Programmpfad;
      if reg.ValueExists('altDBDir') then altDataPath:=reg.ReadString('altDBDir') else altDatapath:=Programmpfad;
    finally
      reg.Free;
    end;
  except
  end;

  if Fileexists(Datapath+'\data.mdb') then
  begin
    if connectionstring<>DataPath+'\data.mdbthen Connectionstring:=DataPath+'\data.mdb';
    main.DBLabel.Caption:='Datenbank: '+Connectionstring;
  end
  else begin
    if Fileexists(altDatapath+'\data.mdb') then
    begin
      if connectionstring<>altDataPath+'\data.mdbthen Connectionstring:=altDataPath+'\data.mdb';
      main.DBLabel.Caption:='Datenbank: '+Connectionstring;
    end
    else begin
      Showmessage('DaxoKal konnte keine Verbindung zu der Primären und Alternativen Datenbank herstellen.'+#13#10+
                  'Bitte Überprüfen Sie Ihre Installation und die Zugriffsrechte auf die Datenbankverzeichnisse.'+#13#10+
                  'Primäre Datenbank : '+Datapath+'\data.mdb'+#13#10+
                  'Alternative Datenbank : '+altDatapath+'\data.mdb'
                  );
      Abort;
    end;
  end;


end;
[edit=Christian Seehase]Code-Tags durch Delphi-Tags ersetzt. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Kompatibilität

  Alt 6. Jan 2005, 20:50
Hallo jensw,

du solltest Dein Registry-Key von HKEY_LOCAL_MACHINE nach HKEY_CURRENT_USER verschieben.
In Zeiten von Täglich zig-Neuen Viren und Würmern sollte kein (unbedarfter) User mehr mit Admin-Rechten seinen Rechner im Normalfall betreiben. Und als Nicht-Admin hast du in der Regel keinen Schreibzugriff auf HKEY_LOCAL_MACHINE.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
LkZ

Registriert seit: 26. Mai 2004
75 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Kompatibilität

  Alt 6. Jan 2005, 20:52
Ja Ok das mit dem HKEY_CURRENT_USER hab ich jetzt geämdert...

zu 1. das mit der DSN: er sollte eigentlich den ganzen connenctionstring in die Registry schreiben, was er ja nicht tut. Mein ConnectionString ist:

"Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Projekts\CHEMIE_datenbank\Data.mdb;Mode= ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDBatabase Password=offbyte;Jet OLEDB:Engine Type=5;Jet OLEDBatabase Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=True;Jet OLEDBon't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=True;Jet OLEDB:SFP=False"

naja gut weiss jetzt nicht, ob dir das hilft aber naja..

MfG
Immer probiern!
  Mit Zitat antworten Zitat
LkZ

Registriert seit: 26. Mai 2004
75 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Kompatibilität

  Alt 6. Jan 2005, 20:57
Zitat von jensw_2000:
Ein paar zusätzliche Infos wären nicht schlecht.

- schreibst den registry key mit dem connectionstring wärend des setups un die registry oder machst du das, wie ich es vermute, im onCreate deiner Mainform ?

[...]
Ich habs eine Zeit lang ma versucht mit OnCreate aber delphi hat mir immer eine exeption gegeben, bevor das programm startete, also habs ichs sein gelassen..
Immer probiern!
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#7

Re: Kompatibilität

  Alt 6. Jan 2005, 21:00
@Bernhard Geyer

Du hast "für den Normalfall" Recht.

Aber in diesem Fall mache ich es gerade weil die User keine Adminrechte haben und somit die Werte nicht verändern können.

Die Datenbankverzeichnisse (DBDir - normales Datenbankverzeichnis auf dem Server, AltDBDir - ein alternatives Datenbankverzeichnis, z.B. in c:\programme\irgendwas für Notebook Nutzer) werden während der Installation, bei der man ohnehin Adminrechte benötigt, geschrieben.

Die Pfade kann man aus dem Programm heraus Ändern, wenn man lokale Adminrechte hat, normale User dürfen das halt nicht ...


Habe gerade gesehen, dass das nicht der aktuelle Code war.

Die Änderung ist da noch nicht drin ...
Code:
reg.OpenKeyReanOnly('\Software\ESS\DaxoKal');
  Mit Zitat antworten Zitat
LkZ

Registriert seit: 26. Mai 2004
75 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Kompatibilität

  Alt 6. Jan 2005, 21:11
Ja weiss nicht...was ist denn jetzt die lösung des problems? bin jetzt total konfuss..
Immer probiern!
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#9

Re: Kompatibilität

  Alt 6. Jan 2005, 21:12
@LkZ

Zitat:
"Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Projekts\CHEMIE_datenbank\Data.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDBatabase Password=offbyte;Jet OLEDB:Engine Type=5;Jet OLEDBatabase Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=True;Jet OLEDBon't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=True;Jet OLEDB:SFP=False"
Damit setzt du ja voraus, das alle User dein Programm in "C:\Projekts\CHEMIE_datenbank\" installieren.

Wenn du den gesammten Connectionstring speichern willst, dann musst du im TAdoConnection.WillConnect prüfen, ob die data.mdb die im CS angegeben ist, auch wirklich im dem Pfad steht, und falls nicht, den CS ggf. abändern ...
" ExtractfilePath(application.Exename)+'\Data.mdb' "

Warum willst du das überhaupt in die Registry schreiben und dann wieder laden ?


gib doch einfach im TAdoConnection.Willconnect (...) folgendes ein

Connectionstring:=ExtractfilePath(application.Exen ame)+'\Data.mdb' ;
Das passt immer
  Mit Zitat antworten Zitat
LkZ

Registriert seit: 26. Mai 2004
75 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: Kompatibilität

  Alt 6. Jan 2005, 21:26
dankE! Hat echt geholfen!
Immer probiern!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:48 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