|
I remember tackling the command-line-parsing problem back when i was in college. It was very challenging and also very rewarding. Years later when I started using Turbo C, I had a file, getopt.c, that I simply added to any project that needed this functionality. Now the function, in its various forms, can be found in several places on the Internet.
cuteee wrote: i know that i would have "-" in argv[i][0], i/i/o/c/r/a in argv[i][1] etc
Right.
argv[1] = -i:Test_Data1.txt
argv[2] = -i:Test_Data2.txt
argv[3] = -o:Test_Data_Diff.txt
argv[4] = -c:TOW:Udop:dN,0.2:vU,0.0005:L1P Sats:Slow nSat
argv[5] = -r:TOW
argv[6] = -a:alertfile.txt
cuteee wrote: I want to take out 0.2 or 25 from this argument and store it in another varable.
In your example, you'll need to parse argv[4] . Take everything between the first comma and the subsequent colon.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
I'm working on an application that can get to a serial/Usb port to communicate
with exturnal devices over a serial or Usb connection/session.
Could someone direct me, point me at the form and function.
I'm NOT looking to create a modem prorgam, but a function to
pass the required parameters from the main prog to an extrunal device
that recieves command string.
Thanks
Regards
Marc
Marc Andrews
mandrews@andrewsapplications.com
|
|
|
|
|
Use CreateFile("\\\\.\\COM1", ...) to open the port, and the send() /recv() pair to send and receive data.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
DavidCrow wrote: and the send()/recv() pair to send and receive data.
WriteFile() /ReadFile() ?
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Yes, thanks.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
Hi,
I need the IHttpNegotiate::BeginningTransaction() method to get called for all requests done by browser not only for request to main url.
Right now I have:
<br />
STDMETHODIMP CIEPlugin::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,<br />
DISPPARAMS* pDispParams, VARIANT* pvarResult,<br />
EXCEPINFO* pExcepInfo, UINT* puArgErr)<br />
{ <br />
switch (dispidMember)<br />
{<br />
case DISPID_NAVIGATECOMPLETE2 : <br />
BSTR url;<br />
m_spWebBrowser2->get_LocationURL(&url);<br />
IStream *pstm;<br />
IMoniker* ppmk;<br />
CreateURLMoniker(NULL, url, &ppmk);<br />
IBindCtx *pbc;<br />
CreateAsyncBindCtx(0, this, NULL, &pbc);<br />
RegisterBindStatusCallback(pbc, this, NULL, 0); <br />
ppmk->BindToObject(pbc, NULL, IID_IStream,(void**)&pstm);<br />
break;<br />
}<br />
return S_OK;<br />
}<br />
and the BeginningTransaction method gets called only once.
<br />
HRESULT CIEPlugin::BeginningTransaction (LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders)<br />
{<br />
MessageBox(NULL, bstr_t(szHeaders), "B", MB_OK);<br />
return S_OK;<br />
}<br />
Can onyone suggest how to make so that it gets called for any request done by broser, say request to css files loaded for a certain page or java script files or any other requests.
Thank in advace.
|
|
|
|
|
In my project, I need a textbox to mark something in client area. the textbox can dragged.
Thanks.
|
|
|
|
|
Ok. Are you looking for CreateWindow() to create the edit control, or are you wanting to know how to move (drag) a control?
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
I only have experience to put a edit control on a dialog box. I do not know how to draw it in client area, and how to make it be able to dragged by mouse in client area.
Thanks.
|
|
|
|
|
xyhan wrote: I only have experience to put a edit control on a dialog box. I do not know how to draw it in client area...
The client area of a dialog is where the controls are located. Why do you think they are not one-in-the-same?
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
Make sense.I tried the following code in OnDraw(CDC *pDC) function:
CEdit textbox;
textbox.ShowWindow(SW_SHOW);
The running error indicates there is no valid window handler. I do not know why.
|
|
|
|
|
You have not actually created the underlying window.
CEdit *textbox = new CEdit();
textbox->Create(...);
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
OK,Thanks very much.
Now my question is: How to draw it in its parent window?
|
|
|
|
|
It's usually not a good idea for a control to draw in an area that it does not own. If a control needs to do this, the correct way is to send a message to the parent and let the parent take care of its own drawing.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
Declare a CEdit member in your view. Create it in OnInitialUpdate (after checking to see that it's not already created). Keep it hidden by default.
Show it whenever you want to by showing the control (ShowWindow) and that's it.
Regards,
Nish
|
|
|
|
|
I've got some executable which runs with its cygwin.dll under windows and was compiled under cygwin.
It accepts to its stdin strings and read them with fgets();
if(fgets() == NULL)
return; //that is ctrl+z was pressed
This works if we run it from windows.
But if we run it thru win app with createprocess() and puts strings thru pipe to it it recieves them correctly and now we want to stop its reading stdin and write to it \032\n that is ctrl+z but its fgets compiled with cygwin does not recognize it as stop writing to me and fgets should return 0, it reads it as \032\n string!!!
and waits for another string to be written.
VC++ compiled console executable with fgets() correctly understand \032\n as ctrl+z and we can terminate it from win app.
What's the EOF symbol for cygwin compiled fgets?
9ine
|
|
|
|
|
If I'm interpreting your situation correctly...
There is no special *eof* character that you can embed in data coming through the pipe. *eof* is signalled to the process reading a pipe when the process that is writing the data closes its end of the pipe.
Regards,
Dan
Remember kids, we're trained professionals. Don't try this at home!
|
|
|
|
|
To induce console app function fgets() return NULL as eof encountered we must write to pipe \032\n. This works with VC compiled console app.
I close write end of pipe believe me before reading from read end of pipe, but this will not affect even windows console app which reads lines from console with fgets(). Only passing to console stdin thru write pipe \032\n induce console app to quit from fgets() returning NULL as eof was encountered! You can even leave pipe unclosed!
But with cygwin compiled application niether works!? as its compiled fgets() interprets \032\n as a string!
I that makes sence?
9ine
|
|
|
|
|
Sorry, I don't understand what you are trying to describe.
Remember kids, we're trained professionals. Don't try this at home!
|
|
|
|
|
Console app which reads stdin with fgets() untill it returns NULL.
If string read, fgets returns non-zero value, if ctrl+z\n read, fgets returns NULL.
case 1: VC compiled console app!
subcase A: lunch it from command line, type strings, type ctrl+z\n to quit it
subcase B: lunch it from win app thru createprocess(), write strings thru pipe to it, write \032\n bytes seq to pipe, console app will quit!
case 2: cygwin compiled console app!
subcase A: equal to subcase A in case 1.
subcase B: equal to subcase B in case 1. except that \032\n seq is interpreted as a string and does not force to return NULL function fgets() as in case 1, subcase B!!!
What to write to pipe of case 2,subcase B, to make cygwin compiled console app fgets() function to return NULL??????
9ine
|
|
|
|
|
You have to close the writing end of the pipe to signal an EOF to the process. This is what the command interpreter does when you press Ctrl+Z.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
I close it believe me before reading from read end of pipe, but this will not affect even windows console app which reads lines from console with fgets(). Only passing to console stdin thru write pipe \032\n induce console app to quit from fgets() returning NULL as eof was encountered! You can even leave pipe unclosed!
But with cygwin compiled application niether works!? as its compiled fgets() interprets \032\n as a string!
9ine
|
|
|
|
|
Try sending it \004 . Linux shells (which cygwin is based on) sometimes interpret Ctrl+D as an EOF character.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
useless!
fgets() compiled under cygwin interprets it as usual string!
9ine
|
|
|
|
|
I am getting an assert occasionally in the following
void CFile::Write(const void* lpBuf, UINT nCount)
{
ASSERT_VALID(this);
ASSERT(m_hFile != (UINT)hFileNull);
Basically This call is from another thread (worker thread)(thread B) to write to a file and this thread does not initially create the File Object . The file object is created by the main thread (thread A ).
The above assertion happens when B tries to write to the file after A has created the file .
I have tried to put a critical section where the common function to write to the file is called but still I see the assert .
Could this be because of my thread not being able to access MFC cFile Object correctly
Also this happens occasionally 2out of 10 times .
I also see that the file is finally getting written with contents for both thread A and B but this ASSERT is worrying me .
Any ideas ?
Engineering is the effort !
|
|
|
|