|
@@ -21,7 +21,7 @@ type
|
|
|
function GetConnection: TADOConnection; virtual; abstract;
|
|
|
public
|
|
|
procedure Open(const AFileName: string); virtual; abstract;
|
|
|
- procedure Save; virtual;
|
|
|
+ procedure Save; virtual; abstract;
|
|
|
procedure Close;
|
|
|
function HasOpened: Boolean; virtual; abstract;
|
|
|
|
|
@@ -81,6 +81,7 @@ type
|
|
|
destructor Destroy; override;
|
|
|
procedure Open(const AFileName: string); override;
|
|
|
procedure Save; override;
|
|
|
+ procedure UnEncryptSave;
|
|
|
|
|
|
procedure UpdateFileVersion;
|
|
|
procedure SaveDebugFile(const AFileName: string);
|
|
@@ -90,6 +91,7 @@ type
|
|
|
end;
|
|
|
|
|
|
procedure SimpleDecrypt(const ASourceFile, AResultFile: string);
|
|
|
+ function FileEncrypted(const AFileName: string): Boolean;
|
|
|
|
|
|
implementation
|
|
|
|
|
@@ -128,6 +130,31 @@ procedure SimpleDecrypt(const ASourceFile, AResultFile: string);
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+ procedure RecoverFileHead(const AFileName: string);
|
|
|
+ var
|
|
|
+ sTempFile: string;
|
|
|
+ FileStream: TFileStream;
|
|
|
+ begin
|
|
|
+ sTempFile := ExtractFilePath(AFileName) + ExtractSimpleFileName(AFileName) + '.tmp';
|
|
|
+ CopyFile(PChar(AFileName), PChar(sTempFile), False);
|
|
|
+ try
|
|
|
+ if FileExists(sTempFile) then
|
|
|
+ begin
|
|
|
+ FileStream := TFileStream.Create(sTempFile, fmOpenWrite);
|
|
|
+ try
|
|
|
+ FileStream.Seek($00, soFromBeginning);
|
|
|
+ FileStream.Write(MDBOrgHead, SizeOf(MDBOrgHead));
|
|
|
+ finally
|
|
|
+ FileStream.Free;
|
|
|
+ end;
|
|
|
+ CopyFile(PChar(sTempFile), PChar(AFileName), False);
|
|
|
+ DeleteFile(PChar(sTempFile));
|
|
|
+ end;
|
|
|
+ except
|
|
|
+ DeleteFile(PChar(sTempFile));
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+
|
|
|
var
|
|
|
sTempFile: string;
|
|
|
begin
|
|
@@ -137,11 +164,26 @@ begin
|
|
|
CopyFile(PChar(ASourceFile), PChar(sTempFile), False);
|
|
|
RemoveHead(sTempFile);
|
|
|
AutoDecryptFile(sTempFile, AResultFile);
|
|
|
+ RecoverFileHead(AResultFile);
|
|
|
finally
|
|
|
DeleteFile(PChar(sTempFile));
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+function FileEncrypted(const AFileName: string): Boolean;
|
|
|
+var
|
|
|
+ FileHead: TDrawingFileHead;
|
|
|
+ FileStream: TFileStream;
|
|
|
+begin
|
|
|
+ FileStream := TFileStream.Create(AFileName, fmOpenRead);
|
|
|
+ try
|
|
|
+ FileStream.ReadBuffer(FileHead, SizeOf(TDrawingFileHead));
|
|
|
+ Result := FileHead.ProductName = ProductName;
|
|
|
+ finally
|
|
|
+ FileStream.Free;
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
procedure EncryptFile(const AFileName: string);
|
|
|
var
|
|
|
fileStream: TFileStream;
|
|
@@ -451,6 +493,12 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+procedure TEncryptConnection.UnEncryptSave;
|
|
|
+begin
|
|
|
+ RecoverFileHead(FFileName);
|
|
|
+
|
|
|
+end;
|
|
|
+
|
|
|
{ TConnection }
|
|
|
|
|
|
procedure TConnection.Close;
|
|
@@ -458,11 +506,6 @@ begin
|
|
|
Connection.Close;
|
|
|
end;
|
|
|
|
|
|
-procedure TConnection.Save;
|
|
|
-begin
|
|
|
-
|
|
|
-end;
|
|
|
-
|
|
|
{ TCommonConnection }
|
|
|
|
|
|
constructor TCommonConnection.Create;
|
|
@@ -493,7 +536,7 @@ begin
|
|
|
Close;
|
|
|
if FileExists(AFileName) then
|
|
|
begin
|
|
|
- DecryptFile(AFileName);
|
|
|
+ //DecryptFile(AFileName);
|
|
|
InnerOpen(AFileName);
|
|
|
end
|
|
|
else
|