programmer1337 Posted July 25, 2013 at 01:49 AM Report #519874 Posted July 25, 2013 at 01:49 AM (edited) Boas pessoal, Estive a pesquisar pela net e deparei-me com esta biblioteca da Microsoft compressapi.h que permite comprimir ficheiros estive a ler o site (http://msdn.microsoft.com/en-us/library/windows/desktop/hh437596%28v=vs.85%29.aspx) e o que acontece é que não encontrei nenhum sitio onde pudesse fazer o download dela... alguem ja usou? ou sabe onde a posso descarregar? Cumps E desde já um mto obrigado Edited July 25, 2013 at 01:49 AM by programmer1337
pikax Posted July 25, 2013 at 08:48 AM Report #519884 Posted July 25, 2013 at 08:48 AM Qual e' a tua IDE e SO? Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Flinger Posted July 25, 2013 at 10:39 AM Report #519904 Posted July 25, 2013 at 10:39 AM Run-time requirements The Compression API is available beginning with the Windows 8 or Windows Server 2012. 1 Report
programmer1337 Posted July 25, 2013 at 05:13 PM Author Report #519979 Posted July 25, 2013 at 05:13 PM Estou a utilizar o Miscrosoft Visual Studio 2010 em windows 7, dá para fazer download dela?
pikax Posted July 25, 2013 at 05:17 PM Report #519980 Posted July 25, 2013 at 05:17 PM Nop, So' com o VS 12 e com o windows 8! Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
HappyHippyHippo Posted July 25, 2013 at 05:39 PM Report #519984 Posted July 25, 2013 at 05:39 PM (edited) coitada da zlib ... sempre relegada para ultimo e sem usada no final ... Edited July 25, 2013 at 06:04 PM by HappyHippyHippo 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
programmer1337 Posted July 25, 2013 at 06:02 PM Author Report #519989 Posted July 25, 2013 at 06:02 PM Pikax quer dizer que mesmo que instale o VS12 não consigo por isso a funcionar no W7 certo? HappyHappyHippo a libzip tem boas taxas de compressão?
HappyHippyHippo Posted July 25, 2013 at 06:04 PM Report #519991 Posted July 25, 2013 at 06:04 PM (edited) HappyHappyHippo a libzip tem boas taxas de compressão? estás com medo que fiquem sem espaço no disco ? --- ps : alterei a libraria, pretendia dizer zlib e tinha libzip Edited July 25, 2013 at 06:05 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pikax Posted July 25, 2013 at 06:24 PM Report #519995 Posted July 25, 2013 at 06:24 PM Pikax quer dizer que mesmo que instale o VS12 não consigo por isso a funcionar no W7 certo? Sim Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Flinger Posted July 25, 2013 at 09:01 PM Report #520008 Posted July 25, 2013 at 09:01 PM Nop, So' com o VS 12 e com o windows 8! Não vejo na página nenhuma obrigatoriedade de usar o VS2012. Apenas Windows 8 ou Windows Server 2012
pikax Posted July 25, 2013 at 09:16 PM Report #520012 Posted July 25, 2013 at 09:16 PM (edited) Um pouco de pesquisa e vi que o que disse estava errado, existe formas de usar o SDK do windows 8 no Visual Studio 2010 aqui outro EDIT: Download do SKD Edited July 25, 2013 at 09:19 PM by pikax Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
programmer1337 Posted July 26, 2013 at 01:47 AM Author Report #520032 Posted July 26, 2013 at 01:47 AM Boas pessoal mais uma vez 😃 seguindo os vossos conselhos instalei o VS2012 e instalei o W8 SDK copiei o codigo que a microsoft fornece para o compressor (http://msdn.microsoft.com/en-us/library/windows/desktop/hh968104%28v=vs.85%29.aspx) mas está a dar uns erros de link que não percebo o porquê de aparecerem :X importam-se de dar uma vista de olhos? http://img607.imageshack.us/img607/3927/ksg7.png Cumprimentos e desde já um mto obrigado
pikax Posted July 26, 2013 at 08:33 AM Report #520037 Posted July 26, 2013 at 08:33 AM Segundo esta pagina tens que linkar a biblioteca Cabinet.lib ficaria +/- assim(nao testado): #include <Windows.h> #include <stdio.h> #include <compressapi.h> #pragma comment(lib, "Cabinet.lib") void wmain(_In_ int argc, _In_ WCHAR *argv[]) { COMPRESSOR_HANDLE Compressor = NULL; PBYTE CompressedBuffer = NULL; PBYTE InputBuffer = NULL; HANDLE InputFile = INVALID_HANDLE_VALUE; HANDLE CompressedFile = INVALID_HANDLE_VALUE; BOOL DeleteTargetFile = TRUE; BOOL Success; SIZE_T CompressedDataSize, CompressedBufferSize; DWORD InputFileSize, ByteRead, ByteWritten; LARGE_INTEGER FileSize; ULONGLONG StartTime, EndTime; double TimeDuration; if (argc != 3) { wprintf(L"Usage:\n\t%s <input_file_name> <compressd_file_name>\n", argv[0]); return; } // Open input file for reading, existing file only. InputFile = CreateFile( argv[1], // Input file name GENERIC_READ, // Open for reading FILE_SHARE_READ, // Share for read NULL, // Default security OPEN_EXISTING, // Existing file only FILE_ATTRIBUTE_NORMAL, // Normal file NULL); // No attr. template if (InputFile == INVALID_HANDLE_VALUE) { wprintf(L"Cannot open \t%s\n", argv[1]); goto done; } // Get input file size. Success = GetFileSizeEx(InputFile, &FileSize); if ((!Success)||(FileSize.QuadPart > 0xFFFFFFFF)) { wprintf(L"Cannot get input file size or file is larger than 4GB.\n"); goto done; } InputFileSize = FileSize.LowPart; // Allocate memory for file content. InputBuffer = (PBYTE)malloc(InputFileSize); if (!InputBuffer) { wprintf(L"Cannot allocate memory for uncompressed buffer.\n"); goto done; } // Read input file. Success = ReadFile(InputFile, InputBuffer, InputFileSize, &ByteRead, NULL); if ((!Success)||(ByteRead != InputFileSize)) { wprintf(L"Cannot read from \t%s\n", argv[1]); goto done; } // Open an empty file for writing, if exist, overwrite it. CompressedFile = CreateFile( argv[2], // Compressed file name GENERIC_WRITE|DELETE, // Open for writing; delete if cannot compress 0, // Do not share NULL, // Default security CREATE_ALWAYS, // Create a new file; if exist, overwrite it FILE_ATTRIBUTE_NORMAL, // Normal file NULL); // No template if (CompressedFile == INVALID_HANDLE_VALUE) { wprintf(L"Cannot create file \t%s\n", argv[2]); goto done; } // Create an XpressHuff compressor. Success = CreateCompressor( COMPRESS_ALGORITHM_XPRESS_HUFF, // Compression Algorithm NULL, // Optional allocation routine &Compressor); // Handle if (!Success) { wprintf(L"Cannot create a compressor %d.\n", GetLastError()); goto done; } // Query compressed buffer size. Success = Compress( Compressor, // Compressor Handle InputBuffer, // Input buffer, Uncompressed data InputFileSize, // Uncompressed data size NULL, // Compressed Buffer 0, // Compressed Buffer size &CompressedBufferSize); // Compressed Data size // Allocate memory for compressed buffer. if (!Success) { DWORD ErrorCode = GetLastError(); if (ErrorCode != ERROR_INSUFFICIENT_BUFFER) { wprintf(L"Cannot compress data: %d.\n", ErrorCode); goto done; } CompressedBuffer = (PBYTE)malloc(CompressedBufferSize); if (!CompressedBuffer) { wprintf(L"Cannot allocate memory for compressed buffer.\n"); goto done; } } StartTime = GetTickCount64(); // Call Compress() again to do real compression and output the compressed // data to CompressedBuffer. Success = Compress( Compressor, // Compressor Handle InputBuffer, // Input buffer, Uncompressed data InputFileSize, // Uncompressed data size CompressedBuffer, // Compressed Buffer CompressedBufferSize, // Compressed Buffer size &CompressedDataSize); // Compressed Data size if (!Success) { wprintf(L"Cannot compress data: %d\n", GetLastError()); goto done; } EndTime = GetTickCount64(); // Get compression time. TimeDuration = (EndTime - StartTime)/1000.0; // Write compressed data to output file. Success = WriteFile( CompressedFile, // File handle CompressedBuffer, // Start of data to write CompressedDataSize, // Number of byte to write &ByteWritten, // Number of byte written NULL); // No overlapping structure if ((ByteWritten != CompressedDataSize) || (!Success)) { wprintf(L"Cannot write compressed data to file: %d.\n", GetLastError()); goto done; } wprintf( L"Input file size: %d; Compressed Size: %d\n", InputFileSize, CompressedDataSize); wprintf(L"Compression Time(Exclude I/O): %.2f seconds\n", TimeDuration); wprintf(L"File Compressed.\n"); DeleteTargetFile = FALSE; done: if (Compressor != NULL) { CloseCompressor(Compressor); } if (CompressedBuffer) { free(CompressedBuffer); } if (InputBuffer) { free(InputBuffer); } if (InputFile != INVALID_HANDLE_VALUE) { CloseHandle(InputFile); } if (CompressedFile != INVALID_HANDLE_VALUE) { // Compression fails, delete the compressed file. if (DeleteTargetFile) { FILE_DISPOSITION_INFO fdi; fdi.DeleteFile = TRUE; // Marking for deletion Success = SetFileInformationByHandle( CompressedFile, FileDispositionInfo, &fdi, sizeof(FILE_DISPOSITION_INFO)); if (!Success) { wprintf(L"Cannot delete corrupted compressed file.\n"); } } CloseHandle(CompressedFile); } } Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
programmer1337 Posted July 26, 2013 at 11:52 AM Author Report #520063 Posted July 26, 2013 at 11:52 AM Olá mais uma vez estive a testar aquilo que disseste e deu-me o seguinte erro http://img801.imageshack.us/img801/2203/4kdp.png como a Microsoft já não disponiblisa o Cabinet SDK fiz download do mesmo por aqui (web.archive.org/web/20070403215326/http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/cabsdk.exe) Tirei o Cabinet.dll que vem no ficheiro desse link so que agr nao sei onde o colocar :X alguma ideia Cumprimentos e mais uma vez obrigado
HappyHippyHippo Posted July 26, 2013 at 12:54 PM Report #520067 Posted July 26, 2013 at 12:54 PM coitada da zlib ... sempre relegada para ultimo e sempre usada no final ... ainda vais a tempo ... 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pikax Posted July 26, 2013 at 01:02 PM Report #520068 Posted July 26, 2013 at 01:02 PM Citação Olá mais uma vez estive a testar aquilo que disseste e deu-me o seguinte erro http://img801.imageshack.us/img801/2203/4kdp.png como a Microsoft já não disponiblisa o Cabinet SDK fiz download do mesmo por aqui (web.archive.org/web/20070403215326/http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/cabsdk.exe) Tirei o Cabinet.dll que vem no ficheiro desse link so que agr nao sei onde o colocar :X alguma ideia Cumprimentos e mais uma vez obrigado Tens que ter o WINDOWS 8!!!! Usa o que o HappyHippyHippo falou! Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
programmer1337 Posted July 26, 2013 at 10:56 PM Author Report #520141 Posted July 26, 2013 at 10:56 PM Muito obrigado pessoal pela ajuda que me deram 🙂 instalei o W8 e já realizei os testes que queria 😛 thanks
HappyHippyHippo Posted July 27, 2013 at 12:26 AM Report #520146 Posted July 27, 2013 at 12:26 AM Muito obrigado pessoal pela ajuda que me deram 🙂 instalei o W8 e já realizei os testes que queria 😛 thanks agora obriga toda a gente que usa o software que estas a criar a usar o W8 ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pwseo Posted July 27, 2013 at 09:44 AM Report #520151 Posted July 27, 2013 at 09:44 AM Muito obrigado pessoal pela ajuda que me deram 🙂 instalei o W8 e já realizei os testes que queria 😛 thanks Algo me parece errado nisso... Ui, espera!: agora obriga toda a gente que usa o software que estas a criar a usar o W8 ... Pois, bem me parecia que algo estava mal. Mudar de sistema operativo para poder utilizar uma API de compressão num programa... é uma inversão de prioridades engraçada. E como o HappyHippyHippo referiu, agora o teu programa garantidamente não funciona em nenhum computador com Windows anterior ao 8. Falaram-te da zlib acima. Não servia? 🙂
NEDM64 Posted August 1, 2013 at 10:12 PM Report #520647 Posted August 1, 2013 at 10:12 PM Falaram-te da zlib acima. Não servia? 🙂 Tudo Microsoft!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now