|
Yes, that's where I started.
|
|
|
|
|
I think you're getting confused between two different things. 7-Zip is an application that can compress and decompress several types of file, whereas the LZMA SDK is for compressing and decompressing using the LZMA algorithm.
If all you want to do is create ZIP files, then zlib would probably be a better option: http://www.zlib.net/[^] or maybe system.io.compression.zipfile[^] since you're using C#.
|
|
|
|
|
LZMA SDK Copyright (C) 1999-2007 Igor Pavlov
LZMA is default and general compression method of 7z format
in 7-Zip compression program (www.7-zip.org). LZMA provides high
compression ratio and very fast decompression.
-----------------------
It doesn't mention .zip, or the other compression schemes 7 Zip handles, as coming out of LZMA, does it?
Sorry I bothered you.
John
|
|
|
|
|
Like most of these zip programs you can change the compression format off the command line.
So set a command line on your compiler and follow it. The documentation to Z-Zip says
Type switches
Switch: -t7z
Format: 7Z
Example filename: archive.7z (default option)
Switch: -tgzip
Format: GZIP
Example filename: archive.gzip, archive.gz
Switch: -tzip
Format: ZIP
Example filename: archive.zip (compatible)
Switch: -tbzip2
Format: BZIP2
Example filename: archive.bzip2
Switch: -ttar
Format: TAR
Example filename: tarball.tar (UNIX and Linux)
Switch: -tiso
Format: ISO
Example filename: image.iso (may not be supported)
Switch: -tudf
Format: UDF
Example filename: disk.udf
So setup a command line to some file with -tZip and follow what it does.
In vino veritas
|
|
|
|
|
Actually what iam doing now means i created one dialog on that iam drawing a image everything is working fine but its flickering continuously.so now my idea was without dialog i want to save that drawing part in memory so that it can be used for showing the report.
modified 15-May-14 5:03am.
|
|
|
|
|
What? Could you please elaborate a bit your scenario?
Veni, vidi, vici.
|
|
|
|
|
You have to be more specific. What does a dialog have to do with how you save an image? And what do you mean by saving the image directly in memory?
|
|
|
|
|
What image and where are you trying to save it?
|
|
|
|
|
|
|
I'm trying to derive from CMFCPropertyGridColorProperty and cannot override the virtual function because my derived class is not a friend of CMFCPropertyGridCtrl .
Here is a minimal representation of the problem.
class CMFCPropertyGridCtrl
{
friend class CMFCPropertyGridColorProperty;
protected:
CRect m_rectList; };
class CMFCPropertyGridColorProperty
{
friend class CMFCPropertyGridCtrl;
public:
virtual void AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin);
protected:
CMFCPropertyGridCtrl* m_pWndList;
};
void CMFCPropertyGridColorProperty::AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin)
{
m_pWndList->m_rectList.left += 20;
}
class MyPropertyGrid : public CMFCPropertyGridColorProperty
{
virtual void AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin);
};
void MyPropertyGrid::AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin)
{
m_pWndList->m_rectList.left += 40; }
trying to compile this, I get the following understandable error :
error C2248: 'CMFCPropertyGridCtrl::m_rectList' : cannot access protected member declared in class 'CMFCPropertyGridCtrl'
1> d:\projects\testfriend\testfriend\testfriend.cpp(21) : see declaration of 'CMFCPropertyGridCtrl::m_rectList'
1> d:\projects\testfriend\testfriend\testfriend.cpp(17) : see declaration of 'CMFCPropertyGridCtrl'
---
I'd like to be able to override the method
virtual void AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin);
void CMFCPropertyGridColorProperty::AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin)
{
ASSERT_VALID(this);
ASSERT_VALID(m_pWndList);
rectSpin.SetRectEmpty();
rectEdit = m_Rect;
rectEdit.DeflateRect(0, 2);
int nMargin = m_pWndList->m_bMarkModifiedProperties && m_bIsModified ? m_pWndList->m_nBoldEditLeftMargin : m_pWndList->m_nEditLeftMargin;
rectEdit.left = m_pWndList->m_rectList.left + m_pWndList->m_nLeftColumnWidth + m_Rect.Height() + AFX_TEXT_MARGIN - nMargin + 1;
AdjustButtonRect();
rectEdit.right = m_rectButton.left;
}
To change the edit box position in the CMFCPropertyGridColorProperty class; but since I do not have access to the CMFCPropertyGridCtrl class (via m_pWndList), I cannot really override it.
Any hints/tips or something else that I might have missed?
Thanks.
Max.
I'd rather be phishing!
|
|
|
|
|
Why don't you inherit from both classes?
Veni, vidi, vici.
|
|
|
|
|
YUCK!!!
A colleague offered the same suggestion.
I tried and it works... but I do not really like it.
I'd rather be phishing!
|
|
|
|
|
Maximilien wrote: I tried and it works... but I do not really like it. You will love multiple inheritance.
Veni, vidi, vici.
|
|
|
|
|
Yeah, but ultimately it does not work.
I cannot inherit from both CMFCPropertyGridColorProperty and CMFCPropertyGridCtrl.
The CMFCPropertyGridCtrl is a UI container class containing instances of CMFCPropertyGridProperty.
the CMFCPropertyGridCtrl is constructed before the CMFCPropertyGridProperty are constructed; and if I multiple inherit from CMFCPropertyGridCtrl , there will be 2 "instances" of the class and there should be only one.
I'm still working on something.
I'd rather be phishing!
|
|
|
|
|
You could make a class inheriting from CMFCPropertyGridCtrl , say MaximilenMFCPropertyGridCtrl which only purpose is being a good friend of MyPropertyGrid .
Veni, vidi, vici.
|
|
|
|
|
Hello. I am trying to write some wave data into pcm file. I pass this data and its length to the write function but it raises this exception An unknown error occurred while accessing file ..... file path + name ....
I am using following line code to open this file and write contents into it
CFile* pFile = new CFile;
pFile->Open("Output.pcm", CFile::modeCreate|modeReadWrite);
pFile->Write((void*)pData, dwLength);
pFile->Close();
What could be wrong here? Thanks for any input.
This world is going to explode due to international politics, SOON.
|
|
|
|
|
Why didn't you check Open return value (see, for instance, the documentation[^])?
Veni, vidi, vici.
|
|
|
|
|
File opens successfully. It is the Write() function that is raising this exception.
This world is going to explode due to international politics, SOON.
|
|
|
|
|
Since the exception is "An unknown error occurred while accessing file ",
Do you still get errors with the unicode syntax _T( ) , e.g CFile file (_T ("File.txt"), CFile::modeReadWrite) );
CFile file;
CFileException e;
if (file.Open (_T ("File.txt"), CFile::modeReadWrite, &e)) {
}
else {
e.ReportError ();
}
|
|
|
|
|
The file opens successfully. The problem occurs when I try to write something using it. Please see me code again, I have commented it there as well.
This world is going to explode due to international politics, SOON.
|
|
|
|
|
The error should be obvious, the inners of write look like this..
virtual void Write(
const void* lpBuf,
UINT nCount
);
Parameters
lpBuf - A pointer to the user-supplied buffer that contains the data to be written to the file.
nCount - The number of bytes to be transferred from the buffer. For text-mode files, carriage return–linefeed pairs are counted as single characters.
Official MSDN example:
CFile cfile;
cfile.Open(_T("Write_File.dat"), CFile::modeCreate | CFile::modeReadWrite);
char pbufWrite[100];
memset(pbufWrite, 'a', sizeof(pbufWrite));
cfile.Write(pbufWrite, 100);
cfile.Flush();
http://msdn.microsoft.com/en-us/library/esb6sz20.aspx[^]
|
|
|
|
|
AmbiguousName wrote: The file opens successfully. How can you be sure of that, since you do not check the return status?
|
|
|
|
|
Supercoder has given you the most likely answer although I agree with Richard you haven't conclusively shown the file is open.
If the file doesn't exist you could have a problem because you probably need to open it with
CFile::modeCreate | CFile::modeReadWrite
Stick a debug point on the fail case and check.
For the write you have a single line
=> pFile->Write((void*)pData, dwLength);
Either
1.) pData is not a pointer to an actual array of data
2.) dwLength has not been set or exceeds the data in pData
So all you have to do is work out which of the three things you got wrong and fix it.
If you can't fix it we need to see how you defined pData and where you set dwLength probably.
In vino veritas
modified 15-May-14 10:36am.
|
|
|
|
|
include wchar.h and try
WCHAR* pData = L"Testing Data";
DWORD dwLength = wcslen(pData);
CFile* pFile = new CFile;
pFile->Open(L"Output.pcm, CFile::modeCreate | CFile::modeReadWrite);
pFile->Write((void*)pData, dwLength * sizeof(WCHAR)); // exception raised here
pFile->Close();
|
|
|
|