|
|
I found the problem shortly after I posted this message. Thanks for the quick response.
|
|
|
|
|
Anybody can show me an easy way to extract words from a string. Say I have the CString "03 March 2005" and I want an integer with the day, a string with month and an integer with year.
Thanks.
|
|
|
|
|
Several ways:
CString str = "03 March 2005";
int nDay = atoi(str);
int nYear = atoi(str.Right(4));
or
int nYear;
char szMonth[6];
sscanf(str, "%d %s %d", &nDay, szMonth, &nYear);
or
CString strMonth = str.Mid(3, 5);
or
int nSpace1 = str.Find(' ');
int nSpace2 = str.ReverseFind(' ');
strMonth = str.Mid(nSpace1 + 1, nSpace2 - nSpace1 - 1); There are probably more, but I think you get the idea.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
sscanf is evil! I like to use it for buffer overruns myself
|
|
|
|
|
|
See the code.
where uiTextAlignment is UINT with an class object.
Every this becomes true even if i set uiTextAlignment to DT_CENTER |DT_VCENTER.
What is wrong?
if ( pProperty->uiTextAlignment & DT_BOTTOM == DT_BOTTOM )
{
m_Bottom=true;
m_Multiline=false;
}
else
{
m_Bottom=false;
}
if ( pProperty->uiTextAlignment & DT_CENTER == DT_CENTER )
{
m_HCenter=true;
}
else
{
m_HCenter=false;
}
if ( pProperty->uiTextAlignment & DT_LEFT == DT_LEFT )
{
m_left=true;
}
else
{
m_left=false;
}
if ( pProperty->uiTextAlignment & DT_RIGHT == DT_RIGHT )
{
m_Right=true;
}
else
{
m_Right=false;
}
if( pProperty->uiTextAlignment & DT_SINGLELINE == DT_SINGLELINE )
{
m_Multiline=false;
}
else
{
m_Multiline=true;
}
if ( pProperty->uiTextAlignment & DT_TOP == DT_TOP )
{
m_Top=true;
m_Multiline=false;
}
else
{
m_Top=false;
}
if ( pProperty->uiTextAlignment & DT_VCENTER == DT_VCENTER )
{
m_VCenter=true;
m_Multiline=false;
}
else
{
m_VCenter=false;
}
|
|
|
|
|
Sorry .
Every this becomes true only when i set uiTextAlignment to DT_CENTER | DT_VCenter,
|
|
|
|
|
Anand for every one wrote:
Every this becomes true...
What becomes true?
You might try surrounding each bit-mask operation with parenthesis like:
if ((pProperty->uiTextAlignment & DT_VCENTER) == DT_VCENTER)<br />
...
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Hi.
I am having problems running the .exe file generated by MS Visual Studios 6.0. The C/C++ (with MFC) program runs as expected if I execute the program from Visual Studios (by using the ! button), but does not run at all if I run the .exe file generated by Visual Studios.
Does anybody know the difference between running the .exe file and pressing the ! button, or have any suggestions on solving this issue?
Thanks.
Roy.
|
|
|
|
|
|
hi,
how can i find who is the author from a file, for example "Task.job"
thanks
mirso
|
|
|
|
|
One way is to use GetNamedSecurityInfo() followed by LookupAccountSid() .
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
hi david,
thank you for help!
mirsad
|
|
|
|
|
hi,
is there a sample how to use this funktions, you mean, i should first use the GetNamedSecurityInfo() function and than the other?
mirsad
|
|
|
|
|
hi,
is there a sample how to use this funktions, you mean, i should first use the GetNamedSecurityInfo() function and than the LookupAccountSid()! Is here a sample how to use this functions to gether
mirsad
|
|
|
|
|
Following are my sequence of steps for creating ocx.
if(!ocx.Create(...))
{
Register the Ocx
if(!ocx.Create(...))
throw error message
}
The first create fails. the control comes inside the if .
Registration of ocx succeeds.
But on the second create, the application crashes !!??
Can anyone tell me why ??
|
|
|
|
|
Hi i am developing interface which has needed some split. i am using CSplitterWnd class.
i started my project with SDI doc/view architecture.my requirement is 3 split
like inverted 'T'
Initially i splitted the window horizontally using splitter into two rows.and i tried to split top row into two columns.but i could't view the second split and able to see only the initial split .
i declared the splitter in myframe.h
as
CSplitterWnd m_wndSplitter;
CSplitterWnd m_wndSplitter1;
and split code is in myframe.cpp
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
CRect cr;
GetWindowRect(&cr);
if (!m_wndSplitter.CreateStatic(this,2,1))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
if (!m_wndSplitter.CreateView(0,0,pContext->m_pNewViewClass,CSize(cr.Width(),cr.Height()/2),pContext))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
if (!m_wndSplitter.CreateView(1,0,pContext->m_pNewViewClass,CSize(cr.Width(),cr.Height()/2),pContext))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
if (!m_wndSplitter1.CreateStatic(&m_wndSplitter,1,2,WS_CHILD|WS_VISIBLE|WS_BORDER,m_wndSplitter.IdFromRowCol(0,0)))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
if (!m_wndSplitter1.CreateView(0,0,pContext->m_pNewViewClass,CSize(0,cr.Height()/2),pContext))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
if (!m_wndSplitter1.CreateView(0,1,pContext->m_pNewViewClass,CSize(200,cr.Height()/2),pContext))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
return TRUE;
}
if anyone knows pls clrify my doubt.advance thanks
|
|
|
|
|
hiho@ll
since 1 week i have a big problem with strings in my app!
it happens if i use CString("something"), CString.Append, MessageBox
it seems as if it doesn't matter what will be done with the strings, but i get 2 types of Exception
first is a Out of memory execption
second is a memory access violation!?
anyone got the same problem?
anoybody knows how i define in the compiler or linker settings that my application gets more memory?
by the way, when i get the out of memory exeption the task manager shows that my app is using 5MB of space and 2MB of virtual space!?
isn't it a little bit few for a out of memory execption?
another question:
if i call a function,
lets say
CString s;
s.Append("test");
, and i get a memory access violation error during executen of s.Append();
what is the problem?
have i done a mistake? is it my failure?
i mean how could it be my failure if the function Append of CString causes a memory violation?
thx
|
|
|
|
|
have you tried doing the following:
CString myStr = "hi " ;
myStr += "andrew" ;
hope that helps,
Andy
|
|
|
|
|
I was not aware that the CString class had an Append() method. Is this something new to .Net?
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Hi!
I just started with C++ again after using Java alot(because that what they want us to use in school). And I have a problem with pointers.
I am trying to make a tree structure to represent logical functions. I want the tree to make it's own subtrees and leafs but they disapear.
I have some sampe code, this is not the code in my program it is just to demonstrate what I am trying to do:
class Tree{
public:
virtual string print(){return "Problem";}
}
class Leaf: public Tree{
private:
string name;
public:
Leaf(string s){
name = s;
}
string print(){
return name;
}
}
class SubTree: public Tree{
private:
Tree* left;
Tree* right;
public:
SubTree(string s){
for(int x=0; x< s.size(); x++){
if(string.at(x) == 'V'){
if(string.at(0) == '(')
left = new SubTree(s.substr(1,x-1));
else
left = new Leaf(s.substr(0,x));
if(string.at(x+1) == '(')
right = new SubTree(s.substr(x+2,s.size()-1));
else
right = new Leaf(s.substr(x+1,s.size()));
}
}
}
string print(){
return "(" + left->print() + "V" + right->print() + ")";
}
}
If I put a string in Subtree ond then try to call print my program crash and say something about a nullpointer.
This is probebly a really stupid thing i have done but i dont know how to be able to create the trees/leafs in the class SubTree so that they don't dissapear.
|
|
|
|
|
Do you check for null pointers somewhere in your real SubTree::print()? The code you provided don't set left and right, so if there's nothing set and you call SubTree::print you'll dereference null pointers.
Cheers
Steen.
"To claim that computer games influence children is ridiculous. If Pacman had influenced children born in the 80'ies we would see a lot of youngsters running around in dark rooms eating pills while listening to monotonous music"
|
|
|
|
|
Hi,
I'm trying to connect between few PC's using TCP/IP(multycast connection).
this is my listening thread: [bind() and listen() is in another function]
UINT ListeningThread(LPVOID lpvoid)
{
CMultycast_serverDlg *dlg = (CMultycast_serverDlg *)lpvoid;
FD_SET SocketSet;
int port;
struct sockaddr_in echoClntAddr;
SOCKET clntSock;
unsigned int clntLen;
int SelectResult = 0;
dlg->SelectFlag = false;
dlg->ExitFlag = false;
while(!dlg->ExitFlag)
{
FD_ZERO(&SocketSet);
for(port = 0 ; port < dlg->NumberOfPorts ; port++)
FD_SET((unsigned int)dlg->SocketsArray[port] , &SocketSet);
SelectResult = select(dlg->MaxDescriptor + 1 , &SocketSet , NULL ,
NULL , &(dlg->selTimeout));
if(SelectResult == 0)
continue;
you specified....server still listenning");
else if(SelectResult == SOCKET_ERROR)
{
AfxMessageBox("Error : select() has failed ");
return 0 ;
}
else
{
//dlg->SelectFlag = true;
for(port = 0 ; port < dlg->NumberOfPorts ; port++)
{
if(FD_ISSET(dlg->SocketsArray[port] , &SocketSet))
{
clntLen = sizeof(echoClntAddr);//set the size of the in- out parameter
//if(!dlg->SelectFlag)
clntSock=accept(dlg->SocketsArray[port],(struct sockaddr*)&echoClntAddr,(int *)&clntLen);
//dlg->SelectFlag = true;
if(clntSock != INVALID_SOCKET) //wait for a client to connect
{
dlg->HandleClient(clntSock);//clntSock is connected to a client
dlg->m_RecievedDataListBox.AddString(dlg->RecievedString);
//WSACleanup();
}
}
}
}
}
for(port = 0 ; port < dlg->NumberOfPorts ; port++)
closesocket(dlg->SocketsArray[port]);
return 1;
}
let me explain what i want to do:
i want my PC to listen to several ports,each port is for another PC,and i want to be able to transfer some data between all the PC's and my PC,when all the PC'c try to connect my PC only once(and that's the problem,because accept() is blocking my application after one connection.
the important thing is that i can't use broadcast(the other PC must connect as peer to peer).
any idea,someone????
Regards,
Eli
|
|
|
|
|
You have two options :
1. separate accept() in different thread ( one thread per a listening socket )
which, when I think about it now, means all the stuff - socket, listen, bind accept
etc. goes in the thread - the so called "ServerThread"
2. make your socket descriptors non blocking in windows I think this is done by using
ioctlsocket( FIONBIO .... ) . I've never tryed it in windows, in unix select returns
the listening nonblocking socket that accepted a connection, so I assume it is
the same in windows.
|
|
|
|
|