Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Nach Batchencode Datei OHNE OpenDialog öffnen - Wie? (https://www.delphipraxis.net/17077-nach-batchencode-datei-ohne-opendialog-oeffnen-wie.html)

Luckie 28. Feb 2004 18:23

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
Kuck dir mal den dritten parameter von RunProcess an, der legt fest, ob es erst nach Beendigung des externen Programmes weitergeht oder nicht.

DRPEnc 28. Feb 2004 18:27

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
RunProcess('C:\DRPEncPrediction.bat', SW_SHOW, FALSE, @ProcID);

Du meist sicher FALSE oder? Gibts irgendwo ne Documentation für RunProcess oder könntest Du mir die Parameter von RunProcess erklären? (Sorry, wenn die Frage noobiehaft ist...)

[Edit] müsste doch TRUE statt FALSE rein, damit der Code wartet oder?

Lag richtig:

Delphi-Quellcode:
procedure TForm12.Button7Click(Sender: TObject);
var
  ProcID: Cardinal;
begin
  ProcID := 0;
  //if OpenDialog1.Execute then
    RunProcess('C:\DRPEncPrediction.bat', SW_SHOW, TRUE, @ProcID);
  //ShowMessage(IntToStr(ProcID));
listbox1.Items.add('Done');
end;
Es wird dann Done in der listbox angezeigt. Ich öffne mal ne Datei nach der Batch...

... bekomme Probleme:

Delphi-Quellcode:
If Not OpenDialog3.Execute Then Exit;
Edit8.Text:=GET_FILE_SIZE(Opendialog3.filename,true);
a:= StrToFloat(Edit8.text);
b:=(a / 1024) /1024;
c:= StrToFloat(Edit9.text);
listbox1.Items.add('This Pass has the filesize of ' +FloatToStr(b)+ ' MB');
if FloatToStr(b) < FloatToStr(c) then listbox1.Items.add('Higher the bitrate');
if FloatToStr(b) > FloatToStr(c) then listbox1.Items.add('Lower the bitrate');
end;
Statt dem OpenDialog über einen seperaten Button sollen die Zeilen oben nach der Beendigung der Batch gestartet werden.
Hab aber leider Stringvariable drin. Kann man String und Cardinal in einer Variablenzeile mischen?

Luckie 28. Feb 2004 18:41

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
Was ist eine Variablenzeile?

DRPEnc 28. Feb 2004 18:45

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
Egal... ich kann

Delphi-Quellcode:
procedure TForm12.Button7Click(Sender: TObject);
var ProcID: Cardinal;
  var a,b,c :real;
Schreiben ... das meinte ich.

Wie öffne ich den nun die Datei ohne OpenDialog?

Hier nochmal wie die Datei beschaffen ist:

Delphi-Quellcode:
form1.Edit2.text:=OpenDialog2.FileName + form7.edit4.text + form7.edit1.text + form7.edit2.text + 'prediction.mpg';
was dann eine Datei wie: Encode540070008000prediction.mpg.m2v gibt.

Oder muss auch diese Datei einen fixen Namen haben?

fkerber 28. Feb 2004 18:51

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
Hi!

Das kann an sich so nicht sein:

Delphi-Quellcode:
procedure TForm12.Button7Click(Sender: TObject);
var ProcID: Cardinal;
  var a,b,c :real; //<--- Hier!!
Müsste das nicht so sein:

Delphi-Quellcode:
procedure TForm12.Button7Click(Sender: TObject);
var ProcID: Cardinal;
    a,b,c :real;

Ciao fkerber

EDIT:
Achja, wegen dem OpenDialog:
Du verwendest ja eine Nutzer-"Eingabe" (nämlich den Filename).
Wie willst du das umgehen?

Ciao fkerber

DRPEnc 28. Feb 2004 19:02

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
Delphi-Quellcode:
procedure TForm12.Button7Click(Sender: TObject);
var ProcID: Cardinal;
    a,b,c :real;
begin
  ProcID := 0;
  //if OpenDialog1.Execute then
    RunProcess('C:\DRPEncPrediction.bat', SW_SHOW, TRUE, @ProcID);
  //ShowMessage(IntToStr(ProcID));
listbox1.Items.add('Done');
//OpenFile('Hier irgendwie die MPEG-Datei öffnen...');
Edit8.Text:=GET_FILE_SIZE('Name der geöffneten Datei',true);
a:= StrToFloat(Edit8.text);
b:=(a / 1024) /1024;
c:= StrToFloat(Edit9.text);
listbox1.Items.add('This Pass has the filesize of ' +FloatToStr(b)+ ' MB');
if FloatToStr(b) < FloatToStr(c) then listbox1.Items.add('Higher the bitrate');
if FloatToStr(b) > FloatToStr(c) then listbox1.Items.add('Lower the bitrate');
end;
So sollte es ungefähr aussehen. Sprich die MPEG-datei soll ohne 'User-Aufruf' gestartet werden...

Delphi-Quellcode:
procedure TForm12.Button7Click(Sender: TObject);
var ProcID: Cardinal;
  var a,b,c :real;
begin
  ProcID := 0;
  //if OpenDialog1.Execute then
    RunProcess('C:\DRPEncPrediction.bat', SW_SHOW, TRUE, @ProcID);
  //ShowMessage(IntToStr(ProcID));
listbox1.Items.add('Done');
//OpenFile('C:\DRPEncPrediction.bat');
Edit8.Text:=GET_FILE_SIZE('C:\cococ102.m2v',true);
a:= StrToFloat(Edit8.text);
b:=(a / 1024) /1024;
c:= StrToFloat(Edit9.text);
listbox1.Items.add('This Pass has the filesize of ' +FloatToStr(b)+ ' MB');
if FloatToStr(b) < FloatToStr(c) then listbox1.Items.add('Higher the bitrate');
if FloatToStr(b) > FloatToStr(c) then listbox1.Items.add('Lower the bitrate');
end;
... gibt ne Fehlermeldung. 'Sample in B' sollte kein valid Floating point value sein...

Sample in B steht in der Edit 8, ergo wird mit Edit8.Text:=GET_FILE_SIZE('C:\cococ102.m2v',true); nicht die Datei geöffnet... wie dann?

Delphi-Quellcode:
procedure TForm12.Button7Click(Sender: TObject);
var ProcID: Cardinal;
    a,b,c :real;
    wndFile: Integer;
begin
  ProcID := 0;

RunProcess('C:\DRPEncPrediction.bat', SW_SHOW, TRUE, @ProcID);

listbox1.Items.add('Done');
wndFile := OpenFile('C:\cococ102.m2v');
//OpenFile('C:\cococ102.m2v');
Edit8.Text:=GET_FILE_SIZE(wndFile,true);
a:= StrToFloat(Edit8.text);
b:=(a / 1024) /1024;
c:= StrToFloat(Edit9.text);
listbox1.Items.add('This Pass has the filesize of ' +FloatToStr(b)+ ' MB');
if FloatToStr(b) < FloatToStr(c) then listbox1.Items.add('Higher the bitrate');
if FloatToStr(b) > FloatToStr(c) then listbox1.Items.add('Lower the bitrate');
end;
... auch falsch... :wall: Muss doch irgendwie ohne OpenDialog zu öffnen sein... :gruebel:

Delphi-Quellcode:
ShellExecute(Handle,'open', 'http://delphi.about.com',nil,nil, SW_SHOWNORMAL);
Hmm... irgendwie so... Will aber die M2V-Datei nicht mit dem Mediaplayer starten sondern nur die Dateigröße vergleichen.

Eigentlich brauch ich ja nur den Pfad von der Datei für GET_FILE_SIZE :cyclops:

Delphi-Quellcode:
var pfad, name, ext, neuerName: string;
...
  pfad := ExtractFilePath(Application.ExeName); // der Pfad
  name := ExtractFileName(Application.ExeName); // der Name
  ext := ExtractFileExt(Application.ExeName); // die Dateierweiterung

  // Um im String die Dateierweiterung zu ändern, benutzt man folgende Funktion:
  neuerName := ChangeFileExt(Application.ExeName, '.tmp');
Hmm... Wie anwenden... Bringts überhaupt was? :gruebel:

DRPEnc 28. Feb 2004 21:04

Re: Nach Batchencode Datei OHNE OpenDialog öffnen - Wie?
 
Ich denk mal ich bin wieder zu unübersichtlich...

K, Das mit der Batchdatei hat sich erledigt.

Die Batch wird gestartet, beendet sich selber und der Code wird weiter ausgeführt.

Da das Ganze dann voll automatisch ablaufen soll, soll eine MPEG-Datei (M2V) geöffnet werden,
ohne das der User den Pfad angeben muss oder per OpenDialog bestimmen muss.
Nach dem Zahlen in ein paar Edits geändert wurden soll die Batchdatei mit den geändertem Inhalt
auch ohne Zutun des Users gestarten werden.

Ich häng jetzt an dem Punkt fest, wie ich die M2V-Datei OHNE OpenDialog öffnen soll. Sie soll aber nicht
mit dem MediaPlayer abgespielt werden, sondern an den GET_FILE_SIZE Befehl weitergeleitet werden!

Irgend eine Idee?

Delphi-Quellcode:
procedure TForm12.Button7Click(Sender: TObject);
var ProcID: Cardinal;
    a,b,c :real;
begin
  ProcID := 0;
  //if OpenDialog1.Execute then
    RunProcess('C:\DRPEncPrediction.bat', SW_SHOW, TRUE, @ProcID);
  //ShowMessage(IntToStr(ProcID));
listbox1.Items.add('Done');
//OpenFile('Hier irgendwie die MPEG-Datei öffnen...');
Edit8.Text:=GET_FILE_SIZE('Name der geöffneten Datei',true);
a:= StrToFloat(Edit8.text);
b:=(a / 1024) /1024;
c:= StrToFloat(Edit9.text);
listbox1.Items.add('This Pass has the filesize of ' +FloatToStr(b)+ ' MB');
if FloatToStr(b) < FloatToStr(c) then listbox1.Items.add('Higher the bitrate');
if FloatToStr(b) > FloatToStr(c) then listbox1.Items.add('Lower the bitrate');
end;

DRPEnc 28. Feb 2004 23:53

Re: Nach Batchencode Datei OHNE OpenDialog öffnen - Wie?
 
Problem hab ich selbst mit SaveDialog gelöst. Danke nochmal für die Tips von dir Luckie und Co. :zwinker:


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

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