|
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.
|
|
|
|
|
Hi,
thanks for answer, but how to give a return only for dialog??
Can you show me a code-snippet??
In my case CTLCOLOR_DLG is never there!!
if(nCtlColor == CTLCOLOR_DLG)
{
return m_objMyBrush
}
.
.
.
regards
termal
|
|
|
|
|
Hi there,
I built a logger class to trace and debug my programs.
Now I have very real-time dependent programs here and the problem is, when I activate the logger´s 'log to file'-option the program gets too slow to be run properly. But I want/need the logger to be active in normal operation, as well ... so that I can have a look at the output if something went wrong (like a crash).
The time stealer seems to be the opening and closing of the file for every log entry. But I cannot simply open it once and never close it, because the log entrys are only put into the file with the close() call.
This is the logger (which works otherwise fine). Any help with speeding it up, restructuring it or whatever needs to be done is appreciated.
Logger::Logger(void)
{
m_iLogLevel = DEBUG;
m_bToConsole = true;
m_bToFile = false;
m_sFilename = "tts_dump.out";
m_sPath = "./";
m_bFirstWriteToFile = true;
}
Logger::~Logger(void)
{}
Logger* Logger::GetInstance()
{
if( m_pLogger == NULL )
{
m_pLogger = new Logger();
}
return m_pLogger;
}
void Logger::Out( int level, const char* pcszFormat, ... )
{
va_list ap;
va_start( ap, pcszFormat );
if( m_bToConsole )
{
if( pcszFormat && level <= m_iLogLevel )
{
vprintf( pcszFormat, ap );
}
}
if( m_bToFile )
{
if( pcszFormat && level <= m_iLogLevel )
{
string loc = m_sPath;
loc.append( m_sFilename );
if( m_bFirstWriteToFile )
{
m_oFile.open(loc.c_str(), ios::out);
m_bFirstWriteToFile = false;
}
else
{
m_oFile.open(loc.c_str(), ios::out|ios::app);
}
if( !m_oFile )
{
cerr << loc << " kann nicht geöffnet werden!\n";
}
char buffer[1024];
vsprintf_s( buffer, pcszFormat, ap );
m_oFile << buffer;
m_oFile.close();
}
}
va_end( ap );
}
void Logger::SetLogLevel( int level )
{
if( level >= 0 && level <= SYS_ERROR )
m_iLogLevel = level;
}
void Logger::SetConsoleOutput( bool on )
{
m_bToConsole = on;
}
void Logger::SetFileOutput( bool on, string filename, string path )
{
m_bToFile = on;
}
Cheers
Souldrift
|
|
|
|
|
I'd suggest rewriting it so that you don't need to close it to write items to the file - you've identified opening the file as the hotspot, so remove the sdcenario that means you have to open it so often. The std::basic_ostream::flush()[^] method could prove useful, to ensure the message is actually pushed to disk.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Souldrift wrote: The time stealer seems to be the opening and closing of the file for every log entry. But I cannot simply open it once and never close it, because the log entrys are only put into the file with the close() call.
Even when you flush the data to the file (calling the flush method) ?
|
|
|
|