|
@@ -73,6 +73,7 @@ type
|
|
|
procedure DamageFileHead(AFileName: string);
|
|
|
procedure RecoverFileHead(AFileName: string);
|
|
|
procedure WriteAndAddHead(AFileName: string);
|
|
|
+ procedure RemoveHead(const AFileName: string);
|
|
|
procedure ReadAndRemoveHead(AFileName: string);
|
|
|
|
|
|
procedure ResetFileHead;
|
|
@@ -231,7 +232,6 @@ begin
|
|
|
AutoEncryptFile(sTempFile, sEncryptFile);
|
|
|
RefreshFileHead;
|
|
|
WriteAndAddHead(sEncryptFile);
|
|
|
- AppendLog('Check File-E');
|
|
|
if CheckFileValid(sEncryptFile) then
|
|
|
begin
|
|
|
AppendLog('Check File-E --> Pass');
|
|
@@ -481,6 +481,7 @@ var
|
|
|
sConnectFile, sTempFile: string;
|
|
|
vCon: TADOConnection;
|
|
|
begin
|
|
|
+ AppendLog('Check File-E');
|
|
|
Result := False;
|
|
|
try
|
|
|
sConnectFile := GetTempFileName;
|
|
@@ -490,21 +491,29 @@ begin
|
|
|
|
|
|
if FileExists(AFileName) then
|
|
|
begin
|
|
|
- CopyFileOrFolder(AFileName, sTempFile);
|
|
|
- if CheckFileEncrypt(sTempFile) then
|
|
|
+ AppendLog('Check File Exist');
|
|
|
+ if CopyFileOrFolder(AFileName, sTempFile) then
|
|
|
begin
|
|
|
- ReadAndRemoveHead(sTempFile);
|
|
|
- AutoDecryptFile(sTempFile, sConnectFile);
|
|
|
- end
|
|
|
- else
|
|
|
- CopyFileOrFolder(sTempFile, sConnectFile);
|
|
|
- RecoverFileHead(sConnectFile);
|
|
|
- vCon.ConnectionString := Format(SAdoConnectStr, [sConnectFile]);
|
|
|
- vCon.Open;
|
|
|
- Result := True;
|
|
|
+ AppendLog('Copy Check File -- Pass');
|
|
|
+ if CheckFileEncrypt(sTempFile) then
|
|
|
+ begin
|
|
|
+ RemoveHead(sTempFile);
|
|
|
+ AutoDecryptFile(sTempFile, sConnectFile);
|
|
|
+ end
|
|
|
+ else
|
|
|
+ sConnectFile := sTempFile;
|
|
|
+ RecoverFileHead(sConnectFile);
|
|
|
+ AppendLog('prepare to Connect Check File');
|
|
|
+ vCon.ConnectionString := Format(SAdoConnectStr, [sConnectFile]);
|
|
|
+ AppendLog('Checking File');
|
|
|
+ vCon.Open;
|
|
|
+ Result := True;
|
|
|
+ AppendLog('File Valid');
|
|
|
+ end;
|
|
|
end;
|
|
|
finally
|
|
|
- vCon.Free;
|
|
|
+ if Assigned(vCon) then
|
|
|
+ vCon.Free;
|
|
|
if FileExists(sConnectFile) then
|
|
|
DeleteFile(PChar(sConnectFile));
|
|
|
if FileExists(sConnectFile) then
|
|
@@ -523,6 +532,32 @@ begin
|
|
|
Result := Trim(FFileHead.FileVersion);
|
|
|
end;
|
|
|
|
|
|
+procedure TEncryptConnection.RemoveHead(const AFileName: string);
|
|
|
+var
|
|
|
+ sTempFile: string;
|
|
|
+ FileStream, FileStreamTemp: TFileStream;
|
|
|
+begin
|
|
|
+ if FileExists(AFileName) then
|
|
|
+ begin
|
|
|
+ sTempFile := GetTempFileName;
|
|
|
+ FileStream := TFileStream.Create(AFileName, fmOpenRead);
|
|
|
+ FileStreamTemp := TFileStream.Create(sTempFile, fmCreate);
|
|
|
+ try
|
|
|
+ try
|
|
|
+ FileStream.Position := SizeOf(TDrawingFileHead);
|
|
|
+ FileStreamTemp.CopyFrom(FileStream, FileStream.Size - SizeOf(TDrawingFileHead));
|
|
|
+ finally
|
|
|
+ FileStream.Free;
|
|
|
+ FileStreamTemp.Free;
|
|
|
+ end;
|
|
|
+ CopyFileOrFolder(sTempFile, AFileName);
|
|
|
+ finally
|
|
|
+ if FileExists(sTempFile) then
|
|
|
+ DeleteFile(PChar(sTempFile));
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
{ TConnection }
|
|
|
|
|
|
procedure TConnection.AppendLog(const ALog: string);
|