Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Delphi CreateProces findet eine Programmbibliothek nicht (https://www.delphipraxis.net/150516-createproces-findet-eine-programmbibliothek-nicht.html)

Turbo78 19. Apr 2010 22:52

Re: CreateProces findet eine Programmbibliothek nicht
 
Zitat:

Zitat von SirThornberry
1) Ist das nun ein Delphiproblem oder ein allgemeines? Also tritt der Fehler nur beim Aufruf von CreateProcess auf oder auch wenn du das Programm per Doppeklick öffnest?

2) Existieren die bemängelten Dateien auf dem Rechner?

Das Problem tritt nur beim Aufruf von AutoCAD über CreateProces in Delphi auf - ein direkter Aufruf läuft problemlos.

Die bemängelte Datei existiert auf beiden Rechnern. Durch das DependencyWalker habe ich festgestellt, dass eine untergeordnete Bibliothek auf dem PC nicht vorhanden war. Das Kopieren dieser Datei auf den PC hat leider Nichts gebracht.

SirThornberry 19. Apr 2010 23:22

Re: CreateProces findet eine Programmbibliothek nicht
 
Wenn das so ist hast du vermutlich beim CreateProcess nicht das WorkingDirectory angegeben. Und in der Verknüpfung über die du das Programm sonst startest steht sicher das richtige Arbeitsverzeichnis drin.

Turbo78 19. Apr 2010 23:51

Re: CreateProces findet eine Programmbibliothek nicht
 
Zitat:

Zitat von SirThornberry
Wenn das so ist hast du vermutlich beim CreateProcess nicht das WorkingDirectory angegeben. Und in der Verknüpfung über die du das Programm sonst startest steht sicher das richtige Arbeitsverzeichnis drin.

Sowohl Delphi als auch AutoCAD sind an beiden Rechnern in denselben Verzeichnis installiert.
Die Command Line ist identisch:

'C:\Programme\...\acad.exe D:\Data\...\Zeichnung.dxf'

Diese Comand Line wird im cmd-Window (als DOS-command) fehlerfrei ausgeführt.

SirThornberry 20. Apr 2010 08:52

Re: CreateProces findet eine Programmbibliothek nicht
 
Hast du denn schon probiert bei CreateProcess das korrekte Arbeitsverzeichnis anzugeben?

Turbo78 20. Apr 2010 09:54

Re: CreateProces findet eine Programmbibliothek nicht
 
Zitat:

Zitat von SirThornberry
Hast du denn schon probiert bei CreateProcess das korrekte Arbeitsverzeichnis anzugeben?

Delphi-Quellcode:
      Ret := CreateProcess(nil,
                           PCmd,
                           nil, nil, false,
                           NORMAL_PRIORITY_CLASS,
                           nil, nil,
                           StartupInfo,
                           Processinfo);
PCmd ist die oben genannte Kommandozeile.

Soll ich als Arbeitsverzeichnis das Programmverzeichnis oder das Verzeichnis mit den Daten angeben?
Welches Parameter ist dies?

Was ich nicht geschrieben habe, CreateProcess liefert beim o.g. Fehler kein Error Code (also, Ret ist True).

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

SirThornberry 20. Apr 2010 10:01

Re: CreateProces findet eine Programmbibliothek nicht
 
Hier kannst du es nachlesen:
http://msdn.microsoft.com/en-us/libr...25(VS.85).aspx

Der Parameter welcher angegeben werden sollte lautet: lpCurrentDirectory

Turbo78 20. Apr 2010 10:24

Re: CreateProces findet eine Programmbibliothek nicht
 
Zitat:

Zitat von SirThornberry
Hier kannst du es nachlesen:
http://msdn.microsoft.com/en-us/libr...25(VS.85).aspx

Der Parameter welcher angegeben werden sollte lautet: lpCurrentDirectory

Danke, aber die Fehlermeldung bleibt unabhängig davon was für ein CurrentDirectory ich angegeben habe.

Dezipaitor 20. Apr 2010 10:30

Re: CreateProces findet eine Programmbibliothek nicht
 
Du musst den Parameter lpEnvironment initialisieren.

SirThornberry 20. Apr 2010 10:33

Re: CreateProces findet eine Programmbibliothek nicht
 
Welchen Wert hast du denn für das CurrentDirectory angegeben? Das gleiche wie in der Verknüpfung über die du normalerweise das Programm startest?

@Dezipaitor: Muss man das angeben?
Laut MSDN:
Zitat:

A pointer to the environment block for the new process. If this parameter is NULL, the new process uses the environment of the calling process.

Turbo78 20. Apr 2010 10:53

Re: CreateProces findet eine Programmbibliothek nicht
 
Zitat:

Zitat von SirThornberry
Welchen Wert hast du denn für das CurrentDirectory angegeben? Das gleiche wie in der Verknüpfung über die du normalerweise das Programm startest?

@Dezipaitor: Muss man das angeben?
Laut MSDN:
Zitat:

A pointer to the environment block for the new process. If this parameter is NULL, the new process uses the environment of the calling process.

Ich habe die Lösung gefunden (sie ist nicht sauber, da ich ein Verzeichniss direkt angegeben habe), obwohl mir nicht klar ist warum es auf dem Laptop ohne diese Änderung funktioniert. Also, als CurrentDir habe ich nicht das Programmverzeichnis sondern das Verzeichnis in welchem sich die gemeldete dll befindet angegeben:

C:\Programme\Gemeinsame Dateien\Autodesk Shared\

Das Problem liegt offensichtlich darin, dass beim Programmaufruf über CreateProces der Pfad mit den Bibliotheken nicht bekannt ist.

Kann es sein, dass das CreateProcess die PATH Variable nicht benutzt? Dies wäre die einzige Erklärung, da ich das Programm direkt problemlos aufrufen kann.
Es bleibt aber unerklärbar warum es am Laptop funktioniert.

Also, warum CreateProcess den "shared" Pfad (Gemeinsame Dateien) am Laptop durchsucht und am PC nicht?

Darf man als CurrentDirectory die PATH Variable angeben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz