Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // *****************************************************************************
- // * CPP: CPP_ReadWriteAPI
- // * AUTOR: Fakedo0r .:PD-TEAM:.
- // * FECHA: 26.08.2012
- // * CORREO: [email protected]
- // * BLOG: Sub-Soul.blogspot.com / Sub-Soul.com
- // * FUNCIONES: ReadFileAPI
- // WriteFileAPI
- // GetFileSizeAPI
- // FileSizeFormat
- // ByteArrayToString
- // StringToByteArray
- // *****************************************************************************
- // *****************************************************************************
- // <--- #INCLUDE --->
- // *****************************************************************************
- #include <System.hpp>
- #include <SysUtils.hpp>
- #include <vector>
- // *****************************************************************************
- // <--- LECTURA --->
- // *****************************************************************************
- String ReadFileAPI(String sFile) {
- DWORD dwRet = 0;
- int iSize = 0;
- HANDLE hFile;
- std::vector<Byte>vbBuffer;
- hFile = CreateFile(UnicodeString(sFile).c_str(), GENERIC_READ,
- FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- if (hFile == INVALID_HANDLE_VALUE) {
- return 0;
- }
- iSize = GetFileSize(hFile, 0);
- vbBuffer.resize(iSize);
- SetFilePointer(hFile, 0, NULL, FILE_BEGIN);
- ReadFile(hFile, &vbBuffer[0], iSize, &dwRet, NULL);
- CloseHandle(hFile);
- return ByteArrayToString(vbBuffer);
- }
- // ******************************************************************************
- // <--- ESCRITURA --->
- // ******************************************************************************
- Boolean WriteFileAPI(String sPath, String sDatos) {
- Boolean bRet;
- DWORD dwRet = 0;
- HANDLE hFile;
- std::vector<char>vbBuffer;
- vbBuffer = StringToByteArray(sDatos);
- hFile = CreateFile(UnicodeString(sPath).c_str(), GENERIC_WRITE,
- FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- if (hFile == INVALID_HANDLE_VALUE) {
- return false;
- }
- SetFilePointer(hFile, 0, NULL, FILE_END);
- bRet = WriteFile(hFile, &vbBuffer[0], vbBuffer.size(), &dwRet, NULL);
- CloseHandle(hFile);
- return bRet;
- }
- // *****************************************************************************
- // <--- OBTIENE EL TAMAÑO DE ARCHIVO EN BYTES --->
- // *****************************************************************************
- String GetFileSizeAPI(String sFile) {
- double iSize = 0;
- HANDLE hFile;
- hFile = CreateFile(UnicodeString(sFile).c_str(), GENERIC_READ,
- FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- if (hFile == INVALID_HANDLE_VALUE) {
- return 0;
- }
- iSize = GetFileSize(hFile, 0);
- return FileSizeFormat(iSize);
- }
- // *****************************************************************************
- // <--- CONVERSION DE BYTES A KB / MB / GB / TB --->
- // *****************************************************************************
- String FileSizeFormat(double iSize) {
- const B = 1;
- const KB = 1024 * B;
- const MB = 1024 * KB;
- const GB = 1024 * MB;
- const TB = 1024 * MB;
- if (iSize > TB) {
- return FormatFloat("#.## GB", iSize / TB);
- }
- else if (iSize > GB) {
- return FormatFloat("#.## GB", iSize / GB);
- }
- else if (iSize > MB) {
- return FormatFloat("#.## MB", iSize / MB);
- }
- else if (iSize > KB) {
- return FormatFloat("#.## KB", iSize / KB);
- }
- else {
- return FormatFloat("#.## Bytes", iSize);
- }
- }
- // *****************************************************************************
- // <--- CONVIERTE ARRAY DE BYTES EN STRING --->
- // *****************************************************************************
- String ByteArrayToString(std::vector<Byte>vbArray) {
- String sResult;
- Integer I;
- sResult.SetLength(vbArray.size());
- for (I = 0; I < vbArray.size(); I++) {
- sResult[I + 1] = vbArray[I];
- }
- return sResult;
- }
- // *****************************************************************************
- // <--- CONVIERTE STRING EN ARRAY DE CHAR --->
- // *****************************************************************************
- std::vector<char>StringToByteArray(String sCadena) {
- Integer I;
- std::vector<char>vbTemp;
- for (I = 1; I <= sCadena.Length(); I++) {
- vbTemp.push_back(sCadena[I]);
- }
- return vbTemp;
- }
Advertisement
Add Comment
Please, Sign In to add comment