|
Yes, there is a limit, but it is quite large.
Christian
come on all you MS suckups, defend your sugar-daddy now. - Chris Losinger - 11/07/2002
|
|
|
|
|
hi all,
i am trying to write a client to connect to a non-mfc application thro' network. i am just at the beginning, i found that CSocket approach only support connecting to mfc application as the CArchive used. is it true?
would you recommend using winsock api or start from CSocket to connect to a non-mfc server? i don't have too much idea about these. pls try to give me some idea!
thanks,
jim
|
|
|
|
|
I'm actually going through a similar situation. And I can tell you that CSocket will not connect to a standard socket connection. If you use CSocket, you have to use CSocket throughout. If you can't use CSocket on all ends, use basic sockets. There's quite a bit of info out there.
Programming in binary is as easy as 01 10 11.
|
|
|
|
|
Hello, the codegurus around the world.;)
As the previous poster pointed out, CSocket or CAsyncSocket class
is closely related to GUI by MFC.
So, if you don't need to use MFC, you don't need these classes at all.
(In fact, WSAAsyncSelect function is inserted some messages like FD_WRITE
to Window message process at CSocket and CAsynSocket)
As a result, WinSock API is best choice for you.
Please, don't send me your email about your questions directly.
Have a nice day!
Sonork - 100.10571:vcdeveloper
-Masaaki Onishi-
|
|
|
|
|
hi,
i want to know whether i can use CSocket class to connect to non-mfc application. or, CSocket designed to be able for only connecting to MFC application.
in my application, i used MFC GUI. but, what i mean is connecting to Non-MFC application but my application is a MFC application.
i don't sure CSocket can connect to standard socket application such as a web server...
currently, i am using a winsock API. but, i feel it is a bit trouble on receiving data using recv() function.
thanks,
jim
|
|
|
|
|
In most source code, when initializing structures to zero, you mostly find something like this:
MYSTRUCT mystruct;
ZeroMemory(&mystruct,sizeof(mystruct));
I was wondering... what's wrong with a simple
MYSTRUCT mystruct = {0};
Cheers, Marc Click to see my *real* signature
|
|
|
|
|
Nothing what you are doing is just fine. It's all about what way you were taught. Peace
|
|
|
|
|
It's all about making readable code for yourself and others, weeks after you write it.
= {0} works. But it's not as obvious that the entire structure will be zeroed.
ZeroMemory usually gets compiled as memset with 0, but ZeroMemory is much clearer to read.
Back in the days when drive space and memory was expensive, it paid to write very small source code. We learned to be VERY thrifty with every byte, at the expense of readability. But the cost of maintenance should not be underestimated. If you can save another programmer just 2 minutes by making the code easier to read and understand, you've justified the use of a few extra bytes of source code.
Scot Brennecke
Software Developer
VC++ MVP
|
|
|
|
|
I got a bit curious, and fetched the decompiler...
= {0} is translated to 20 bytes of inline machine code in my test program whereas
the ZeroMemory approach is worth 16 bytes of inline machine code which includes a call to a more complex function with several jump instructions.
Scot Brennecke wrote:
but ZeroMemory is much clearer to read
Not in assembly
Cheers, Marc Click to see my *real* signature
|
|
|
|
|
OK, since you want to "fight" about it...
= {0} is not strictly equivalent to the ZeroMemory approach. Most significantly, if your struct is declared on the stack, you do not get what you want:
"If initializer-list has fewer values than an aggregate type, the remaining members or elements of the aggregate type are initialized to 0 for external and static variables. The initial value of an automatic identifier not explicitly initialized is undefined."
Scot Brennecke
Software Developer
VC++ MVP
|
|
|
|
|
damn.. well ok, you win, you got the docs on your side
MSDN wrote:
The initial value of an automatic identifier not explicitly initialized is undefined
..if this is true I think my code needs a little rewrite, but I'm quite sure this isn't true (at least for MS Visual C++).
Cheers, Marc Click to see my *real* signature
|
|
|
|
|
MySQL Has the following core functions:
connect(), query(), store_result(), fetch_[row, feild]() num_rows(), num fields(),
escape_string(), and close()
There are others, but those are the most used.
Data returned is all characters, and and you get to the data by:
row=fetch_row(query_result);
and row[N] = field N, it's that simple!
Is there anything that simple for ADO or ODBC? I'm trying to port a MySQL app to SQL Server, and having a hard time finding anything that simple. My real concern is handling user-defined queries. In MySQL it was as easy as:
con=connect();
select_database(con, "my database");
query(con, user_sql);
result=store_restult(con);
fields=num_fields(result);
while (row=fetch_row(result)){
for (f=0; f< fields; f++){
printf("%s", row[f]);
}
}
adding field names to the output is just as easy too! (a for loopw/fetch_feild() )
I have yet to see anything that easy for Windows/SQL server. My MFC book says it's too hard to do queries like that, so it doesn't cover it.
Anyone have any suggestions on wrappers?
|
|
|
|
|
Windows provides lots of way to get to data in databases but as you point out many of them are complex at least in the form provided by the system. I have used the CDatabase/CRecordset/CDaoDatabase, CDaoRecordset stuff from MFC, the ODBC api in straight C, ADO via smart pointers, ADO via straight COM, etc.
All of these do what you want but none with quite so few lines of code. I think they are designed to be more generic and powerful, but unfortunantely for many tasks they are just a pain in the butt.
I would take a look at the ADO library by Carlos Antollini (http://www.codeproject.com/database/caaadoclass1.asp). I have not used them myself but they appear to be quite simple and powerful.
If that doesn't work for you I have a set of class wrappers for ADO I developed a couple years ago which can do what you ask in fewer lines of code than you listed. I have not posted it here because it is not UNICODE compliant. Let me know if you would like the library and I will sent it to you with source code. It does not require MFC and this is basically how you would do what you asked:
CFPSADODatabase db("db", "uid", "pwd");
CFPSADORecordset rs(strSQL, db);
while (!rs.IsEOF())
{
for (iField = 0; iField < rs.GetFieldCount(); iField++)
printf(rs.GetFieldValueText(iField));
rs.MoveNext();
}
|
|
|
|
|
Is there a really good book on Windows Sockets that covers basics so low someone who hasn't programmed winsock before could understand but good enough to be the only resource I would need on the subject even for advanced topics?
|
|
|
|
|
|
Hello, the codegurus around the world.;)
If you go to amazon.com and search "WinSock", you will find some books
about Winsock.
Actually, even though I have bought a couple of books about WinSock,
I can't get the book which I want best.
So, sometimes I try to find some sample codes of WinSock in Internet.
Please, don't send me your email about your questions directly.
Have a nice day!
Sonork - 100.10571:vcdeveloper
-Masaaki Onishi-
|
|
|
|
|
I have an Win32 console application that does not have MFC and uses STL extensively.
I am facing a problem where the application quits without any warning or any message box. So, to debug I ran the app in the VC debug environment. Now the app does not quit, but shows a few lines in the output window that says
C0000096 Privileged Instruction
I believe that when running out of the environment, this causes the app to quit, but inside VC, VC handles this situation and lets the app run on. My problem is that since the execution does not stop, I have no way of finding out where this stuff occurs.
Any ideas?
Thomas
modified 29-Aug-18 21:01pm.
|
|
|
|
|
runyour app, go to the Debug menu, choose Exceptions. find the "Priv instruction" exception in the list and check "Stop if not handled".
VC will kick into the debugger when the problem happens.
-c
To explain Donald Knuth's relevance to computing is like explaining Paul's relevance to the Catholic Church. He isn't God, he isn't the Son of God, but he was sent by God to explain God to the masses. /. #3848917
|
|
|
|
|
You could try the old fashioned method of filling your code with extra printfs (i.e. "Entering function xxx()" "Exiting Function xxx()" ) so you can see a trace of what functions are being called. At least that way you'll be able to determine which function is causing the problem (which should allow you to place breakpoints and then debug it properly)
--
Help me! I'm turning into a grapefruit!
|
|
|
|
|
Does anyone know how to begin the code trace when a debug assertion fails under Windows XP Home? Under Win 98, if I ran my app in Debug build from the red exlamation point and an assertion failed, I got the popup dialog asking me to 'Abort', 'Retry', or 'Ignore.' If I pressed 'Retry', I was taken to the debug view where I could trace my code, watch variables, etc...
Now, under Win XP, the same dialog pops up, but if I click 'Retry', another dialog pops up telling me to press 'Cancel' to debug. If I do this, I get another dialog saying press 'OK' to terminate. I have no way of entering the debug view live.
Any help would be greatly appreciated as I've searched all over MSDN to no avial.
I'm running:
VS 6.0 with SP5
Win XP Home
Thanks
|
|
|
|
|
The red exclamation point icon "Executes" your app and won't attach the debugger. So clicking Retry on an assertion dialog won't get you into the debugger because it's not attached. I don't understand how you did it in Win 98 before. And I don't think this issue is OS dependent.
|
|
|
|
|
Thanks for the response. I'm not sure why, but "Executing" the app under Win 98 did allow for the "Retry" debugging. When I got a new computer with XP Home installed, I reinstalled VS 6.0 and SP5 just as I had under Win 98 and the only difference I noticed in VS was the inability to get into the debugger from "Execute."
Thanks to another response, I now know I can just use the "Go" command instead and that works fine.
Thanks again.
|
|
|
|
|
My 'Shellapi.h' NOTIFYICONDATA struct version doesn't support some functionality of W2K Shell_NotifyIcon().
if someone can pass me 'Shellapi.h' ver 5.0 or, tell me the values of these
constants:
NIM_SETFOCUS
NIF_STATE
NIS_HIDDEN
NIIF_WARNING
NIF_INFO
NIIF_ERROR
I'll be VERY greatful
--BlackSmith--
"With the help of all mighty", 2001, Me.
|
|
|
|
|
#define NIM_SETFOCUS 0x00000003
#define NIF_STATE 0x00000008
#define NIS_HIDDEN 0x00000001
#define NIIF_INFO 0x00000001
#define NIIF_WARNING 0x00000002
#define NIIF_ERROR 0x00000003
hope this helps
regards
Greg
modified 12-Sep-18 21:01pm.
|
|
|
|
|
#define NIM_SETFOCUS 0x4
#define NIF_STATE 0x8
#define NIS_HIDDEN 0x1
#define NIIF_WARNING 0x2
#define NIF_INFO 0x10
#define NIIF_ERROR 0x3
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|