Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem bei Paramterübergabe an ein Dos Programm (https://www.delphipraxis.net/23895-problem-bei-paramteruebergabe-ein-dos-programm.html)

Norbert987 11. Jun 2004 16:21


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

c113plpbr 11. Jun 2004 19:20

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 ;-) )

Norbert987 12. Jun 2004 10:30

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

The-X 12. Jun 2004 11:29

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...

c113plpbr 12. Jun 2004 11:53

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.

Norbert987 13. Jun 2004 18:57

Re: Problem bei Paramterübergabe an ein Dos Programm
 
@ The-X:

ich habe es so versucht:
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', PChar(LabelPfad.Caption + 'System\UCC.exe'), 'decompress D:\AnnouncerAssault.est_uax.uz2', nil, sw_Minimize);
@ c113plpbr:

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

The-X 25. Jun 2004 14:02

Re: Problem bei Paramterübergabe an ein Dos Programm
 
Zitat:

Zitat von Norbert987
@ The-X:

ich habe es so versucht:
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', PChar(LabelPfad.Caption + 'System\UCC.exe'), 'decompress D:\AnnouncerAssault.est_uax.uz2', PChar(LabelPfad.Caption + 'System\') , sw_Minimize);

auch schonmal versucht das Ausführungsverzeichnis mit anzugeben? vielleicht benötigt der Unreal-Kompiler ja Dateien die in "seinem" Verzeichnis liegen... wo er aber nicht drankommt, da er "schlecht" programmiert ist und den Dateipfad nicht aus seinem eigenen Pfad erstellt sondern das Akutelle als das seinige vorraussetzt... :)

Norbert987 25. Jun 2004 16:11

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.

The-X 25. Jun 2004 17:00

Re: Problem bei Paramterübergabe an ein Dos Programm
 
Zitat:

Zitat von Norbert987
ich kann es mal versuchen, aber da es im die Leerstellen geht dürfte es nicht klappen, oder?

Im Normalfall kannst du den kompletten Pfad in "" einschließen

und was den 8.3 Dateinamen angeht gibt es dazu auch eine Funktion
Delphi-Quellcode:
function ExtractShortPathName(Const FileName:string):String;
Siehe OH, Unit SysUtils

Norbert987 28. Jun 2004 18:57

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:
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;
Könnt ihr mir sagen wieso?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.
Seite 1 von 2  1 2      

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