|
See here.
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
|
I am having problems with INSERTING 'err' value, where the value always change(dinamic).
The error I am getting at runtime is "too few parameters expected 1". This is a part of the inserting program.
float err;
CDatabase db;
CString SqlString;
db.Open("ODBC;DSN=db");
SqlString="INSERT INTO report(ERROR_VALUE,STATUS) VALUES(err,'OK')";//value of 'err' not statis
db.ExecuteSQL( SqlString );
the program will run properly if syntax of inserting like this.
SqlString="INSERT INTO report(ERROR_VALUE,STATUS) VALUES('err','OK')";
but the output not value of "err", but string "err".
anyone can help me????
|
|
|
|
|
neo on poltek wrote: SqlString="INSERT INTO report(ERROR_VALUE,STATUS) VALUES(err,'OK')";//value of 'err' not statis
try,
SqlString.Format(_T("INSERT INTO report(ERROR_VALUE,STATUS) VALUES(%f,'OK')"), err);
|
|
|
|
|
SqlString="INSERT INTO report(ERROR_VALUE,STATUS) VALUES(";
SqlString += "'";
SqlString += err;
SqlString += "'";
SqlString += ",'OK')";
I think it is working please check.
Yes U Can ...If U Can ,Dream it , U can do it ...ICAN
|
|
|
|
|
I used the following code to show an image in the row of a listcontrol.
LV_ITEM lvi;
CString item,symbol;
symbol = card.Right(1);
int len = card.GetLength();
item = card.Left(len-1);
lvi.mask = LVIF_IMAGE | LVIF_TEXT ;
lvi.iItem = 0;
lvi.iSubItem = isubItem;
lvi.pszText = item.GetBuffer(item.GetLength());
lvi.stateMask = LVIS_STATEIMAGEMASK|LVM_SETITEMSTATE;
if(symbol.CompareNoCase("C")==0)
lvi.iImage = 0;
else if (symbol.CompareNoCase("D")==0)
lvi.iImage = 1;
else if(symbol.CompareNoCase("H")==0)
lvi.iImage = 2;
else if (symbol.CompareNoCase("S")==0)
lvi.iImage = 3;
player1.SetItem(&lvi);
There are 13 columns in the row. and there is only one row.
I wanted the image to be shown in every column of that row. But the image is being shown only in the first column. How to make it.
Thank you
Saadhinchaali
|
|
|
|
|
Saadhinchaali wrote: How to make it.
You have to set LVS_EX_SUBITEMIMAGES style inorder to display images in subitem.
player1.SetExtendedStyle( player1.GetExtendedStyle()|LVS_EX_SUBITEMIMAGES );
|
|
|
|
|
Hi,
I am getting the problem to select multiple files.And DoModal is returning 2(IDCANCEL). Code is below:
<br />
<br />
TCHAR szFilters[]=_TEXT("All Files (*.*)|*.*||");<br />
CFileDialog fileDlg (TRUE, _TEXT(""), _TEXT(""),OFN_FILEMUSTEXIST|OFN_EXPLORER|OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY, szFilters, this);<br />
<br />
TCHAR * pc = new TCHAR[4096]();<br />
fileDlg.m_ofn.lpstrFile=pc;<br />
fileDlg.m_ofn.nMaxFile = 4096;<br />
int nResVal=fileDlg.DoModal();<br />
<br />
What is the problem with it?
|
|
|
|
|
pther wrote: What is the problem with it?
The preblem is in
fileDlg.m_ofn.lpstrFile=pc;<br />
fileDlg.m_ofn.nMaxFile = 4096;
ASAIK you dont have to those parameter. You can get all the files selected using the GetStartPosition and GetNextPathName function.
TCHAR szFilters[]=_TEXT("All Files (*.*)|*.*||");<br />
CFileDialog fileDlg (TRUE, _TEXT(""), _TEXT(""),OFN_FILEMUSTEXIST|OFN_EXPLORER|OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY, szFilters, this);<br />
int nResVal=fileDlg.DoModal();<br />
POSITION pos = fileDlg.GetStartPosition();<br />
while( pos )<br />
{<br />
CString cs = fileDlg.GetNextPathName( pos );<br />
}
|
|
|
|
|
Without spacifying size of buffer, how could you get the all files path.
I read to define as on another forum.
|
|
|
|
|
pther wrote: Without spacifying size of buffer, how could you get the all files path.
Ok. MFC sets a buffer of length 256 in its constructor. But in your case that buffer will not be enough.
Any way just set the first element of the buffer as 0 after allocationg the buffer. Like..
TCHAR szFilters[]=_TEXT("All Files (*.*)|*.*||");<br />
CFileDialog fileDlg (TRUE, _TEXT(""), _TEXT(""),OFN_FILEMUSTEXIST|OFN_EXPLORER|OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY, szFilters, this);<br />
TCHAR * pc = new TCHAR[4096];<br />
pc[0] = 0;<br />
fileDlg.m_ofn.lpstrFile=pc;<br />
int nResVal=fileDlg.DoModal();
|
|
|
|
|
|
I was not able to spot any problem with the code so I just tried your code in a new MFC dialog based application and it is working fine. So I guess problem is somewhere else.
-Saurabh
|
|
|
|
|
|
If the number of files you select is causing it to fail, then your buffer is probably too small. With a buffer of 4096 and 160 files, that's only 25 characters per file.
Acccording to MSDN:
If the buffer is too small, the function returns FALSE and the CommDlgExtendedError function returns FNERR_BUFFERTOOSMALL. In this case, the first two bytes of the lpstrFile buffer contain the required size, in bytes or characters.
Hope that helps.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
I am trying with VS 2008 under Vista and even if buffer is small I do not get FNERR_BUFFERTOOSMALL. CFileDialog simply return files it can with the given buffer. I couldn't find anything specific to this in MSDN.
-Saurabh
|
|
|
|
|
I am using VS 2008 on Vista and it works even with 1000 files.
-Saurabh
|
|
|
|
|
You can call
DWORD error = CommDlgExtendedError();
to find out what exactly is the problem.
-Saurabh
|
|
|
|
|
Hi,
your code works fine for me also.
thanks,
Nitheesh
|
|
|
|
|
pther wrote: What is the problem with it?
How are we to know? What problem(s) are you seeing?
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
I had the same problem once with selecting *lots* of files, set "pc" to something like 64000.
"It is better to remain silent and be thought a fool, than to open your mouth and remove all doubt."
--Groucho Marx
|
|
|
|
|
I am trying to receive asynchronous sockets via udp but I am mostly getting WSAEWOULDBLOCK error . I anyone help me solving this problem
WSADATA wsaData;
int error = WSAStartup(0x202,&wsaData);
if(error)
return FALSE;
if(wsaData.wVersion != 0x202)
{
WSACleanup();
return FALSE;
}
m_UdpSock=(SOCKET)WSASocket(AF_INET,SOCK_DGRAM,0,NULL,NULL,0);
if(m_UdpSock==INVALID_SOCKET)
return FALSE;
sockaddr_in sockAddrServer;
sockAddrServer.sin_family=AF_INET;
sockAddrServer.sin_port=htons(port_data);
sockAddrServer.sin_addr.s_addr=INADDR_ANY;
// Bind socket to listener address
if(bind(m_UdpSock,(SOCKADDR*)&sockAddrServer,sizeof(sockaddr_in))==SOCKET_ERROR)
{
int y=WSAGetLastError();
printf("Unable to bind socket\n");
return FALSE;
}
// Create WinSock Event object
WSAEVENT eventWinsock=(WSAEVENT)WSACreateEvent();
if(eventWinsock==WSA_INVALID_EVENT)
{
printf("Unable to create winsock event\n");
return FALSE;
}
// Signal WinSock Event on receive packet
if(WSAEventSelect(m_UdpSock,eventWinsock,FD_READ)!=NOERROR)
{
printf("Unable to connect event to socket\n");
return FALSE;
}
//long length=50000;
// m_Thread=new CManager((LPVOID)this);
// m_Thread->CreateThread();
bool occurance=true;
while(m_abort)
{
Recvbuf=new char[BUFFER_SIZE];
TRACE("Before Receive Data\n");
//if(WaitForSingleObject(eventWinsock,INFINITE)== WAIT_OBJECT_0)
if(WaitForSingleObject(eventWinsock,INFINITE)== WAIT_OBJECT_0)
{
sockaddr_in sockAddrRecv;
int nSockAddrSize=sizeof(sockaddr_in);
// Packet received
EnterCriticalSection(&m_cs);
int nErr=recvfrom(m_UdpSock,Recvbuf,BUFFER_SIZE,0,(sockaddr*)&sockAddrRecv,&nSockAddrSize);
LeaveCriticalSection(&m_cs);
TRACE("Receive data\n");
if(nErr==SOCKET_ERROR)
{
TRACE("nErr %d\n",nErr);
nErr=WSAGetLastError();
if(nErr==WSAEWOULDBLOCK)
{
WSAEventSelect(m_UdpSock,eventWinsock,FD_READ);
WSANETWORKEVENTS wsevents;
WSAEnumNetworkEvents(m_UdpSock,eventWinsock,&wsevents);
DWORD dwEventId = WaitForSingleObject(eventWinsock,3000);
if(dwEventId == WAIT_TIMEOUT)
continue;
continue;
}
else
{
WSAEventSelect(m_UdpSock,eventWinsock,FD_READ);
WSANETWORKEVENTS wsevents;
WSAEnumNetworkEvents(m_UdpSock,eventWinsock,&wsevents);
DWORD dwEventId = WaitForSingleObject(eventWinsock,3000);
if(dwEventId == WAIT_TIMEOUT)
continue;
continue;
}
}
else
{
TRACE("Receive Data Size %d\n",nErr);
BYTE init=Recvbuf[0];
//EnQueue
m_Queue.SetAt(index,Recvbuf);
m_PacketSize.SetAt(index,nErr);
index++;
if(occurance)
{
DWORD dwThreadId1;
m_DeQueueThread=CreateThread(NULL,0,&Dequeue,this,CREATE_SUSPENDED,&dwThreadId1);
ResumeThread(m_DeQueueThread);
m_play->InitState=m_dequeue=true;
occurance=false;
}
}
}
}
|
|
|
|
|
Has your code changed since I answered this a couple days ago?
If you post code wrapped in pre tags, most of us would be much more
inclined to read it.
It appears you still have the same problem as a couple days ago....
the code is wrong.
You're not using the event properly.
You can simplify your code to something like this (pseudocode):
create/init/connect the socket
WSACreateEvent
WSAEventSelect
while(m_abort)
{
WaitForEvent
WSAEnumNetworkEvents (this will reset the event)
if read event
{
read a datagram, or loop reading datagrams until you get a WSAEWOULDBLOCK error
}
}
You also probably want another event so you have a way to exit the loop if no data is received...
create/init/connect the socket
create an abort event
WSACreateEvent
WSAEventSelect
while(m_abort)
{
Wait For socket or abort Event (WaitForMultipleObjects)
if abort event
{
break;
}
else
{
WSAEnumNetworkEvents (this will reset the socket event)
if read event
{
read a datagram, or loop reading datagrams until you get a WSAEWOULDBLOCK error
}
}
}
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
What does the following code available in .h files signify ?
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
|
|
|
|
|
#pragma once directive specifies that the file will be included only once by the compiler when compiling a source code file.
This can reduce build times as the compiler will not open and read the file after the first #include of the module.
Mukesh Kumar
Software Engineer
|
|
|
|