Zitat:
Mir ist übrigens aufgefallen, dass es nur funktioniert, wenn die entsprechende Datei im gleichen Verzeichniss liegt. Sonst beendet sich das Programm. Das kann ebenfalls nur an der Registry liegen.
Also das es nur geht, wenn Datei und Zielprogramm im selben Verzeicnis sind, daß kann eigentlich nicht an der Registry liegen, denn der Explorer ließt dort immer den gleichen Wert aus und übergibt alles auf die selbe Art, egal wo sich Programm und Datei befinden.
Du kannst es ja mal ganz einfach testen.
Erstmal versuchen das Programm per [win] > Ausführen, oder über 'ne BatchFile aufrufen (dort kannst du ja beliebig angeben wo sich was befinden soll.
Und dann nimm z.B. dieses Progrämmchen, benenne es so wie deine EXE und stell es an deren Stelle.
Delphi-Quellcode:
Program Project2;
{$APPTYPE CONSOLE}
Var F: File;
Begin
WriteLn('Datei: "' + ParamStr(1) + '"');
WriteLn;
AssignFile(F, ParamStr(1));
FileMode := $0040{fmOpenRead or fmShareDenyNone};
{$I-}
Reset(F);
{$I+}
If IOResult = 0 Then WriteLn('Datei erfolgreich ge”ffnet')
Else WriteLn('Zugriffsfehler');
CloseFile(F);
WriteLn;
WriteLn('Beenden mit ENTER');
ReadLn;
End.
Wenn dieses den richtigen Dateinamen incl. Verzeichnis und eine Erfolgreichmeldung anzeigt, dann gibt's mit
ANSI keine Probleme.
Ich vermute mal nicht, daß du nicht mit
Unicode arbeitest, also sollte dieses ausreichend sein.
Die " sind auch richtig gesetzt?
Zur Sicherheit müssen ja alle Pfade/Dateien darin eingeschlossen sein.
Umgebungsvariablen (sowas wie %WinDir%) hast du nicht verwendet?
Weil dann wäre REG_SZ falsch.