⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eccfileproperties.cpp

📁 ECC (椭圆曲线加密算法) 的源代码c++builder,很难得到的源代码
💻 CPP
字号:
/* ==========================================================================

	Ecc - Erik's Code Collection
	Copyright (C) 2003 - Erik Dienske

	This file is part of Ecc.

	Ecc is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.

	Ecc is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with Ecc; if not, write to the Free Software Foundation, Inc.,
	59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
	
===========================================================================*/

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "EccFileProperties.h"
#include "EccFile.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------------------------------------------------------

//===========================================================================
namespace ecc {
//===========================================================================

//---------------------------------------------------------------------------

TFileProperties::TFileProperties()
{
	FInitialized = false;
}
//---------------------------------------------------------------------------

TFileProperties::TFileProperties(String fname)
{
	GetFileProps(fname);
}
//---------------------------------------------------------------------------

bool TFileProperties::GetFileProps(const String fname)
{
	FName = fname;
	FError = false;
	FErrorMessage = "";
	FInitialized = false;

	// Get file handle:
	WIN32_FIND_DATA fi;
	ZeroMemory(&fi, sizeof(fi));
	FHandle = FindFirstFile(fname.c_str(), &fi);
	if (FHandle == INVALID_HANDLE_VALUE)
	{
		FError = true;
		FErrorMessage = __FILE__ ": CreateFile() failed. Line: " + IntToStr(__LINE__) + ". Func: " __FUNC__;
		FInitialized = false;
		return false;
	}

	// Set file attributes:
	SetFileAttributes(fi);

	// Get file size:
	SetFileSize(fi);

	// Get file date/time:
	SetFileDateTime(fi);

	// Close file handle:
	FindClose(FHandle);
	FHandle = NULL;

	FInitialized = true;
	return true;
}
//---------------------------------------------------------------------------

String TFileProperties::GetAttributeStr() const
{
	String str;
	str += FArchive		? "A" : "";
	str += FCompressed	? "C" : "";
	str += FHidden		? "H" : "";
	str += FReadOnly	? "R" : "";
	str += FSystem	 	? "S" : "";
	str += FTemporary 	? "T" : "";
	return str;
}
//---------------------------------------------------------------------------

void TFileProperties::SetFileAttributes(const WIN32_FIND_DATA &fi)
{
	FArchive 	= fi.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE;
	FCompressed	= fi.dwFileAttributes & FILE_ATTRIBUTE_COMPRESSED;
	FHidden 	= fi.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN;
	FReadOnly	= fi.dwFileAttributes & FILE_ATTRIBUTE_READONLY;
	FSystem 	= fi.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM;
	FTemporary 	= fi.dwFileAttributes & FILE_ATTRIBUTE_TEMPORARY;
	FDir 		= fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;

	FdwFileAttributes = fi.dwFileAttributes;
}
//---------------------------------------------------------------------------

void TFileProperties::SetFileSize(const WIN32_FIND_DATA &fi)
{
	// Helper union:
	union
	{
		struct
		{
			unsigned int lo;
			unsigned int hi;
		};
		unsigned long size;
	} u_size;

	u_size.hi = fi.nFileSizeHigh;
	u_size.lo = fi.nFileSizeLow;
	
	FSize = u_size.size;
}
//---------------------------------------------------------------------------

void TFileProperties::SetFileDateTime(const WIN32_FIND_DATA &fi)
{
	// Get file times:
	FCreationTime 	= FILETIMEToTDateTime(fi.ftCreationTime);
	FLastAccessTime	= FILETIMEToTDateTime(fi.ftLastAccessTime);
	FLastWriteTime	= FILETIMEToTDateTime(fi.ftLastWriteTime);
}
//---------------------------------------------------------------------------

String TFileProperties::GetHumanSize()
{
	return FloatToHumanFileSize(FSize);
}
//---------------------------------------------------------------------------

String TFileProperties::GetCreationTimeStr() const
{
	return FCreationTime.DateTimeString();
}
//---------------------------------------------------------------------------

String TFileProperties::GetLastAccessTimeStr() const
{
	return FLastAccessTime.DateTimeString();
}
//---------------------------------------------------------------------------

String TFileProperties::GetLastWriteTimeStr() const
{
	return FLastWriteTime.DateTimeString();
}
//---------------------------------------------------------------------------

//===========================================================================
} // namespace ecc;
//===========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -