Autor Beitrag
m.keller
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win xp, Win 7
C# (VS 2008)
BeitragVerfasst: Fr 14.02.14 16:33 
Hallo Entwickler,

nun bin ich schon seit drei Tagen auf der such für eine Lösung meines Problems.
Weder google kann mir wirklich helfen noch irgendwelche Programmänderungen :-(

Ich habe ein Software geschrieben die ich in der Registry für den Autostart eintrage.
Die Software Startet auch.
Nun muss ich eine Libary laden und aus dieser initialisieren.

Das Problem ist, bei diesem Vorgang gibt es ein Fehler.
Selbst den TraceListener erstellt meine Software nicht mehr.

Dies ist aber nur bei einem Starten von Windows.
Öffne ich die Software manuell funktioniert der Vorgang.

Wenn ich das automatisch initialisieren deaktiviere und aus der Registry starten lasse, dann manuell initialisiere habe ich das selbe Problem.

Lass ich die Software über den Startup Ordner starten funktioniert sie auch so wie vorgesehen.

Sind irgendwelche Service oder Schnittstellen das Problem, vielleicht noch nicht geladen oder so etwas?

Vielleicht habt ihr eine Idee um das Problem zu umgehen.

Vielen Dank schon mal
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 14.02.14 16:43 
Hallo!

Wie lautet denn die Fehlermeldung? Oder bekommst Du die nicht zu Gesicht?

Wie gibst Du im Programm den Pfad zur Library an? Benutzt Du dort das aktuelle Verzeichnis? Das könnte beim Start durch die Registry anders sein, als man es erwartet.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
m.keller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win xp, Win 7
C# (VS 2008)
BeitragVerfasst: Fr 14.02.14 16:47 
Die Fehlermeldung wird von der Library selber erzeugt. Es ist eine die ein Zulieferer geschrieben hat.
dies liegt im selben Pfad wie meine .exe
Und ist mit Visual Studio 2008 mit als Verweis eingebunden.
Demnach muss eigentlich die Libary richtig geladen werden.
Nur das Initialisieren funktioniert aus dieser nicht.
Der Zulieferer konnte mir bis jetzt keine wirkliche Antwort drauf geben.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 14.02.14 17:15 
Könnte mir vorstellen das der Arbeitsordner ein anderer ist wenn man seine Anwendung aus dem Autostart ausführt.
Starte doch mal deine Anwendung aus einer Kommandozeile während du nicht gerade im Programmordner bist. Wenns dann auch knallt liegst es vermutlich daran das die Library des Zulieferers selbst Abhängigkeiten hat die diese Library relativ zum Arbeitsordner suchst und nicht relativ zu seinem eigenen Lagerort.
m.keller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win xp, Win 7
C# (VS 2008)
BeitragVerfasst: Mo 17.02.14 08:50 
Hallo,

also laut Zulieferer, sucht die Libary in dem Ordner von wo aus die Software Startet wenn dort nichts zu finden ist in dem Userverzeichniss. Allerdings ist das was sie versucht zu finden in dem Ordner, von wo aus die Software Startet.

Oder kann es auch noch daran liegen, dass ich zur Zeit mit der Debugversion auf dem Embedded-System Teste, und nicht normal Installiert habe?

_________________
Der gesunde Menschenverstand ist nur eine Anhäufung von Vorurteilen, die man bis zum 18. Lebensjahr erworben hat. (Albert Einstein)
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 17.02.14 11:40 
Zitat:
also laut Zulieferer, sucht die Libary in dem Ordner von wo aus die Software Startet wenn dort nichts zu finden ist in dem Userverzeichniss. Allerdings ist das was sie versucht zu finden in dem Ordner, von wo aus die Software Startet.


Heißt für mich sie sucht im Autostart Ordner wenn aus dem Autostart gestartet wurde. Die Abhängigkeiten hast du da hin kopiert?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 17.02.14 12:59 
Dann setze doch beim Start (vor dem Laden der Bibliothek) das aktuelle Verzeichnis mit SetCurrentDir auf das korrekte Verzeichnis, in deinem Fall dann wohl das Verzeichnis der Anwendung, sprich ExtractFilePath(ParamStr(0)).
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 17.02.14 13:17 
Ich übersetz mal nach C# ;)

ausblenden C#-Quelltext
1:
Directory.SetCurrentDirectory(Application.StartupPath);					

Für diesen Beitrag haben gedankt: m.keller
m.keller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win xp, Win 7
C# (VS 2008)
BeitragVerfasst: Mo 17.02.14 15:29 
Aus dem Autostartordner funktioniert es ja...
Nur nicht mit der Möglichkeit aus der Registry.

_________________
Der gesunde Menschenverstand ist nur eine Anhäufung von Vorurteilen, die man bis zum 18. Lebensjahr erworben hat. (Albert Einstein)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 17.02.14 15:32 
user profile iconm.keller hat folgendes geschrieben Zum zitierten Posting springen:
Aus dem Autostartordner funktioniert es ja...
Nur nicht mit der Möglichkeit aus der Registry.
Wenn das Programm aufgerufen wird, ist das aktuelle Arbeitsverzeichnis nicht das, in dem deine Anwendung liegt. Simulieren kannst du das, indem du in Delphi unter Start --> Parameter ein anderes Arbeitsverzeichnis angibst, z.B. c:\temp (natürlich ohne irgendwelche Dateien dorthin zu kopieren). Wenn deine Anwendung dann noch funktioniert, wird sie es im Autostart auch tun.
m.keller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win xp, Win 7
C# (VS 2008)
BeitragVerfasst: Mo 17.02.14 16:46 
Also wenn ich die Daten aus dem Ordner z.B. auf den Desktop aus den Debuggordner kopiere, und Manuell starte, dann funktioniert alles.
Gebe ich in der Registry den Pfad an, startet die Software, aber wie ich beschrieben habe, erstellt er z.B. kein TraceListener und kann die Libary nicht Initialisieren.

_________________
Der gesunde Menschenverstand ist nur eine Anhäufung von Vorurteilen, die man bis zum 18. Lebensjahr erworben hat. (Albert Einstein)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 17.02.14 17:50 
Wie startest du denn manuell? Per Doppelklick? Dass das kein Problem ist, ist klar.

Du musst wie schon mehrfach geschrieben das Arbeitsverzeichnis auf einen anderen als den Ordner deiner Anwendung setzen. Entweder in Delphi, wenn du von dort startest, oder z.B. in einer Verknüpfung mit deiner Anwendung.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 17.02.14 17:52 
@jaenicke: Das hier ist übrigens eine C#/.NET-Frage ;)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: m.keller
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 17.02.14 20:35 
Das kommt davon, wenn man immer nur kurz reinschaut. :oops:

In Visual Studio geht das mit rechte Maustaste auf das Projekt rechts im Projektmappen-Explorer, Eigenschaften, dann links Debuggen und dann Arbeitsverzeichnis setzen.

Für diesen Beitrag haben gedankt: m.keller
m.keller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win xp, Win 7
C# (VS 2008)
BeitragVerfasst: Di 18.02.14 18:27 
Hallo,

es scheint mit dem Ordner verweis zu funktionieren.
Vielen Dank.
Da wäre ich sonst nicht drauf gekommen.

_________________
Der gesunde Menschenverstand ist nur eine Anhäufung von Vorurteilen, die man bis zum 18. Lebensjahr erworben hat. (Albert Einstein)