|  | @@ -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);
 |