|
Sorry, don't know - IStorage isn't something I've used
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Caslen wrote: I've been rooting through the code (not mine) and it uses IStorage objects opened with the STGM_SHARE_EXCLUSIVE flag set. Is there any condition where this might not prevent a second copy from being opened?
Yes. It prevents others from subsequently opening the object in any mode.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
I'm unsure of how the file is prevented from opening and particularly in my case where it clearly is allowed to be opened in some (but not all) cases.
On site there are several versions of software in use - it is possible that an older version does not use the STGM_SHARE_EXCLUSIVE flag. If this older version first opened the data file would the new version with the flag still be able to open it?
What about the opposite situation where the new verion opens the data file first - would the older version be 'aware' that the file is already open if it doesn't recognise the STGM_SHARE_EXCLUSIVE flag?
Thanks for your help on this.
|
|
|
|
|
The file system keeps track of what files are open and with what locking/sharing attributes. When you use an API to open a file, it will ask the file system if that is currently allowable. If it's not, the API will return a value indicating such.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Ok thats beginning to make more sense, the older version of software is probably opening the file, not marking it as open so the newer version can still open it, the newer version is modifying the data file and saving it before the older version then saves an unmodified data file. This ties in with the customers complaint that he is losing changes he's making to his files.
A couple more questions (sorry!) and probably drifting out of scope here but...
1. Would the file system itself be smart enough to know that a file has been changed since it was opened? (ie if another PC modifies the file between the first PC opening it and closing it)
2. On a typical file system would it be possible to automatically mark a file as already open?
Thanks
Steve
|
|
|
|
|
Caslen wrote: 1. Would the file system itself be smart enough to know that a file has been changed since it was opened? (ie if another PC modifies the file between the first PC opening it and closing it)
No.
Caslen wrote: 2. On a typical file system would it be possible to automatically mark a file as already open?
What do you mean by "automatically?"
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
When the file system receives a request to open a file it marks the file as open and refuses access to further requests to open it until the first user closes his copy. This could cause problems - what if the first user never closes the file?
|
|
|
|
|
Caslen wrote: what if the first user never closes the file?
Then subsequent requests will fail.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Hello,
I formed class template that represent two dimensional array :
template<class T>
class Array2D {
protected:
public:
T *data;
const unsigned rows, cols, size;
Array2D(unsigned r, unsigned c) : rows(r), cols(c), size(r*c) {
data = new T[size];
}
~Array2D() { delete data; }
void setValue(unsigned row, unsigned col, T value) {
data[(row*cols)+col] = value;
}
T getValue(unsigned row, unsigned col) const {
return data[(row*cols)+col];
}
};
And one dimensional data array is present:
array<double>^ input={20,4,6,15,7,2,1,8,9};
I have function it's inputs are class template and one dimensional data array.I set one dimensional array values to class template :
void function(Array2d<double> &x,array< double>^ input,int width,int,height)
{
double temp;
temp1=0;
double temp2;
int i,j;
for(i=0;i<width;i++)
for(j=0;j<height;j++)
{
{ temp2=input[temp1];
x.setvalue(i,j,temp2);
temp1=temp1+1;
}
}
}
After all I declared 3x3 class template:
Array2D<double>A(3,3);
I sent it to function:
function(A,input,3,3);
And I tried to print Array2D values:
double temp;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
{temp=A.getValue(i,j)
Console:Write("{0}",temp);}}
I executed this applicaiton in CLR Application in Visual Studio 2008 amd it worked .But I want to implement this code on Windows Form Application,and it gave error like these on Form Application:
error C2065: 'Array2D' : undeclared identifier
error C2065: 'A' : undeclared identifier
How can I overcome this error or where should I locate class template?
Best Regards...
|
|
|
|
|
emira67 wrote: error C2065: 'Array2D' : undeclared identifier
error C2065: 'A' : undeclared identifier
If you don't know how to resolve those compiler errors then you are attempting something that is beyond your current C++ programming capacity. You need to go back to basics and learn more about them before you move on to more advanced subjects.
Also I do not recommend moving on to using C++/CLI (managed or mixed mode) until you have a firm grasp of C++.
|
|
|
|
|
emira67 wrote: How can I overcome this error...
You might want to ask in the proper forum. Those that are in the know may not see it otherwise.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Remember what I told you before[^]?!
emira67 wrote: In fact I declared this items!!!
But obviously not somewhere that the code that used the items was able to see them.
emira67 wrote: Could you help me please?
If you posted some more detail (the filename that you put the template class & function declaration in, the code that uses the matrix and function), then possibly. However, your code is syntactically and semantically correct - you've just organised it so that the code that uses those things can't see them. Check through your code to understand why!
Guess what - it still applies.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
I am new for vc++, i am doing project on vc++2008 clr base windows form application. not able to use inpout.dll in my project please help. if possible give example. thanks
|
|
|
|
|
PIYUSH1966 wrote: not able to use inpout.dll in my project
Do you mean inpout32.dll[^]?
PIYUSH1966 wrote: if possible give example
You mean like the free for download example from the site where you get the DLL?
Inpout32.dll for Windows 98/2000/NT/XP PDF Print E-mail
A versatile Dynamic Link Library for parallel port interfacing. Works seam less with all versions of windows (WIN 98, NT, 200 and XP). Compatible with inpout32.dll comes with the book Parallel Port Complete without any modification. Download it for free with source code.
|
|
|
|
|
Hi
I have written a downloader program with MFC classes : CInternetSession/CHttpConnection/CHttpFile
It works just fine,
But now I want to change it so it can download from sharing web sites like RAPIDSHARE
I tried these ways to send the username & password to the web site:
1. pInternetSession->GetHttpConnection(sServer, nPort, sUser, sPassword);
2. pInternetSession->GetHttpConnection(sUser + _T(":") + sPassword + _T("@") + sServer, nPort);
3. pFile->AddRequestHeaders(Base64Coder(_T("Authorization: Basic ") + sUser + _T(":") + sPassword));
But none of them worked!!! (I have searched a lot but I did not find any other way yet!)
Any other idea!
Regrads
Hadi
www.logicsims.ir
|
|
|
|
|
Hi
I have a client/server project with MFC class CSocket.
Everything is ok except that SOMETIMES client sends a request(a structure) to the server but the server DOES NOT take it!
I put a lot of TRACE and message boxes and I'm sure all my codes is ok (more than 20 times runs ok, but after that it just hangs!)
I also tested the MFC sample : chatsrvr/chatter program, if you type some chars and press enter quickly, after 5 or 10 lines the server will not get any more data!!!
Is there any bug or trick or something out there!?
Regrads
Hadi
www.logicsims.ir
|
|
|
|
|
Hadi Dayvary wrote: Is there any bug or trick or something out there!?
There are so many bugs it's incredible. However almost every one of them is a bug in the code written by people like me and you.
The trick to Server development is to learn multi-threading, it's not easy. The trick to Server Socket development is to learn the first trick and then learn Socket development, which again is not that easy.
|
|
|
|
|
My code is completly multithread,
As I said I have tested some other example (like the one in MSDN) and they have this problem too.
www.logicsims.ir
|
|
|
|
|
|
|
Thank you so much
www.logicsims.ir
|
|
|
|
|
Hello,
i found many responses for this issue, but i like to use this function:
SetDialogBkColor();
in :
BOOL CMyDialogApp::InitInstance()
but this don't take any changes, is this obsolete in VS 8, i my projects with VS6 this works fine??
About my project: is tabbed with many child dialogs, each tab have his own CDialog.
Is this possible to solve with this function above?
thanks for any help!
termal
|
|
|
|
|
termal wrote: is this obsolete in VS 8
read here[^]
This page clearly states
CWinApp::SetDialogBkColor
This function is obsolete.
Remarks
To set the background color of the dialog box, you must handle WM_CTLCOLOR. This message changes the color of the specified dialog box only.
Regards,
Sandip.
|
|
|
|
|
|
You're returning the handle to the brush for all the controls. That is why all controls change color.
You must return the required brush handle only for CTLCOLOR_DLG .
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|