![]() |
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.
|
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:
Es wird dann Done in der listbox angezeigt. Ich öffne mal ne Datei nach der Batch...
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; ... bekomme Probleme:
Delphi-Quellcode:
Statt dem OpenDialog über einen seperaten Button sollen die Zeilen oben nach der Beendigung der Batch gestartet werden.
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; Hab aber leider Stringvariable drin. Kann man String und Cardinal in einer Variablenzeile mischen? |
Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
Was ist eine Variablenzeile?
|
Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
Egal... ich kann
Delphi-Quellcode:
Schreiben ... das meinte ich.
procedure TForm12.Button7Click(Sender: TObject);
var ProcID: Cardinal; var a,b,c :real; Wie öffne ich den nun die Datei ohne OpenDialog? Hier nochmal wie die Datei beschaffen ist:
Delphi-Quellcode:
was dann eine Datei wie: Encode540070008000prediction.mpg.m2v gibt.
form1.Edit2.text:=OpenDialog2.FileName + form7.edit4.text + form7.edit1.text + form7.edit2.text + 'prediction.mpg';
Oder muss auch diese Datei einen fixen Namen haben? |
Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
Hi!
Das kann an sich so nicht sein:
Delphi-Quellcode:
Müsste das nicht so sein:
procedure TForm12.Button7Click(Sender: TObject);
var ProcID: Cardinal; var a,b,c :real; //<--- Hier!!
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 |
Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
Delphi-Quellcode:
So sollte es ungefähr aussehen. Sprich die MPEG-datei soll ohne 'User-Aufruf' gestartet werden...
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;
Delphi-Quellcode:
... gibt ne Fehlermeldung. 'Sample in B' sollte kein valid Floating point value sein...
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; 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:
... auch falsch... :wall: Muss doch irgendwie ohne OpenDialog zu öffnen sein... :gruebel:
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;
Delphi-Quellcode:
Hmm... irgendwie so... Will aber die M2V-Datei nicht mit dem Mediaplayer starten sondern nur die Dateigröße vergleichen.
ShellExecute(Handle,'open', 'http://delphi.about.com',nil,nil, SW_SHOWNORMAL);
Eigentlich brauch ich ja nur den Pfad von der Datei für GET_FILE_SIZE :cyclops:
Delphi-Quellcode:
Hmm... Wie anwenden... Bringts überhaupt was? :gruebel:
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'); |
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; |
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. |
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