Autor Beitrag
bmontag
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 22.01.09 12:58 
Hallo Forum,

ich suche seit zwei Wochen nach einem Fehler in meiner Anwendung, komme aber nicht weiter. Ich hab auch schon hier im Forum gesucht, aber kein passendes Thema gefunden. Mein konkretes Problem:
Ich habe eine bestehende Anwendung in eine dll umgewandelt. Zur Kommunikation mit der Hostanwendung habe ich in meine Anwendung eine zusätzliche Unit implementiert, die als Schnittstelle zwischen der Hostanwendung und meiner Anwendung fungiert. Das hat für mich den Vorteil, dass ich meine Anwendung mit wenigen Handgriffen als eigenständige EXE-Datei oder als dll betreiben kann. Über diese Schnittstelle teilt die Hostanwendung meiner dll u.a. mit, in welcher Directory meine Anwendung Dateien lesen und schreiben kann.
Im dll - Modus hab ich aber folgendes Problem: Die Hostanwendung (C++ Programm)läuft in einer anderen Directoy als die, in der sich meine dll befindet. Das geht wohl vom Hersteller der Hostanwendung nicht anders. Startet die Hostanwendung die dll wird offensichtlich die CurrentDirectory auf den Pfad umgestellt, in der sich die Hostanwendung befindet. Das ist aber ein Problem für die Hostanwendung.
Jetzt meine eigentlich banale Frage: was passiert eigentlich genau, wenn die Hostanwendung meine dll lädt ?? Die Umstellung der CurrentDirectory passiert unmittelbar beim Laden der dll. Zu diesem Zeitpunkt hat die Hostanwendung aber noch keine Parameter an meine dll geschickt, d.h sie ist auf dem Bildschirm als Anwendung noch nicht sichtbar. Erst durch Betätigen eines Buttons auf der Oberfläche der Hostanwendung wird meine Anwendung parametriert und sichtbar. Die dll startet dann als Thread. Wenn die dll-Anwendung gestartet ist, findet ein permaneter Datenaustausch über strings statt. Das läuft auch alles prima. Nur die Umstellung der CurrentDirectoy bereitet mir Kopfschmerzen. Ich habe dann noch versucht, die CuurretDirectoy in meiner Anwendung umzustellen, aber das müsste ich andauernd machen. Irgendwie stellt meine dll scheinbar immer die CurrentDirectory um und ich weiss nicht warum.
Weiß jemand Rat ???????

Grüße
Bernd
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 22.01.09 14:30 
Wird wohl ein alt bekannter Fehler in der Hostanwendung sein, die meint mit CurrentDirectory das eigene Verzeichnis ermitteln zu können. Das stimmt aber nicht, da CurrentDirectory das aktuelle Arbveistverzeichnis ist und das muss nicht zwingend das Programmverzeichnis sein. Das gilt natürlich genauso für die DLL.
bmontag Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 22.01.09 17:22 
Hallo Michael,

danke für die Antwort.

Treffe am Montag den Programmierer der Hostanwendung. Ich habe schon vor einigen Tagen die Möglichkeit des von Dir beschriebenen Fehlers abgeklopft. Er hat die Möglichkeit ausgeschlossen. Werde ich aber sehen.

Grüße

Bernd
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 22.01.09 18:10 
user profile iconbmontag hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe schon vor einigen Tagen die Möglichkeit des von Dir beschriebenen Fehlers abgeklopft.

Wie vor einigen Tagen? Ich habe doch heute erst gepostet? :shock:
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Fr 23.01.09 10:42 
Ich glaube du sitzt in einer Zeitanomalie. Da hat Scotty beim Beamen wohl Mist gebaut, Luckie...
(Ich sollte aufhören alte StarTrek Folgen anzusehen bis spät in die Nacht)

_________________
In the beginning was the word.
And the word was content-type: text/plain.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 23.01.09 11:58 
user profile iconbmontag hat folgendes geschrieben Zum zitierten Posting springen:
Das ist aber ein Problem für die Hostanwendung.
Jetzt meine eigentlich banale Frage: was passiert eigentlich genau, wenn die Hostanwendung meine dll lädt ?? Die Umstellung der CurrentDirectory passiert unmittelbar beim Laden der dll.
Was passiert denn? Also ich meine, woher weißt du, dass das Arbeitsverzeichnis "falsch" ist?
Normalerweise wäre der Wechsel des Arbeitsverzeichnisses ja kein Problem, schließlich passiert das ja auch an vielen anderen Stellen. (z.B. beim Aufruf von Dateidialogen in Standardeinstellung, etc.)

user profile iconbmontag hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe dann noch versucht, die CuurretDirectoy in meiner Anwendung umzustellen, aber das müsste ich andauernd machen.
SetCurrentDirectory setzt ja nur das der eigenen Anwendung, ich wusste gar nicht, dass es eine solche Methode auch für fremde Anwendungen gibt. Wie hast du das denn versucht?

user profile iconbmontag hat folgendes geschrieben Zum zitierten Posting springen:
Irgendwie stellt meine dll scheinbar immer die CurrentDirectory um und ich weiss nicht warum.
Naja, nur davon, dass die DLL eingebunden ist, passiert das ja nicht. Allerdings gibt es eben Aufrufe, wie z.B. die eines Öffnen- / Schließendialogs, die das Verzeichnis ändern können.