![]() |
Problem bei Paramterübergabe an ein Dos Programm
Hi Leute,
ich habe versucht ein Dos-Programm mittels Parameter anzusprechen. Der Parameter ist so: ucc.exe decompress Pfad.uz2 (ohne Strich vor "decompress" ist Richtig.) das Problem ist, das es in der Dos-Konsole ohne Probleme funktioniert, nutzt man allerdings eine Verknüpfung, einen Delphiaufruf, sieht man das Fenster kurz aufblinken, kann den Fehler nicht erkennen - dann schließt sich das Fenster wieder. Ich habe jetzt rausgefunden, das man die Kompatibilität auf Windows XP auf 95/98 oder ME einstellen muss. Dann funktioniert es. Aber wie geht das mit Delphi :?: vielen Dank im Vorraus Tobias |
Re: Problem bei Paramterübergabe an ein Dos Programm
Die kompatiblität kannst du doch nur in einer verknüpfung auf die datei festlegen, oder? jetzt schreibst du die dateiparameter einfach auch noch in diese verknüpfung, und rufst dann diese verknüpfung per shellexecute auf (verknüpfungen haben immer die endung .lnk, auch wenn man es auch nie zu gesicht kriegt ;-) )
|
Re: Problem bei Paramterübergabe an ein Dos Programm
Hi c113plpbr,
meinst du, ich soll eine exe-Datei und eine ink-Datei ausliefern wo dann die Parameter angepasst werden sollen? PS: Die ucc.exe ist nicht immer auf dem gleichen Platz. gibt es nicht vielleicht eine leichtere Methode? Woran kann es liegen, dass es unter cmd.exe (Dosfenster) ohne Probleme läuft, aber nicht mit Delphi und Parametern? Unter "Ausführen" verhält es sich genau so. vielen Dank im Vorraus Tobias |
Re: Problem bei Paramterübergabe an ein Dos Programm
wie führst du denn das Dos-Programm aus?
vielleicht liegt ja darin ein Fehler poste mal bitte die Code-Zeile wo du das Programm aufrufst... |
Re: Problem bei Paramterübergabe an ein Dos Programm
Wenn ucc der unreal compiler ist, dann sollte er aber auch ohne kompatiblitätsmodus ausgeführt werden können ...
vielleicht funktioniert es nicht, weil du nicht den genauen pfad angibst, und dieser evtl. leerzeichen enthält, daher sollte man den pfad immer in "pfad" Anführungszeichen schreiben. Probier das mal, und ansonsten kannste ja ne batchdatei schreiben ... Das Konsolenfenster wird sich eigentlich immer schliessen, wenn das programm nicht im rahmen eines anderen konsolenfensters ausgeführt wird, abhilfe schafft da ne batch datei. |
Re: Problem bei Paramterübergabe an ein Dos Programm
@ The-X:
ich habe es so versucht:
Delphi-Quellcode:
@ c113plpbr:
ShellExecute(Application.Handle, 'open', PChar(LabelPfad.Caption + 'System\UCC.exe'), 'decompress D:\AnnouncerAssault.est_uax.uz2', nil, sw_Minimize);
genau, es ist er unreal compiler :-D , aber ich meine es versucht zu haben, es hat aber nicht funktioniert, werde es aber zur Sicherheit nochmal testen mfg Tobias |
Re: Problem bei Paramterübergabe an ein Dos Programm
Zitat:
|
Re: Problem bei Paramterübergabe an ein Dos Programm
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Leute,
ich habe mal ein "Test" Programm für das ucc.exe Programm zu schreiben. Das Ergebniss ist, dass das "Problem" die Leerstellen im Pfad sind. Sowohl in der Batch Datei, als auch wenn man es per ShellExecute aufruft. @The-X: ich kann es mal versuchen, aber da es im die Leerstellen geht dürfte es nicht klappen, oder? vielen Dank für eure Hilfe Tobias PS: Wie kann man das lösen? Ich weiss nur, dass man Pfade mit > als 8 Zeichen auf die 6 ersten Zeichen kürzt und '~1' anhängt. Kann mir jemand etwas dazu schreiben? PPS: Den Pfad mit so auf zu rufen: "Pfad..." habe ich bei der Batch versucht. Hat aber nicht funktioniert. |
Re: Problem bei Paramterübergabe an ein Dos Programm
Zitat:
und was den 8.3 Dateinamen angeht gibt es dazu auch eine Funktion
Delphi-Quellcode:
Siehe OH, Unit SysUtils
function ExtractShortPathName(Const FileName:string):String;
|
Re: Problem bei Paramterübergabe an ein Dos Programm
@The-X:
endlich, mit dem 8.3 Dateinamen funktioniert die Batchdatei. bei der Shell funktion behauptet er, er braucht Dateien mit einer uz2 Endung:
Delphi-Quellcode:
Könnt ihr mir sagen wieso?
procedure TForm1.Button6Click(Sender: TObject);
var Datei, Pfad, Parameter : String; begin Datei := ExtractFileName(PChar(Label4.Caption)); Pfad := ExtractShortPathName(ExtractFilePath(PChar(Label4.Caption))); Parameter := PChar(' decompress ' + Label1.Caption + ' '+ ExtractFilePath(Label1.Caption)); PChar(Pfad), sw_Maximize); ShellExecute(Application.Handle, 'open', 'E:\Spiele\UT 2004\System\ucc.exe', 'decompress D:\itt.uz2', 'E:\Spiele\UT 2004\System\', sw_Maximize); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 Uhr. |
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-2025 by Thomas Breitkreuz