Delphi-PRAXiS

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)

DRPEnc 27. Feb 2004 20:52


Nach Batchencode Datei OHNE OpenDialog öffnen - Wie?
 
[Edit] Das mit dem OpenAndWait wurde schon gelöst. Mein neues Problem ist eine Datei zu öffnen aber OHNE OpenDialog. Bitte springt gleich zum ersten Post auf der Zweiten Page von diesem Thread. THX

################################################## ###############################



Ich code gerade an meinem Project DRPEnc.

Nun bin ich wieder bei einem Punkt angekommen, wo ich nicht weiter weis.

Hier das Problem:

Ich starte aus dem Program eine Batch-datei welche einen Teil des Films encodiert.
Nach dem sich die Batch beendet hat (was das Program mitbekommen sollte) soll die größe
der encodierten Datei in einer Listbox angezeigt werden. Falls dieser Wert von dem
zuvor festgelegten Zielwert abweicht verändert DRPEnc ein paar Werte in der Batch-datei und startet diese erneut.
Dies wiederholt sich solange bis der Wert gefunden wurde.

Wie bekomme ich das am Besten hin.

das Auslesen der Dateigröße mache ich mit dieser Funktion:

Delphi-Quellcode:
function GetFileSize(Filename: string): integer;
var
  SR: TSearchRec;
begin
  if FindFirst(Filename, faAnyFile, SR) = 0 then
  begin
    Result := SR.Size;
  end
  else
  begin
    Result := -1;
    end;
  FindClose(SR);
end;
Leider bekomm ich da noch ne Fehlermeldung wenn ichs so aufrufen will:

Delphi-Quellcode:
procedure TForm12.Button8Click(Sender: TObject);
begin
If Not OpenDialog3.Execute Then Exit;
listbox1.Items.add('Die Datei' + OpenDialog3.filename + 'hat ' + (GetFileSize(OpenDialog3.filename) / 1024) + 'kb');
end;
Incompatible types. String and Extended.

Aber wie bekomm ich mein Programn nach Beendigung der Batch-Datei die encodierte Datei zu öffnen und dann die filesize auszulesen?

Ich möchte es am liebsten irgendwie mit if ... then lösen.

Die Batch rufe ich mit:

Delphi-Quellcode:
ShellExecute(0, Nil, PChar('C:\DRPEncPrediction.bat'), Nil, Nil, SW_NORMAL);
auf welche sich nach erfolgreichem Encodieren selber schließt. Könnte dies aber wenn benötigt ändern.

Die encodierte Datei hat dann auch nen festen Namen. Somit auch leicht zu öffnen.

hab das gefunden: ShellExecuteEX komm aber damit nicht weiter...:wiejetzt:

Könnte ich ein Beispiel von Euch haben?

DRPEnc 28. Feb 2004 01:30

Re: ShellExecuteEx wie ausführen
 
Das mit der filesize hab ich so gelöst:

Delphi-Quellcode:
function GET_FILE_SIZE(sFileToExamine:string;bInKBytes:boolean):string;
{for some reason both methods of finding file size return
a filesize that is slightly larger than what Windows File
Explorer reports}
var
FileHandle : THandle;
FileSize : LongWord;
d1 : double;
i1 : int64;
begin
//a- Get file size
FileHandle := CreateFile(
PCHAR(sFileToExamine),
GENERIC_READ,
0, {exclusive}
nil, {security}
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
FileSize := GetFileSize(FileHandle,nil);
result := INTTOSTR(FileSize);
CloseHandle(FileHandle);
//a- optionally report back in Kbytes
//if bInKbytes = true then
//begin
//if length(result)> 3 then
//begin
//Insert('.',result,length(result)-2);
//d1 := strtofloat(result);
//result := inttostr(round(d1))+'KB';
//end
//else
//result := '1KB';
end;
{********************************************
Hier eine andere funktionierende Methode:
*********************************************
var
SearchRec: TSearchRec;
sgPath : String;
inRetval, I1 : Integer;
begin
sgPath := ExpandFileName(sFileToExamine);
Try
inRetval := FindFirst(ExpandFileName(sFileToExamine), faAnyFile, SearchRec);
If inRetval = 0 Then
I1 := SearchRec.Size
Else I1 := -1;
Finally
SysUtils.FindClose(SearchRec);
End;
result := Inttostr(I1);
end; }
//end;
Und anzeigen mit:

Delphi-Quellcode:
procedure TForm12.Button8Click(Sender: TObject);
var a,b :real;

begin
If Not OpenDialog3.Execute Then Exit;
Edit8.Text:=GET_FILE_SIZE(Opendialog3.filename,true);
a:= StrToFloat(Edit8.text);
b:=(a / 1024) /1024;
listbox1.Items.add('This Pass has the filesize of ' +FloatToStr(b)+ ' MB');

end;
Nun muss ich das Ganze automatisieren...

DRPEnc 28. Feb 2004 01:46

Re: ShellExecuteEx wie ausführen
 
Delphi-Quellcode:
procedure TForm12.Button8Click(Sender: TObject);
var a,b,c :real;
begin
//ShellExecute(0, Nil, PChar('C:\DRPEncPrediction.bat'), Nil, Nil, SW_NORMAL);
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;
Nun kann ich die Dateigrößen vergleichen. :firejump:
Wie kann ich diese Informationen nach einem Batchaufruf anzeigen lassen?

Der Name der Datei steht in einer Edit:

Delphi-Quellcode:
form1.Edit2.text:=OpenDialog2.FileName + form7.edit4.text + form7.edit1.text + form7.edit2.text + 'prediction.mpg';
welcher dann zum Beispiel dann so gespeichert wurde: Encode540070008000prediction.mpg.
Da ich die Datei demuxed hatte lautet dann die zu öffnende Datei: Encode540070008000prediction.mpg.m2v

Der OpenDialog2.filename ist ja somit fix. Die Variablen varieren ja zu jedem encode, was auch sinn macht.

HMM :gruebel: Sollte ich den form1.Edit2.text in ne listbox schreiben? Kann ich damit dann was anfangen?
... ne, ne Variable. Kann man :real und :string zusammen in eine Zeile schreiben?
Denn ich will mal folgendes schaffen:


Delphi-Quellcode:
procedure TForm12.Button8Click(Sender: TObject);
var a,b,c :real;
begin
ShellExecute(0, Nil, PChar('C:\DRPEncPrediction.bat'), Nil, Nil, SW_NORMAL);
//Folgendes soll nach Beendigung von der Batch passieren welche sich selber schließt:
Edit8.Text:=GET_FILE_SIZE('Name der Encodierten Datei' + '.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 form8.Edit4.text:=('Wert von form8.Edit4' + 1000) und Batch starten;
//Statt 1000 währen auch 40% OK...
//if FloatToStr(b) > FloatToStr(c) then listbox1.Items.add('Lower the bitrate');
if FloatToStr(b) > FloatToStr(c) then 'Letzte Werte < FloatToStr(c)' wiederherstellen und Meldung ausgeben;
end;

Luckie 28. Feb 2004 02:39

Re: ShellExecuteEx wie ausführen
 
Bei so viel Text und Sourcecode habe ich jetzt irgendwie den Überblick verloren, was du willst bzw. wo dein Problem liegt. :gruebel: Könntest du das noch mal auf den Punkt bringen?

DRPEnc 28. Feb 2004 02:47

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
Hi Luckie! Jo kann ich und danke das Du da bist!

K Ich lass eine Batch laufen. Beendet sich von selbst. Wenn dies passiert ist soll DRPEnc (das Programm worums hier geht) die Datei, die von der Batch erstellt wurde (eine M2V-Videodatei) selbstständig öffnen und die filesize ermitteln.

Ist dieser Wert kleiner als der gewollte (wurde vorher festgelegt) soll DRPEnc die Werte der Bitraten (Werden in Edits gespeichert) verändern und die Batch mit den neuen Werten starten.

Es ensteht eine weitere M2V-Videodatei. Diese wird wieder gecheckt. Wiederholung bis der Wert größer als der gewollte Wert ist.

Dann sollen die letzen Werte des letzten Encodes, welcher kleiner war als der gewollte Wert hergenommen werden und dem User angezeigt werden.

Zum Beispiel: Der Pass hat die Dateigröße von 73.35 MB. Gewollte Samplergröße war 74,10 MB. Benutze min.Bit: 5400, avg.Bit 7000, max.Bit 8000.

Einfacher kann ichs Dir leider nicht erklären... :shock:

Luckie 28. Feb 2004 03:03

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
Schön, jetzt hast du mir erklärt, was dein programm machen soll. Aber wo ist jetzt das Problem? Dioe Logik kann es ja nicht sein, die hast du ja gerade eben beschrieben.

DRPEnc 28. Feb 2004 09:28

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
OK hier nochmal im Detail: Ich drücke auf den Knopf:

Delphi-Quellcode:
procedure TForm12.Button8Click(Sender: TObject);
var a,b,c :real;
begin
Nun soll die Batchdatei gestartet werden, wobei Ich nicht weis wie der ShellExecuteandWait Befehl funktioniert.

Delphi-Quellcode:
ShellExecute(0, Nil, PChar('C:\DRPEncPrediction.bat'), Nil, Nil, SW_NORMAL);
...ShellExecute reicht ja nicht. Dann soll Folgedes nach Beendigung von der Batch passieren welche sich selber schließt:

Die encodierte Datei soll ausgelesen werden und die Dateigröße in eine Edit geschrieben werden, damit ich diese mit dem festegelegten Wert vergleichen kann.
Delphi-Quellcode:
Edit8.Text:=GET_FILE_SIZE('Name der Encodierten Datei' + '.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');
Wenn die Bitrate erhöht werden soll, sollte DRPEnc dies selbstständig tun. Am Besten prozentual sollen Werte in drei weiteren Edits (Bitraten) verändert werden.

Delphi-Quellcode:
if FloatToStr(b) < FloatToStr(c) then form8.Edit4.text:=('Wert von form8.Edit4' + 1000);
und die Batch wieder starten

Ist die Dateigröße zu groß sollen die letzen Einstellungen verwendet werden. Weis aber nicht wie ich dies anstellen soll:

Delphi-Quellcode:
//if FloatToStr(b) > FloatToStr(c) then listbox1.Items.add('Lower the bitrate');
if FloatToStr(b) > FloatToStr(c) then 'Letzte Werte < FloatToStr(c)' wiederherstellen und Meldung ausgeben;
end;
Das sind meine Probleme... :gruebel:

nailor 28. Feb 2004 09:35

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
also, hier mal ein versuch, dein Problem auf den Punkt zu bringen:

Du willst in deinem Code solange warten, bis ein anderes externes Programm fertig ist?

Eventuell gibts dafür eine passende Funktion. Da hab ich jetzt aber keine Idee, welche.

An sonsten könntest du einfach testen, ab wann du Schreibzugriff auf die Videodatei bekommst (falls die Batch das vorher blockiert) und dann weitermachen.

Luckie 28. Feb 2004 13:01

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
Hm, wenn das so ist, dann kuck mal in der Code-Lib nach CreateProcessCreateProcess.

DRPEnc 28. Feb 2004 18:13

Re: Nach ShellExecute Filesize anzeigen lassen - Wie?
 
@ Luckie: Und wie weiter? ...

Delphi-Quellcode:
function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PDWORD): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb         := SizeOf(StartupInfo);
  StartupInfo.dwFlags    := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED
  else
  begin
    if wait = FALSE then
    begin
      if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
      exit;
    end;
    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, Result);
  end;
  if ProcessInfo.hProcess <> 0 then
    CloseHandle(ProcessInfo.hProcess);
  if ProcessInfo.hThread <> 0 then
    CloseHandle(ProcessInfo.hThread);
end;
Und Aufruf mit:

Delphi-Quellcode:
procedure TForm12.Button7Click(Sender: TObject);
var
  ProcID: Cardinal;
begin
  ProcID := 0;
  //if OpenDialog1.Execute then
    RunProcess('C:\DRPEncPrediction.bat', SW_SHOW, FALSE, @ProcID);
  ShowMessage(IntToStr(ProcID));
end;
Ich bekomm Die ProcID per Message. Wie bringe ich nun das Programm auf die Beendigung zu warten, damit ich mit der Dateigrößenvergleich fortfahren kann?

Was mir noch nicht klar ist das mit den Variablen über begin. Kann man verschiedene Arten von Variablen dort einbauen oder geht nur eine Art. ...wenn es gehen würde könnte ich mehre Funktionen auf einen Button schnalzen.

@Nailor

Zitat:

An sonsten könntest du einfach testen, ab wann du Schreibzugriff auf die Videodatei bekommst (falls die Batch das vorher blockiert) und dann weitermachen
Ich will ja nur die Größe auslesen. Bearbeitet wird diese MPEG-Datei nicht mehr. Mit dem Größenvergleich starte ich die Funktion die Bitraten in den Edits zu verändern. Dann soll die Batch wieder von vorne anlaufen.

Wenn ich es schaffe das Programm dazu zu bringen auf die Batch zu warten und dann weiter zu machen ist mir schon geholfen... denke ich.

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 03:34 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