|
Hi All,
I have to handle text files of larger sizes ranges from 10GB and more which are exported from some application softwares. The text files contains the required information scattered throughout the file. I need to gather all those information in a particular format to do further analysis. Say for example, if the input file contains as following:
#10 // time stamp 10
0!
1(
1=
#15 // time stamp 15
1!
0:
I have to gather the information as,
! 10 0 15 1
( 10 1
= 10 1
: 10 0
So please suggest me how to store the above gathered information either as a vector, class arrays, or anything else like database e.t.c., The information surely occupies size larger than 10GB. And i have to access the gathered information for further progress.
With Regards,
Sangeetha.
|
|
|
|
|
Hi...
I am working with a Dialog based application. In which i am trying to add features like ptint, help etc. we can achieve this by making CFormView is the base class before making a SDI application. But I dont want the tittle bar & menu. Anybody suggest way of doing this.....
Thanks in advance
sairam
|
|
|
|
|
Hello everyone,
Through my testing and study of RAII (Resource Acquisition Is Initialization) pattern, I think it can solve resource release issue in the following two situations,
1. Local function object (on stack);
2. Object (either on heap or stack) pointer by auto_ptr;
But it has the limitation that the object pointed by a normal pointer and allocated on heap (using new or new[]) can not be automatically released, either the function returns normally or during exception stack unwinding. Is that correct?
thanks in advance,
George
|
|
|
|
|
You can. You could write your own classes or - as I'd recommend - use boost smart pointers.
basically, there is:
scoped_ptr<T> pT(new T) - freed when pT leaves scope
scoped_array<T> paT(new T[77]) - freed when paT leaves scope
shared_ptr<T> pT(new T) - can be assigned to another shared_ptr and deletes T when the last reference goes out of scope
shared_array<T> pT(new T[77]) - as above, but uses delete[]
With shared_ptr you can use a custom deleter, which allows to wrap arbitrary ressources, e.g. malloc'ed or GlobalAlloc'ed pointers.
I've written two articles that give a bit more detail:
Smart Pointers to boost your code[^] for a thorough introduction
shared_ptr wraps resource handles[^] which demonstrates a slightly quirky but efficient way to use the custom deleter.
|
|
|
|
|
Thanks peterchen,
shared_ptr is good idea. But I think it is not implemented in Visual Studio, right?
BTW: any comments/options about our original question (put your good ideas about shared_ptr aside for a while)? Is my understanding correct?
regards,
George
|
|
|
|
|
George_George wrote: But I think it is not implemented in Visual Studio, right?
Yes, it's part of the boost libraries - however, it's one part that is likely to make it into the next C++ Standard (C++ 0x).
George_George wrote: any comments/options about our original question (put your good ideas about shared_ptr aside for a while)? Is my understanding correct?
I thought I answered that But ok, in more detail:
Many resources like heap allocated pointers are not deleted automatically when leaving scope. However, they can be when using the right tools.
You could introduce a helepr class like this:
template <typename t="">
class ScopePtr
{
T * m_pT;
public:
ScopePtr(T * pT) : m_pT(pT) {}
~ScopePtr() { delete m_pT; }
T * ptr() { return m_pT; }
}
</typename>
and use it like this:
void Foo()
{
ScopePtr<bar> bar(new Bar());
bar.ptr()->Run();
...
}
</bar>
If you add some operator overloads and a lot of insight into the trickier pitfalls of C++ and templates, you end up wiht scoped_ptr.
You can do something similar for each and every type of resource.
However, the need is recognized by many developers, so generic solutions exist (see - I can't put aside the thought of shared_ptr )
There are a few other options, too, like using ScopeGuards[^]
|
|
|
|
|
Thanks peterchen,
Cool trick.
regards,
George
|
|
|
|
|
I am using two functions
-------------------------
STDMETHODIMP get_Path(BSTR *pbstrPath);
STDMETHODIMP put_Path(BSTR pbstrPath);
my piece of code is
----------------------
_bstr_t m_bstrNewPath;
CHAR szFileName[MAX_PATH] = {0};
ZeroMemory(szFileName, sizeof(szFileName));
Edit_GetText(GetDlgItem(m_Dlg, IDC_PathEditCtrl),szFileName, MAX_PATH);
m_bstrNewPath = szFileName;
when i am calling the function it is ok
put_Path(m_bstrNewPath);
but when I am calling the function
get_Path(m_bstrNewPath);
it fires error
Cannot convert '_bstr_t' to 'wchar_t * *'
so please help me how to fix that bug
Rajesh
|
|
|
|
|
The safe way is to:
BSTR temp = 0;
HRESULT hr = get_Path(&temp);
m_bstrNewPath.Attach(temp);
The reason is that get_Path allocates the string and needs to return you a pointer, so the parameter uses double indirection of (chartype) ** .
_bstr_t, for various reasons, cannot safely wrap this operation.
There are a few circumstances where you can avoid the temporary (but you have to know exactly when - and when not). So rather play it safe and use above construct. There is no performance hit involved.
in get_Path, path is an [out] only parameter (i.e. the original valeu is ignored).
If you have a method with an [in/out] parameter, use:
_bstr_t path = ...;
BSTR temp = path.Detach();
HRESULT hr = comObject->ModifyPath(&temp);
path.Attach(temp);
if (FAILED(hr))
{
}
note the different order of attaching vs. error handling.
|
|
|
|
|
Hello everyone,
In the sample, I am wondering what is the life cycle of variable b_? Could we access variable b_ in catch block?
I have this confusion is because,
1. I think b_ is member variable, and we should be able to access it anywhere in the class itself, so we can access b_ in catch block;
2. I think b_ is declared and initialized in try {} block, and catch exceeds the {} of try, so we can not access b_ in catch block.
Which option is correct?
http://www.gotw.ca/gotw/066.htm
class C:
{
B b_;
C::C()
try
: b_( )
{
}
catch( ... )
{
}
};
thanks in advance,
George
|
|
|
|
|
George_George wrote: 2. I think b_ is declared and initialized...
I do see it as the member of the class. The variable is not being declared in the catch block.Had b_ been declared and initialized within the class it won't be available for use in the catch block. You can try doing this using a simple example:
class C
{
int b_;
public:
C():b_(10)
{
try
{
int t = 0;
int j = 20/t;
int c = t;
}
catch( ... )
{
cout<<b_<<endl;
}
}
};
Let me know that if I understood your problem statement correctly...
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
Thanks _AnShUmAn_,
I have verified that we can access b_ in catch block. My question is answered.
regards,
George
|
|
|
|
|
Hi Experts,
1.Is there any simple artical to Darg Drop a file from ListView to ListBox?
2.I have created a file onto harddisk. Can I modify its data from in between?
|
|
|
|
|
Hmmm , I haven't tested this , but , have you enabled Drag and Drop on the HWND of the two controls? That way you will get a drop message when the user drags an item , then you should subclass the controls WndProc and handle only that message (call DefWindowProc when done handling) so that you can emulate Drag & Drop behaviour for the controls. You can do File Manipulation within the message handler itself.
The tears shed in vain
and the hatred and pain
will be nothing but dust
at the end of the day
|
|
|
|
|
Dear all,
can any body explain me what is the need of interface
are they just be usefull only for COM application...
Thanks in advance..
Vikas da
vikas da
|
|
|
|
|
tasumisra wrote: are they just be useful only for COM application...
Use of interfaces increases the modularity and maintainability of the code. Once COM components are developed the entire system is seen as a set of blocks that gel together to provide some functionality. Usually if you want to use third party softwares/functionality interfaces provide you the mechanism for achieving this.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
Hi All,
I want to display files huge files (Hexedit display format)in MFC. Any idea about doing this...
Manjunath S
GESL
Bangalore
|
|
|
|
|
If i have a triangle with following angles(in degree) and lines
A(57),B(62),C(61)
say line between A and B is c
line between B and C is a
line between C and A is b
Now suppose i divide angle B in two equal parts by drawing line on line b from angle B. i.e. i draw a line from point of angle B to line b
then i want to get the coordinates of point where new line touch line b
please suggest if there is any formula or algo to get it
Manoj Kumar Chauhan
|
|
|
|
|
use vector to determine the new line,
then get the cross point of the two lines.
|
|
|
|
|
How to use the vector?
please give any example or sample
Manoj Kumar Chauhan
|
|
|
|
|
It is a mathematical problem.
It can be found in google.
For example, A is at (x1,y1), then vector A,Va=x1+y1i, so Vb=x2+y2i
You can use AxB A.B, hope it helps.
|
|
|
|
|
hi
i have a application to disable the popupmenu start button when it is started at the same time stop buton should be enabled ,like same case for stop button also(disable when it is in on)
with advanced thanks
k.guru moorthy
k.guru moorthy
|
|
|
|
|
Could you please rephrase? I didn't get you...
|
|
|
|
|
i hav a application in system tray based i.e when click the minimise button icon will be moved to system tray .
i finished all (i.e minise to tray and popup menu )
now the problm is there r two button called start ,stop button
when i clicked start button , corresponding function is doing well and the button should be disabled (stop button - enabled)
when i clicked stop button corresponding function is doing well and this button should be disabled (start button - enabled )
u say how to disable.
i tried using getting id of the button but run time error ocurs (NO SYMBOLS ARE LOADED FOR ANY CALL STACK FRAME )
please help me
k.guru moorthy
|
|
|
|
|
If you are using MFC, then you can do it as follows
GetDlgItem(IDC_BUTTON1)->EnableWindow( FALSE );
OR
m_btnButton1.EnableWindow( FALSE );
But why it crashes? How did you disable it?
|
|
|
|