Subversion Repositories decoder

Compare Revisions

Regard whitespace Rev 1 → Rev 2

/trunk/Private/ProcessCommandline ohne Wildcards und mehrere Eingaben.txt
0,0 → 1,213
{ Allgemeine Funktion zum Verarbeiten der Kommandozeilenparameter }
// ursprünglich von OneInst
procedure TMainForm.ProcessCommandline(lpData: Pointer);
var
arbeitsverzeichnis: string;
i: integer;
begin
ParamZeile := ParamBlobToStr(lpData);
 
// Anwendung dient nur als Hilfeaufruf
 
if GebeLinieaus(ParamZeile, 1) = '/?' then
begin
m_help.Click;
close;
exit;
end;
 
// Anwendung dient nur als Cleaner
 
if paramzeile_firstposition('/clean') <> -1 then
begin
// 10 Sekunden warten, bis ggf. die temporären Dateien freigegeben wurden
if (lowercase(GebeLinieaus(ParamZeile, 2)) = '/silent') then Schlafen(10000);
DeleteTempFiles;
close;
exit;
end;
 
// Verarbeitung der Befehlszeile
 
if (ZaehleLinien(ParamZeile) > 1) then
begin
if (paramzeile_firstposition('/c') <> -1) and (paramzeile_firstposition('/x') <> -1) then
begin
if ZaehleLinien(ParamZeile) <> 4 then
begin
errorlevel := 3; // Falsche Syntax
end
else if not fileexists(GebeLinieaus(ParamZeile, 1)) and not directoryexists(GebeLinieaus(ParamZeile, 1)) then
begin
errorlevel := 9; // Datei oder Ordner nicht gefunden.
end
else
begin
if fileexists(GebeLinieaus(ParamZeile, 1)) then
begin
GetDir(0, arbeitsverzeichnis);
ausgabegesetzt := arbeitsverzeichnis+'\'+GebeLinieaus(ParamZeile, 4);
openfile(GebeLinieaus(ParamZeile, 1), '', true);
 
if mode = tcDecrypted then
begin
// Datei verschlüsseln
if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then
ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben!
edt_passwort.Text := GebeLinieaus(ParamZeile, 3);
edt_passwort2.Text := GebeLinieaus(ParamZeile, 3);
try
m_encrypt.Click;
except
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen
// bleiben, deswegen der Try-Except-Block.
errorlevel := 2; // Fehler bei Ver/Entschlüsselung
end;
end;
 
if mode = tcEncrypted then
begin
// Datei oder Ordner entschlüsseln
if lowercase(extractfileext(ausgabegesetzt)) = lowercase(ExtDC4) then
ausgabegesetzt := copy(ausgabegesetzt, 0, length(ausgabegesetzt)-length(ExtDC4)); // Ausgabe darf nicht .dc4 haben!
edt_passwort.Text := GebeLinieaus(ParamZeile, 3);
try
m_decrypt.Click;
except
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen
// bleiben, deswegen der Try-Except-Block.
errorlevel := 2; // Fehler bei Ver/Entschlüsselung
end;
end;
end
else if directoryexists(GebeLinieaus(ParamZeile, 1)) then
begin
// Ordner verschlüsseln
openfolder(GebeLinieaus(ParamZeile, 1));
edt_passwort.Text := GebeLinieaus(ParamZeile, 3);
edt_passwort2.Text := GebeLinieaus(ParamZeile, 3);
ausgabegesetzt := GebeLinieaus(ParamZeile, 4);
if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then
ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben!
try
m_encrypt.Click;
except
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen
// bleiben, deswegen der Try-Except-Block.
errorlevel := 2; // Fehler bei Ver/Entschlüsselung
end;
end;
end;
close;
end
else if (lowercase(GebeLinieaus(ParamZeile, 2)) = '/e') then
begin
if (ZaehleLinien(ParamZeile) = 2) or ((ZaehleLinien(ParamZeile) = 3) and (GebeLinieaus(ParamZeile, 3) = '/notsilent')) then
begin
if directoryexists(GebeLinieaus(ParamZeile, 1)) then
begin
dc_deletedir(GebeLinieaus(ParamZeile, 1));
if directoryexists(GebeLinieaus(ParamZeile, 1)) then
begin
if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then
Application.MessageBox(pchar(GetLangEntry('delerror')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR)
else
errorlevel := 8; // Datei oder Ordner konnte nicht oder nur teilweise entfernt werden.
end
else if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then
Application.MessageBox(pchar(GetLangEntry('delok')), pchar(GetLangEntry('information')), MB_OK + MB_ICONINFORMATION)
end
else if fileexists(GebeLinieaus(ParamZeile, 1)) then
begin
dc_deletefile(GebeLinieaus(ParamZeile, 1));
if fileexists(GebeLinieaus(ParamZeile, 1)) then
begin
if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then
Application.MessageBox(pchar(GetLangEntry('delerror')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR)
else
errorlevel := 8; // Datei oder Ordner konnte nicht oder nur teilweise entfernt werden.
end
else if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then
Application.MessageBox(pchar(GetLangEntry('delok')), pchar(GetLangEntry('information')), MB_OK + MB_ICONINFORMATION)
end
else
begin
if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then
Application.MessageBox(pchar(GetLangEntry('fileorfoldernotfound')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR)
else
errorlevel := 9; // Datei oder Ordner nicht gefunden.
end;
end
else
begin
errorlevel := 3; // Falsche Syntax
end;
close;
end
else
begin
show;
 
steuerelementesperren(true);
zeige_wartenform(true);
try
 
try
kazip.close;
except
 
end;
 
if fileexists(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip) then deletefile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip);
CreateZipFile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip);
for i := 1 to ZaehleLinien(ParamZeile) do
begin
addtozip(GebeLinieaus(ParamZeile, i), GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip)
end;
 
openfile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip, GetLangEntry('dateiensammlung'), true);
 
finally
steuerelementesperren(false);
zeige_wartenform(false);
end;
 
application.Restore;
application.BringToFront;
end;
end
else
begin
show;
 
if fileexists(GebeLinieaus(ParamZeile, 1)) then
begin
steuerelementesperren(true);
zeige_wartenform(true);
try
openfile(GebeLinieaus(ParamZeile, 1), '', false);
finally
steuerelementesperren(false);
zeige_wartenform(false);
end;
end
else if directoryexists(GebeLinieaus(ParamZeile, 1)) then
begin
steuerelementesperren(true);
zeige_wartenform(true);
try
openfolder(GebeLinieaus(ParamZeile, 1));
finally
steuerelementesperren(false);
zeige_wartenform(false);
end;
end
else
begin
application.Restore;
application.BringToFront;
end;
 
end;
 
end;