|
I have a simple application in VC6.0 and ported it to .NET 2003.
I set "Use Managed Extensions" to Yes from the Project Properties->Configuration Properties->General because am using #using .
i get the foll error
Command line error D2016 : '/RTC1' and '/clr:initialappdomain' command-line
options are incompatible
i saw a lot of articles on this which suggested to do the foll to solve this error: i.e.
Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.
Click the C/C++ folder.
Click the Code Generation property page.
Modify one or both of the following properties: Basic Runtime Checks or Smaller Type Check
i tried changing options under Basic Runtime Checks but to no avail?
i still get the error?
How can I solve this command line error?
Pls help!
Sincerely
Giftsana
|
|
|
|
|
I have a program that basically stores data coming over the UDP stack. Since the data is coming over so quickly I store the data to a binary file as opposed to an ASCII file like I once did.
I am looking for a way to convert my binary file over to an ASCII file that will look the same exact way as I had it before. Previously my file looked like this, with every "paragraph" being one line:
"Receiving Data"
00000001 00000020 00000000 9D818638 00040102 00000294 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00060105 0C2110F4 0C2110F4 0C2110F4 00020106 10F40C21 00010107 0E8A0000 00010108 135E0000
00000002 00000020 00000000 9D81863D 00040102 000002B5 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00010105 0C210000 00010106 10F40000 00010107 0E8A0000 00010108 135E0000
using this code:
CString temp = "";<br />
temp.Format("%08X", dataArray[i]);<br />
where data array is where I hold the data from the UDP stack and the next line after the format is to write the string to the file.
Right now my binary file looks like this:
OD OA OD OA 16 00 00 00 10 00 00 00 00 00 00 01 0F 00 02 01 02 00 00 FB C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 03 00 00 04 00 01 00 00 00 01 00 06 06 2A 2A 00 00 10 00 00 00 00 00 00
I would actually like to convert the file to actually show the OD OA OD OA to a carriage return and line feed. Most importantly I need to preserve the "paragraph" format so that I can use my decoding method.
Thanks in advance!!!
-- modified at 22:10 Wednesday 22nd March, 2006
|
|
|
|
|
NYTSX wrote: Since the data is coming over so quickly I store the data to a binary file
First of all: A file is a file. It won't be any faster just because you write *more* data in it as before!
Binary mode vs Text mode is just the way the data gets treated by the runtime.
For a text mode file:
A single '\n' will be written as \r\n in the file.
Upon read, \r\n in the file will be returned as a single '\n'. And the "End of file" character (ctrl-Z, decimal 26, hex 1A) will be treated as end of file.
That handling won't happen in a file opened in binary mode.
I suggest you do like this (assuming you are using the f-functions to handle the file):
For ever buffer of data you receive, save the data exactly as received, buffer for buffer. (Open the file binary mode, use fwrite to write the buffer to the file).
Open/create and close the file just once in your program.
Then use a hex dump program to view the file.
That way, you can see exactly what's going on.
If you want to look at the file as a text file, that will be difficult, since the file contains characters that have no ASCII/ANSI representation. That is all characters with a value below 32 decimal, 20 hex.
Maybe you can find a textviwer/editor who can handle those characters.
|
|
|
|
|
kakan wrote: First of all: A file is a file. It won't be any faster just because you write *more* data in it as before!
I guess, if I get it right, he intends to say, he stores data in binary immediately without converting them to ASCII format on the "receiving" point. may be because of more data flushing on to the stack, and later ,he might be converting them with another process running exculsively for converting them to ASCII. but i'm not sure
VuNic
|
|
|
|
|
Hello.
I'm not sure either. If he stores the received data "as is", and in binary mode (where appropriate), then there shouln't be any problem to extract interesting parts of the log file later on.
|
|
|
|
|
Sorry for the confusion. What I really meant to say was that Yes, I do save the data in binary immediately as I receive it using fopen() and fwrite().
What I am currently trying to build is the part that will take this file and convert it to ASCII.
I hope that clears things up some more, and that you guys will be able to help me do this.
Thanks a bunch.
|
|
|
|
|
OK, that clears things up quite a bit.
The big question is: How will you handle the data that has no characters in the ASCII/ANSI table? (That is: characters with a value below hex 20, decimal 32.)
Du you want to skip them in the outfile, or do you want them to have some special syntax (such as "\x00" for a 0 value)?
|
|
|
|
|
Either way would be fine....I guess the most logical way would be to set them to a 0 value since the majority of the data is going to be 0 anyways.
The only "real" words in the file is when I connect, I save this literal to file:
*** Connected *** which I see in the binary file as 2A 2A 2A 20 43 6F 6E 6E 65 63 74 65 64 20 2A 2A 2A.
The rest of the data in the file are numbers.
Thanks again Kakan for your help! This really is gonna save my butt!
|
|
|
|
|
OK, this has to be quick, since I'm at work...
There are other, maybe better ways to do this...
<code>
#include <stdio.h>
#include <string.h>
FILE *in;
FILE *out;
char * infileName = "infile";
char * outfileName = "outfile";
unsigned char buf[10];
if((in = fopen(infileName, "rb")) == NULL) {
printf("Nope. The infile %s doesn't exist!\n",infileName);
return 1;
}
if((ut = fopen(outfileName, "wb")) == NULL) {
printf("Nope. Can't create the out file %s!\n",outfileName);
fclose(in);
return 1;
}
// Process
while(fread((char *) buf,1,1,in) != 0) {
if(buf[0] >= (unsigned char) ' ') fwrite(buf,1,1,ut);
else {
// Values below space
if(buf[0] == (unsigned char) '\r' || buf[0] == (unsigned char) '\n') fwrite(buf,1,1,ut);
else fprintf(ut, "\x%02X", (unsigned int) buf[0]);
}
}
fclose(in);
fclose(ut);
return 0; // OK
</code>
This is written in a hurry, and partially untested. But it should work.
If you wan't to ommit "the low values", simply comment out the line
else fprintf(ut, "\x%02X", (int) buf[0]);
Good luck.
-- modified at 8:19 Thursday 23rd March, 2006
|
|
|
|
|
Thanks!
I will try this out and see if it works!
|
|
|
|
|
I've written a JAva program that uses JNI to call some C++ methods to retrieve webcam images using video for windows. The problem is that every time I retrieve an image, memory usage keeps going up. I'm still a noob to C++ so the problem may be something really simple. Here's my code:
code:
HWND m_capWindow;
int connectedIndex;
LRESULT PASCAL callbackProc(HWND hWnd, LPVIDEOHDR lpVHdr);
LRESULT PASCAL callbackProc(HWND hWnd, LPVIDEOHDR lpVHdr)
{
return 0;
}
JNIEXPORT void JNICALL Java_client_desktop_dateclick_Test_connect
(JNIEnv *, jobject, jint index) {
m_capWindow = capCreateCaptureWindow ("", WS_CHILD, 0, 0, 0, 0, GetDesktopWindow(), 10);
//m_capWindow = capCreateCaptureWindow ("Capture", WS_CHILD | WS_VISIBLE, 50, 50, 480, 360, GetDesktopWindow(), 10);
// connect to the new driver
BOOL rval = capDriverConnect (m_capWindow, index);
capSetCallbackOnFrame(m_capWindow, callbackProc);
capPreview(m_capWindow, FALSE);
}
JNIEXPORT jbyteArray JNICALL Java_client_desktop_dateclick_Test_getImage
(JNIEnv *env, jobject) {
CString fileName;
int contentLength;
BYTE *frame;
capGrabFrame(m_capWindow);
//capGrabFrameNoStop(m_capWindow);
fileName = "capframe.bmp"; //and use this file...
capFileSaveDIB( m_capWindow, (LPCTSTR)fileName);
CFile jpegTemp;
// now read the resulting file into a buffer
jpegTemp.Open("capframe.bmp", CFile::modeRead);
contentLength = (UINT)jpegTemp.GetLength();
//allocate the buffer for the jpeg frame
frame = new BYTE[contentLength];
//now read in the jpeg file
jpegTemp.Read(frame, contentLength);
jpegTemp.Close();
jbyteArray ba = env->NewByteArray(contentLength);
env->SetByteArrayRegion(ba, 0, contentLength, (jbyte*) frame);
delete frame
return ba;
}
JNIEXPORT void JNICALL Java_client_desktop_dateclick_Test_disconnect
(JNIEnv *env, jobject) {
capDriverDisconnect(m_capWindow);
}
|
|
|
|
|
Memory Leakage is caused by
khrstopher wrote: delete frame;
you should use
delete []frame;
|
|
|
|
|
If he's using any of the MSVC compilers I've worked with this will not result in a leak - It's wrong but it doesn't result in a memory leak.
Steve
|
|
|
|
|
hi
i am using visual studio c++ 6 and SDK (feb 2003 edition)
I want to display data from a database in a dialog box i have. Do i use a editbox or ??
From reading a few sites i see that datasets or a datagrid is used, i cant seem to find this in VC++6
where is it or what am i ment to use
many thanks
|
|
|
|
|
VC6 is three versions out of date. As such, it does not support .NET, and datagrids are part of the .NET framework. Have you seem the ultimate grid ? http://www.theultimatetoolbox.com/?CID=CPTbxTop[^]
The reason this product exists is that there is no useful grid that comes with VC6, or even MFC to this day. There are some free grids about, in fact, Chris Maunder wrote one, which is on CP somewhere. Obviously, UG is better, that's why it's a commercial product, but the free one may be all you need.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
You might consider using the MSFlexGrid (Active-x) control Grids.
VuNic
|
|
|
|
|
or Chris' grid ?!
|
|
|
|
|
|
i just want to display info from a database which is MySQL 4.1.18, i dont want the user to edit it or anything just want to display it.
what one do ye recommend
|
|
|
|
|
so what's your problem...?
your can fetch datas into all of these grid...
|
|
|
|
|
I am developing an application that is available in multiple languages.
Currently we set the UI language for the application using an installer which means that you can run in German on any language OS. However there is one problem and that is with Microsoft dialogs and wizards. They seem to want to load the resources based on the current locale.
An example is: OS is English, Locale is France, and you install German application. This results in French resources being used for property sheets while German is used everywhere else.
There are two ways that I have found to stop this. One was to create a seperate DLL for each language. However the company I was hired to do localization work for seems to still be in afterthought mode and there is too much resistance for this. Not to mention if I had unlimited time to really do localization right there are many problems to fix.
The second way was to call SetThreadLocale(). This loads the wizards correctly, however I keep seeing that SetThreadLocale() is a bad function and should never be used. Is this true?
We already use our own version printf() to allow different non-standard tokens to be used in strings. So I also overwrote this so the use of formatting numbers, dates, and other localization settings is already preserved based on user locale.
I just wanted to make sure I would or wouldn't be making a huge mistake using SetThreadLocale because I didn't know all the reasons it has been blacklisted.
Thanks
If you start a fire for a man, he will be warm for a day. If you start that same man on fire, he will be warm for the rest of his life.
|
|
|
|
|
Localization / Internationization is not a simple task. It will be more complex if your application is not UNICODE app & need to support asian languages (eg. Traditional/Simplified Chinese / Japanese / Korea).
Use SetThreadLocale() is fine if it solves your problem. But in my experience, it didn't.
MS Press has a good book for that but I cannot find the name.
There is a new book "Internationalization and Localization Using Microsoft .Net" which I havn't read.
|
|
|
|
|
hi everyone
im developing a program that among other things draws images on a form; but im having this little problem
when i draw a large image and move the window several times it doesn't display the image or sometimes it displays part of it
is there anyway to fix this ?
|
|
|
|
|
You need to draw the image in your OnPaint handler, then it will be drawn whenever your form needs to refresh itself.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Also check that you are deleting all your GDI objects correctly. If your app runs out of them it can cause unusual display problems.
A good way to check for GDI leaks is watching the GDI object count in the Task Manager, finding them is another problem altogether.
|
|
|
|
|