AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Batch Datei in Konsolenanwendung übernehmen

Batch Datei in Konsolenanwendung übernehmen

Ein Thema von Dumpfbacke · begonnen am 26. Jan 2009 · letzter Beitrag vom 26. Jan 2009
Antwort Antwort
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
329 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Batch Datei in Konsolenanwendung übernehmen

  Alt 26. Jan 2009, 08:01
Hallo Leute,
ich habe hier eine Lösung mit der man automatisch Ausdrueck auf einem Server ins PDF - Format wandeln kann und dann per Mail verschicken kann. Dazu benutze ich eine Batch Datei. Nun wollte ich gerne die Batch Datei durch ein Delphi Programm ersetzte, da ich hier noch etwas mehr machen wollte. Nur leider geht es nicht und ich verstehe einfach nicht warum.

Die Batch un das Delphi Programm sind nicht von mir sondern habe ich im Internet gefunden und erweiter


Es hängt an dieser Zeile in meinem Programm. Die Batch Datei geht ohne Probleme.

Batch Datei : c:\programme\gs\redmon\redfile.exe %PSFILE%
Delphi Progamm : ExecuteFile('c:\programme\gs\redmon\redfile.exe ','"'+PSFILE+'"','c:\programme\gs\redmon\',False) ;


Hier werden die Daten vom Virtuellen Port übernommen und in eine Datei gespeicht. Je nachdem ob ich die Variable PSFile als Variabel oder mit der exe übergeben wird die Datei angelegt oder nicht. Wenn die Datei angelegt wird ist Sie jedoch leer und das Fenster schließt sich nicht am Ende.

Kamm mir hier jemand helfen. Ich hänge mal beide Dateien mit an.

Danke Dumpfbacke


Hier die Batch Datei

Delphi-Quellcode:
rem --------------------------------------------------------------
rem Konverter Postscript Ausdruck zu SMTP Mail
rem
rem Frank Carius, [email]info@netatwork.de[/email], 31. Mrz 2004
rem
rem Diese Job wird durch "REDMON" aufgerufen, welcher als Postmonitor
rem die Ausgaben eines Postscript Treibers umleitet.
rem Anhand des Job Owners wird die PS Datei in PDF konvertiert und per
rem SMTP an den Owner zurückgesendet
rem Version 1.0 erste Version
rem Version 1.1 Korrekturen: fehlende Anfuerhungszeichen etc
rem Version 1.2 Verbessertes Debugging
rem Version 1.3 Verbessertes Debugging bei BLAT aktiviert mehr Doku
rem Unterstützung von GS8.14 Kennwortschutz
rem Version 1.4 Sonderzeichenbehandlung. danke an Andreas Huch
rem Version 1.5 Umstellung auf REDFILE statt Redrum da Probleme mit NT4/WIN95
rem Neue Variable PDF2SMTPTEMP
rem Kommandoparameter nicht mehr genutzt.
rem Version 1.6 Anpassung der Encryption für GhostScript 8.51
rem           Anpassung der TEMP-Pfade für Windows 20003
rem --------------------------------------------------------------


rem --------------------- Definition der Parameter. muessen angepasst werden !! ---------------

rem ----------------- Pfad für temporäre Dateien
rem set pdf2smtptemp=%TEMP%
set pdf2smtptemp=C:\Programme\gs\Redmon
rem Achtung: Das Verzeichnis muss existieren,
rem SYSTEM benötigt ÄNDERN-Rechte,
rem kein \ am Ende anhaengen
   
rem ----------------- Pfad für die Protokolldatei
set pdf2smtplog="c:\Programme\gs\redmon\pdf2smtp.log"

rem ----------------- Pfad zu Ghostscript
set pdf2smtpgs="c:\programme\gs\gs8.63\bin\gswin32c.exe"

rem ----------------- Pfad zu BLAT
set pdf2smtpblat="c:\Programme\gs\redmon\blat.exe"

rem ----------------- SMTP-Domäne fuer die Mails
set pdf2smtpmaildomain=firma.de

rem----------------- Mailserver zum Versand der Nachrichten. IP-Adresse oder DNS-Name
set pdf2smtpmailserver="mail.firma.de"

rem----------------- Einstellungen für den PDF Schutz
ALT
rem -3904 = nur Ansehen
rem -1856 = Ansehen und Drucken
rem -4 = enable all
rem details [url]http://casper.ghostscript.com/~ghostgum/pdftips.htm[/url]

set pdfprotect=-1856
set pdfpassword=geheim

echo PDF2SMTP %DATE% %TIME% PDF2SMTP Version 1.5 gestartet------------------- >>%pdf2smtplog%

rem ----------------- Behandlung der Sonderzeichen
echo PDF2SMTP %DATE% %TIME% Behandlung der Sonderzeichen ------------------- >>%pdf2smtplog%
SET REDMON_DOCNAME=%REDMON_DOCNAME:\=_%
SET REDMON_DOCNAME=%REDMON_DOCNAME:/=_%
SET REDMON_DOCNAME=%REDMON_DOCNAME::=_%
SET REDMON_DOCNAME=%REDMON_DOCNAME:?=_%
SET REDMON_DOCNAME=%REDMON_DOCNAME:<=_%
SET REDMON_DOCNAME=%REDMON_DOCNAME:>=_%
SET REDMON_DOCNAME=%REDMON_DOCNAME:|=_%
SET REDMON_DOCNAME=%REDMON_DOCNAME:"=_%
rem Eine Behandlung von "*" als Sonderzeichen ist mir nicht bekannt

rem ----------------- Ausgabe der Daten in die Protokolldatei zur Fehlersuche
echo PDF2SMTP %DATE% %TIME% Umgebungsvariablen -------------------------------- >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% REDMON_PORT = %REDMON_PORT% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% REDMON_JOB = %REDMON_JOB% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% REDMON_PRINTER = %REDMON_PRINTER% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% REDMON_MACHINE = %REDMON_MACHINE% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% REDMON_USER = %REDMON_USER% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% REDMON_DOCNAME = %REDMON_DOCNAME% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% REDMON_FILENAME = %REDMON_FILENAME% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% REDMON_SESSIONID = %REDMON_SESSIONID% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% Kommandozeile = %1 >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% PDF2SMTPTEMP-Pfad= %PDF2SMTPTEMP% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% GS-Pfad = %pdf2smtpgs% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% Blat-Pfad = %pdf2smtpblat% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% Mailserver = %pdf2smtpmailserver% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% SMTP-Domain = %pdf2smtpmaildomain% >>%pdf2smtplog%

rem ----------------- temporaere Dateipfade festlegen.
set BODYFILE="%PDF2SMTPTEMP%\%REDMON_USER%-%REDMON_DOCNAME%-%REDMON_JOB%.TXT"
set PDFFILE="%PDF2SMTPTEMP%\%REDMON_USER%-%REDMON_DOCNAME%-%REDMON_JOB%.PDF"
set PSFILE="%PDF2SMTPTEMP%\job-%REDMON_JOB%.ps"

rem ----------------- Ausgabe dieser temporaeren Dateipfade in die Protokolldatei
echo PDF2SMTP %DATE% %TIME% BODYFILE = %BODYFILE% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% PDFFILE = %PDFFILE% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% PSFILE = %PSFILE% >>%pdf2smtplog%

rem ----------------- Druckausgabe von STDOUT abholen
echo PDF2SMTP %DATE% %TIME% Postscript von STDOUT abholen >>%pdf2smtplog%
c:\programme\gs\redmon\redfile.exe %PSFILE%

rem ----------------- Ghostscript Konvertierung
echo PDF2SMTP %DATE% %TIME% GS Konvertierung startet Input : %PSFILE% >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% GS Konvertierung startet Output: %PDFFILE% >>%pdf2smtplog%
start "PDF2SMTP GSKonvert" /WAIT %pdf2smtpgs% -dNOPAUSE -dBATCH -dEncryptionR#3 -dKeyLength#128 -sDEVICE=pdfwrite -dPDFSETTINGS=/default -dPermissions#%pdfprotect% -sOwnerPassword=%pdfpassword% -dCompatibilityLevel=1.4 -sOutputFile=%PDFFILE% %PSFILE%
echo PDF2SMTP %DATE% %TIME% GS Konvertierung beendet >>%pdf2smtplog%

rem ----------------- Fehlerbehandlung
if exist %PDFFILE% goto sendpdf
echo PDF2SMTP %DATE% %TIME% Fehler bei der Konvertierung !! >>%pdf2smtplog%
copy %PSFILE% *.err
echo PDF2SMTP %DATE% %TIME% PostscriptInput gesichert als %PSFILE%.err >>%pdf2smtplog%

:sendpdf
rem goto skipsmtp
´rem ----------------- Versand der Mail an den Benutzer
echo PDF2SMTP %DATE% %TIME% Sende Anlage per Mail >>%pdf2smtplog%
echo PDF2SMTP %DATE% %TIME% Empfaenger: %REDMON_USER%@%pdf2smtpmaildomain% >>%pdf2smtplog%

rem ----------------- Erzeugen des BODY
echo PDF2SMTP %DATE% %TIME% Erzeuge Mailbody >>%pdf2smtplog%
echo Ihr Konvertierungsauftrag wurde ausgeführt > %BODYFILE%
if exist %PDFFILE% echo Sie finden Die PDF-Datei als Anlage an diese Mail >>%BODYFILE%
if not exist %PDFFILE% echo !!! FEHLER bei der Konvertierung !!! >>%BODYFILE%
echo --------------------------------------------------- >>%BODYFILE%
echo Ausdruck erzeugt von: %REDMON_USER% >>%BODYFILE%
echo Computer : %REDMON_MACHINE% >>%BODYFILE%
echo Drucker : %REDMON_PRINTER% >>%BODYFILE%
echo Dokumentname : %REDMON_DOCNAME% >>%BODYFILE%
echo Jobnummer : %REDMON_JOB% >>%BODYFILE%
echo --------------------------------------------------- >>%BODYFILE%
echo Erstellt von PDF2SMTP Version 1.5 am %DATE% %TIME% >>%BODYFILE%

echo PDF2SMTP %DATE% %TIME% Sende SMTP-Mail >>%pdf2smtplog%

if exist %PDFFILE% start "PDF2SMTP Blat" /Wait %pdf2smtpblat% %BODYFILE% -server %pdf2smtpmailserver% -f "pdf2smtp@%pdf2smtpmaildomain%" -t "%REDMON_USER%@%pdf2smtpmaildomain%" -s "%REDMON_DOCNAME%" -attach %PDFFILE%
if not exist %PDFFILE% start "PDF2SMTP Blat" /Wait %pdf2smtpblat% %BODYFILE% -server %pdf2smtpmailserver% -f "pdf2smtp@%pdf2smtpmaildomain%" -t "%REDMON_USER%@%pdf2smtpmaildomain%" -s "PDF2SMTP Fehler mit %REDMON_DOCNAME%"
:skipsmtp

rem Archivfunktion. Kopieren Sie alle erzeugten PDFs einfach in ein Verzeichnis
rem Ich nutze diese Funktion auf dem Notebook, wenn ich keinen Mailserver zur Verfügung habe
rem copy %PDFFILE% c:\

echo PDF2SMTP %DATE% %TIME% Cleanup >>%pdf2smtplog%
rem del %BODYFILE%
rem del %PDFFILE%
rem del %PSFILE%

echo PDF2SMTP %DATE% %TIME% Beendet -------------------------------- >>%pdf2smtplog%
Hier mein Programm

Delphi-Quellcode:

program pdf2smtp;

{$APPTYPE CONSOLE}

uses
  WinTypes, WinProcs, SysUtils, IniFiles;

var
  {Variablendeklaration, z.T. mit Defaultbelegung, falls keine
   anderen Werte aus dem INI-File gelesen werden koennen}

  PSFILE, BODYFILE, PDFFILE, TEMP : String;
  REDMON_USER, REDMON_DOCNAME, REDMON_JOB, REDMON_MACHINE, REDMON_PRINTER : String;
  REDMON_PORT, REDMON_FILENAME, REDMON_SESSIONID : String;
  result : boolean;
  pdf2smtpini : String='pdf2smtp.ini';
  inifilepath : String='c:\programme\gs\redmon';
  pdf2smtplog : String='c:\programme\gs\redmon\pdf2smtp.log';
  pdf2smtpgs : String='c:\programme\gs\gs8.14\bin\gswin32c.exe';
  pdf2smtpblat : String='c:\programme\gs\redmon\blat.exe';
  maildomain : String='firma.de';
  mailserver : String='mail.firma.de';
  sender : String='pdf2smtp';
  pdfprotect : String='64';
  pdfpassword : String='';
  outputsettings : String='/default';
  compatibility : String='1.4';
  F, LOG, BODY, PDF : TextFile;
  FileMode : Byte = 2;


  { die Funktion ExecAndWait entliehen aus: [url]http://www.delphi-fundgrube.de/faq08.htm[/url]
    16bit Teil entfernt; WindowState ist SW_normal, SW_minimized oder SW_maximized}


  { WindowState is one of the SW_xxx constants.
    Look up ShowWindow in the API help for a list.}

  function ExecAndWait(const Filename, Params: string; WindowState: word): boolean;
  var
    SUInfo: TStartupInfo;
    ProcInfo: TProcessInformation;
    CmdLine: string;
  begin
    { Enclose filename in quotes to take care of
      long filenames with spaces. }

    CmdLine := '"' + Filename + '" ' + Params;
    FillChar(SUInfo, SizeOf(SUInfo), #0);
    with SUInfo do begin
      cb := SizeOf(SUInfo);
      dwFlags := STARTF_USESHOWWINDOW;
      wShowWindow := WindowState;
    end;
    Result := CreateProcess(NIL, PChar(CmdLine), NIL, NIL, FALSE,
                            CREATE_NEW_CONSOLE or
                            NORMAL_PRIORITY_CLASS, NIL,
                            PChar(ExtractFilePath(Filename)),
                            SUInfo, ProcInfo);
    { Wait for it to finish. }
    if Result then
      WaitForSingleObject(ProcInfo.hProcess, INFINITE);
  end;


procedure ExecuteFile(const AFilename: String;
                      AParameter, ACurrentDir: String; AWait: Boolean);
var
  si : TStartupInfo;
  pi : TProcessInformation;
begin
  if Length(ACurrentDir) = 0 then begin
    ACurrentDir := ExtractFilePath(AFilename);
    if ACurrentDir[Length(ACurrentDir)] = 'then
      Delete(ACurrentDir, Length(ACurrentDir), 1);
  end;
  FillChar(si, SizeOf(si), 0);
  with si do begin
    cb := SizeOf(si);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := SW_NORMAL;
  end;
  FillChar(pi, SizeOf(pi), 0);
  if Length(AParameter) = 0 then
    AParameter := Format('"%s"', [AFilename])
  else
    AParameter := Format('"%s" "%s"', [AFilename, AParameter]);
  if CreateProcess(Nil, PChar(AParameter), Nil, Nil, False,
                   CREATE_DEFAULT_ERROR_MODE or CREATE_NEW_CONSOLE or
                   NORMAL_PRIORITY_CLASS, Nil, PChar(ACurrentDir), si, pi) then
  begin
    try
      if AWait then WaitForSingleObject(pi.hProcess, INFINITE);
    finally
      CloseHandle(pi.hProcess);
      CloseHandle(pi.hThread);
    end;
  end;
end;

  {Auslesen aller Werte aus dem Ini-File in Variablen}
  procedure ReadIniFile;
  var
    IniFile : TIniFile;
  begin
    inifilepath := ExtractFilePath(ParamStr(0));
    IniFile := TIniFile.Create(inifilepath+pdf2smtpini);
    with IniFile do
    begin
      pdf2smtplog := IniFile.ReadString('Path','pdf2smtplog',pdf2smtplog);
      pdf2smtpgs := IniFile.ReadString('Path','pdf2smtpgs',pdf2smtpgs);
      pdf2smtpblat := IniFile.ReadString('Path','pdf2smtpblat',pdf2smtpblat);

      maildomain := IniFile.ReadString('Mail','maildomain',maildomain);
      mailserver := IniFile.ReadString('Mail','mailserver',mailserver);
      sender := IniFile.ReadString('Mail','sender',sender);

      pdfprotect := IniFile.ReadString('Pdf','pdfprotect',pdfprotect);
      pdfpassword := IniFile.ReadString('Pdf','pdfpassword',pdfpassword);
      outputsettings := IniFile.ReadString('Pdf','outputsettings',outputsettings);
      compatibility := IniFile.ReadString('Pdf','compatibility',compatibility);
    end;
    IniFile.Free;
  end;


begin
  { TODO -oUser -cConsole Main : Insert code here }

  {Erzeuge LOGFILE; anhaengen falls existiert, sonst neu anlegen}

  AssignFile(LOG, pdf2smtplog);
  try
     Append(LOG);
  except
     Rewrite(LOG);
  end;
  Writeln(LOG, '---------------------------------------------------');
  Writeln(LOG, 'Logfile erstellt von PDF2SMTP Version 1.4 am '+DateToStr(Date));
  Writeln(LOG, '---------------------------------------------------');
  CloseFile(LOG);


  {Werte aus dem inifile lesen}
  readinifile;

  {Umgebungsvariablen lesen}
  TEMP := GetEnvironmentVariable('TEMP');
  REDMON_USER := GetEnvironmentVariable('REDMON_USER');
  REDMON_DOCNAME := GetEnvironmentVariable('REDMON_DOCNAME');
  REDMON_JOB := GetEnvironmentVariable('REDMON_JOB');
  REDMON_MACHINE := GetEnvironmentVariable('REDMON_MACHINE');
  REDMON_PRINTER := GetEnvironmentVariable('REDMON_PRINTER');
  REDMON_PORT := GetEnvironmentVariable('REDMON_PORT');
  REDMON_FILENAME :=GetEnvironmentVariable('REDMON_FILENAME');
  REDMON_SESSIONID :=GetEnvironmentVariable('REDMON_SESSIONID');

  {Logfile schreiben}
  AssignFile(LOG, pdf2smtplog);
  Append(LOG);
  writeln(LOG, DateToStr(Date)+ ' Umgebungsvariablen --------------------------------');
  writeln(LOG, DateToStr(Date)+ ' REDMON_PORT '+REDMON_PORT );
  writeln(LOG, DateToStr(Date)+ ' REDMON_JOB '+REDMON_JOB );
  writeln(LOG, DateToStr(Date)+ ' REDMON_PRINTER '+REDMON_PRINTER );
  writeln(LOG, DateToStr(Date)+ ' REDMON_MACHINE '+REDMON_MACHINE );
  writeln(LOG, DateToStr(Date)+ ' REDMON_USER '+REDMON_USER );
  writeln(LOG, DateToStr(Date)+ ' REDMON_DOCNAME '+REDMON_DOCNAME );
  writeln(LOG, DateToStr(Date)+ ' REDMON_FILENAME '+REDMON_FILENAME );
  writeln(LOG, DateToStr(Date)+ ' REDMON_SESSIONID '+REDMON_SESSIONID );
  writeln(LOG, DateToStr(Date)+ ' Inputfile '+ParamStr(1) );
  writeln(LOG, DateToStr(Date)+ ' TEMP-Pfad '+TEMP );
  writeln(LOG, DateToStr(Date)+ ' GS-Pfad '+pdf2smtpgs );
  writeln(LOG, DateToStr(Date)+ ' Blat-Pfad '+pdf2smtpblat );
  writeln(LOG, DateToStr(Date)+ ' IniFile-Pfad '+inifilepath+pdf2smtpini );
  CloseFile(LOG);


  {Behandlung der Sonderzeichen}
  REDMON_DOCNAME := stringreplace(REDMON_DOCNAME,'\','_',[rfReplaceAll]);
  REDMON_DOCNAME := stringreplace(REDMON_DOCNAME,'/','_',[rfReplaceAll]);
  REDMON_DOCNAME := stringreplace(REDMON_DOCNAME,':','_',[rfReplaceAll]);
  REDMON_DOCNAME := stringreplace(REDMON_DOCNAME,'?','_',[rfReplaceAll]);
  REDMON_DOCNAME := stringreplace(REDMON_DOCNAME,'<','_',[rfReplaceAll]);
  REDMON_DOCNAME := stringreplace(REDMON_DOCNAME,'>','_',[rfReplaceAll]);
  REDMON_DOCNAME := stringreplace(REDMON_DOCNAME,'|','_',[rfReplaceAll]);
  REDMON_DOCNAME := stringreplace(REDMON_DOCNAME,'"','_',[rfReplaceAll]);


  {Dateinamen erzeugen}
  BODYFILE := TEMP +'\'+ REDMON_USER +'-'+ REDMON_DOCNAME +'-'+ REDMON_JOB +'.txt';
  PDFFILE := TEMP +'\'+ REDMON_USER +'-'+ REDMON_DOCNAME +'-'+ REDMON_JOB +'.pdf';
  PSFILE := TEMP +'\job-'+REDMON_JOB+'.ps';

  {Hier holen wir mal die Druckausgabe ab}
  ExecuteFile('c:\programme\gs\redmon\redfile.exe ','"'+PSFILE+'"','c:\programme\gs\redmon\',False);

  {Logfile schreiben}
  AssignFile(LOG, pdf2smtplog);
  Append(LOG);
  writeln(LOG, DateToStr(Date)+ ' temporäre Dateipfade --------------------------------');
  writeln(LOG, DateToStr(Date)+ ' BODYFILE = '+BODYFILE);
  writeln(LOG, DateToStr(Date)+ ' PDFFILE = '+PDFFILE);
  writeln(LOG, DateToStr(Date)+ ' PSFILE = '+PSFILE);
  writeln(LOG, DateToStr(Date)+ ' REDMON_DOCNAME neu = '+REDMON_DOCNAME);
  Writeln(LOG, '-----------------------------------------------------------------------');
  CloseFile(LOG);

  {Ghostscript Konvertierung}
  AssignFile(LOG, pdf2smtplog);
  Append(LOG);
  writeln(LOG, DateToStr(Date)+ ' GS Konvertierung startet Input '+PSFile);
  //writeln(LOG, DateToStr(Date)+ ' GS Konvertierung startet Input '+ParamStr(1));
  writeln(LOG, DateToStr(Date)+ ' GS Konvertierung startet Output '+PDFFILE);
  CloseFile(LOG);

  //result := ExecAndWait(pdf2smtpgs, '-dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS='+outputsettings+' -dCompatibilityLevel='+compatibility+' -dPermissions='+pdfprotect+' -sOwnerPassword='+pdfpassword+' -sOutputFile="'+PDFFILE+'" '+ParamStr(1), SW_normal);
  result := ExecAndWait(pdf2smtpgs, '-dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS='+outputsettings+' -dCompatibilityLevel='+compatibility+' -dPermissions='+pdfprotect+' -sOwnerPassword='+pdfpassword+' -sOutputFile="'+PDFFILE+'" '+PSFILE, SW_normal);
  {Logfile schreiben}
  AssignFile(LOG, pdf2smtplog);
  Append(LOG);
  writeln(LOG, DateToStr(Date)+ ' GS Konvertierung beendet');
  CloseFile(LOG);

  {wenn die Umwandlung fehlschlaegt, dann das Postscriptfile sichern,
  und bei Erfolg/Misserfolg entsprechende Meldungen ins Log schreiben
   --- diese Funktion bisher nicht getestet ---}

  if result=false then
  begin
    result := ExecAndWait('copy', '"'+ParamStr(1)+ ' error-'+Paramstr(1)+'.ps', SW_normal);
    if result = true then
    begin
      AssignFile(LOG, pdf2smtplog);
      Append(LOG);
      writeln(LOG, DateToStr(Date)+ ' Fehler bei der Konvertierung aufgetreten !!');
      writeln(LOG, DateToStr(Date)+ ' PostscriptInput gesichert als'+ParamStr(1));
      CloseFile(LOG);
    end else
    begin
      AssignFile(LOG, pdf2smtplog);
      Append(LOG);
      writeln(LOG, DateToStr(Date)+ ' Fehler bei der Konvertierung aufgetreten !!');
      writeln(LOG, DateToStr(Date)+ ' PostscriptInput wurde nicht gesichert !!!');
      CloseFile(LOG);
    end;


    {Den Mailbody erzeugen, wenn Fehler bei der Konvertierung auftrat...}
    AssignFile(F, BODYFILE);
    Rewrite(F);
    Writeln(F, '!!! FEHLER bei der Konvertierung !!!');
    Writeln(F, '---------------------------------------------------');
    Writeln(F, 'Ausdruck erzeugt von: '+REDMON_USER);
    Writeln(F, 'Computer : '+REDMON_MACHINE);
    Writeln(F, 'Drucker : '+REDMON_PRINTER);
    Writeln(F, 'Dokumentname : '+REDMON_DOCNAME);
    Writeln(F, 'Jobnummer : '+REDMON_JOB);
    Writeln(F, '---------------------------------------------------');
    Writeln(F, 'Erstellt von PDF2SMTP Version 1.4 am '+DateToStr(Date));
    CloseFile(F);

    {...und dann versenden}
    result := ExecAndWait(pdf2smtpblat, '"'+BODYFILE+'"'+' -server "'+mailserver+'" -f "'+sender+'@'+maildomain+'" -t "'+REDMON_USER+'@'+maildomain+'" -s "PDF2SMTP Fehler mit '+REDMON_DOCNAME+'" -log '+pdf2smtplog, SW_normal);

    {Logfile schreiben}
    AssignFile(LOG, pdf2smtplog);
    Append(LOG);
    writeln(LOG, DateToStr(Date)+ ' Exitcode von blat: '+BoolToStr(result, FALSE));
    writeln(LOG, DateToStr(Date)+ ' Beendet --------------------------------------');
    CloseFile(LOG);

    {Programm beenden mit Errorcode 1}
    Halt(1);
  end;


  {Logfile schreiben}
  AssignFile(LOG, pdf2smtplog);
  Append(LOG);
  writeln(LOG, DateToStr(Date)+ ' Sende Anlage per Mail');
  writeln(LOG, DateToStr(Date)+ ' Empfaenger: '+REDMON_USER+'@'+maildomain);
  writeln(LOG, DateToStr(Date)+ ' Erzeuge Mailbody');
  CloseFile(LOG);

  {Den Mailbody erzeugen, wenn Konvertierung erfolgreich...}
  AssignFile(F, BODYFILE);
  Rewrite(F);
  Writeln(F, 'Ihr Konvertierungsauftrag wurde ausgefuehrt');
  Writeln(F, 'Sie finden die PDF-Datei als Anlage an diese Mail');
  Writeln(F, '---------------------------------------------------');
  Writeln(F, 'Ausdruck erzeugt von: '+REDMON_USER);
  Writeln(F, 'Computer : '+REDMON_MACHINE);
  Writeln(F, 'Drucker : '+REDMON_PRINTER);
  Writeln(F, 'Dokumentname : '+REDMON_DOCNAME);
  Writeln(F, 'Jobnummer : '+REDMON_JOB);
  Writeln(F, '---------------------------------------------------');
  Writeln(F, 'Erstellt von PDF2SMTP Version 1.4 am '+DateToStr(Date));
  CloseFile(F);

  {Logfile schreiben...}
  AssignFile(LOG, pdf2smtplog);
  Append(LOG);
  writeln(LOG, DateToStr(Date)+ ' Sende SMTP-Mail');
  CloseFile(LOG);

  {... und Mail versenden mit blat}
  //Eckenroth result := ExecAndWait(pdf2smtpblat, '"'+BODYFILE+'"'+' -server "'+mailserver+'" -f "pdf2smtp@'+maildomain+'" -t "'+REDMON_USER+'@'+maildomain+'" -s "'+REDMON_DOCNAME+'" -log '+pdf2smtplog+' -attach '+'"'+PDFFILE+'"', SW_normal);

  {Logfile schriben}
  AssignFile(LOG, pdf2smtplog);
  Append(LOG);
  writeln(LOG, DateToStr(Date)+ ' Exitcode von blat: '+BoolToStr(result, FALSE));
  writeln(LOG, DateToStr(Date)+ ' Cleanup');
  CloseFile(LOG);

  {aufraemen}
  AssignFile(BODY, BODYFILE);
  Reset(BODY);
  Close(BODY);
  //ERASE(BODY);

  AssignFile(PDF, PDFFILE);
  Reset(PDF);
  Close(PDF);
  //ERASE(PDF);

  {Ende im Logfile festhalten}
  AssignFile(LOG, pdf2smtplog);
  Append(LOG);
  writeln(LOG, DateToStr(Date)+ ' Beendet --------------------------------------');
  CloseFile(LOG);

end.
Tanja
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Batsch Datei in Konsolenanwendung übernehmen

  Alt 26. Jan 2009, 08:32
Mein Delphi kennt kein ExecuteFile. Was ist das für eine Funktion?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Batsch Datei in Konsolenanwendung übernehmen

  Alt 26. Jan 2009, 08:36
Ab Zeile 66 . Etwas weniger Code bzw. alles als Anhang hätte es aber auch getan.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
329 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Batsch Datei in Konsolenanwendung übernehmen

  Alt 26. Jan 2009, 08:58
Zitat von Luckie:
Mein Delphi kennt kein ExecuteFile. Was ist das für eine Funktion?
Doch ist eine Funktion am Anfang des Delphi Codes

Dumpfbacke
Tanja
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Batsch Datei in Konsolenanwendung übernehmen

  Alt 26. Jan 2009, 09:02
Ist im ganzen Code untergegangen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#6

Re: Batsch Datei in Konsolenanwendung übernehmen

  Alt 26. Jan 2009, 09:57
Sollte da nicht statt createprozess Liber shellexecute verwendet werden, oder hab ich in der Masse an Code was übersehen...
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 Uhr.
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