|
I need to manipulate an array so that the first row is the last second row is next to last and so on with a 2d array.
do I need to make a tempArray or can it be done without creating another array? S ome code to help get started too would be helpful.
|
|
|
|
|
If you want to read the array in reverse order use code similar to this:
for (int i = MAX - 1; i > -1; i--)
{
for (int j = 0; j < MAX; j++)
{
}
}
That way, the last row will be read first.
_____________________
"So in the interests of survival, they trained themselves to be agreeing machines instead of thinking machines. All their minds had to do was to discover what other people were thinking, and then they thought that, too."
Breakfast of Champions, Kurt Vonnegut
|
|
|
|
|
what i need to do is not only read it backwards but change the array so that it is too.
|
|
|
|
|
If I have something like IDS_STRING1's Caption "Example"
and define _UNICODE. Then do csString.LoadString(IDS_STRING1),
is csString a unicode string? (so dont' have to do _T)
|
|
|
|
|
CString::LoadString calls ::LoadString internally - you'll get Unicode string in Unicode build of your app.
Tomasz Sowinski -- http://www.shooltz.com
*** Vodka. Connecting people. ***
|
|
|
|
|
As Tomasz says, the CString you get back will be appropriate for your compile time setting.
Strings in the string table are ALWAYS UNICODE, but if you use ::LoadStringA to retrieve them, they come back as ANSI/MBCS, while ::LoadStringW doesn't do the conversion.
We use ::LoadString, which is mapped to one or the other, so it doesn't matter.
You don't need to use _T on a CString that is set using LoadString anyway, you only need that on string (or character) literals so that the compiler can make them wide when it needs to.
Steve S
[This signature space available for rent]
|
|
|
|
|
char* a = new char [100+1];
a =0;
cFile.Read(a,100);
a[100] = 0;
AfxMessageBox(a);
cFile.Close();
}
catch(CFileException e)
{AfxMessageBox("prob");}
} I'm trying to see what could make CFile:Read throw an exception. I tried the folowing but got a debug assert when I expected it to go into the catch...I cant imagine what else could make Read throw an execption..
Thanks,
ns
|
|
|
|
|
Step into cFile.Read(a, 100); line. Put the breakpoint there, and when it's hit, press F11.
Tomasz Sowinski -- http://www.shooltz.com
*** Vodka. Connecting people. ***
|
|
|
|
|
SO why does Read have a throw Exception statement next to it in MSDN? I was taking that to mean that its a function that will throw an exception as opposed to Open which doesnt....so I am trying to see what all can make it throw an exception...
(Appreciate the F11 idea. Oh - its step into..makes sense> So far I havent ever stepped into any MFC functions, just my own functions....)
Thanks,
ns
|
|
|
|
|
|
in which way ur considering using it?
Item monikers , File monikers , Anti-monikers
Pointer monikers or as a Generic composite monikers ?
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
Does anyone know how many threads can be active under Windows 2000. I'm writing an ISAPI that could create a lot of threads ( 50-100-150 ). The thread's routines are very minimal and no complex calculations are being performed. Is there a cap on the number that can be created and/or will a 100 threads comprimise the stability of the server.
|
|
|
|
|
It all depends on the state of these threads. If they're mostly suspended/sleeping/waiting there will be no performance hit. If you plan to have 100 *executing* threads, you better use thread pool.
Right now there are > 300 threads on my XP box. I'm only browsing the internet and downloading mp3s.
Tomasz Sowinski -- http://www.shooltz.com
*** Vodka. Connecting people. ***
|
|
|
|
|
How many processors and memory have you got? While there is theoretically no limit there is a practical limit depending on the hardware.
But maybe you should consider using jobs with a thread pool?
...make it about Visual C++, and don't ever mention Visual Basic. Nick Hodapp (MSFT) in Semicolon[^]
|
|
|
|
|
It seems like a suboptimal design, but besides that you can have >1000 threads/process.
Every thread have a default stack of 1MB reserved address space. If this was the only limiting factor, you could have 2048 threads in a "normal" 2GB user-address-space system, or 3072 threads in a 3GB user-address-space system (please search MSDN for explanations of the 3GB system).
Then every thread (IIRC) uses two pages (i.e. 8KB) just to be started, committing 8MB of memory and...
Why don't you just write a test-app and see how many threads you can start for yourself?
|
|
|
|
|
The server it will be running on will be a minimum of a P3 700 with 128MB of RAM. For the most part the threads will open a database and perform a simple function, then go in to a while loop that checks if a bool is false and if not Sleeps for 1000 milliseconds. I will look in to the thread pool idea. If it's less of a strain it will be the better implementation. Thanks for the tip.
|
|
|
|
|
Out of curiosity I ran a test which created 5k threads which incremented a global counter and then slept for 1000ms. In my main loop I reset the saved the global counter, set it to 0 and then slept for 1000ms.
I have a dual 1.2Ghz with 512mb of ram and I got an average of 2k counts per second.
CThread is my own custom thread class which calls Run in a while loop.
class CMyThread : public CThread
{
public:
CMyThread() {}
int Run()
{
g_Count++;
Sleep(1000);
return 1;
}
};
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
#define numThreads 5000
CMyThread* pThread[numThreads];;
for (int i = 0; i < numThreads; i++)
{
pThread[i] = new CMyThread;
bool bStart = pThread[i]->StartThread();
}
#define numLoops 60
int count = 0;
int total = 0;
for (int j = 0; j < numLoops; j++)
{
g_Count = 0;
Sleep(1000);
total += g_Count;
}
float avg = total / numLoops;
return 0;
}
Todd Smith
|
|
|
|
|
hello!
i have a vc++ MDI programm. in this i need a dialog box. the dialog box is not the problem. my problem is the placing of it. is there a way, how i can place the dialog box in a corner (at the bottom left hand corner) forever and ever.
someone in this forum tells me, that i can use the function: "SetWindowPos"
can somebody give me a example how i can use this function?
Lucky
|
|
|
|
|
If you intend to use standard MessageBox, it is not possible. Instead of this create own dialog and use it as you want
|
|
|
|
|
what must i do, to create a own dialog box?
normally i use the vc++ components.
lucky
|
|
|
|
|
Create Dialog resource, align buttons as you want. In popup menu choose "Add Class". In appeared form choose CDialog as base class. That's all.
If you want use your dialog in Modal mode, use method DoModal, otherwise use
Create()+ShowWindow
|
|
|
|
|
Which parts of SetWindowPos you're having problems with?
Also, do you plan to have a dialog which cannot be moved by the user?
Tomasz Sowinski -- http://www.shooltz.com
*** Vodka. Connecting people. ***
|
|
|
|
|
Yes, the user should not move the dialog, but now i want to say, where there dialog is (at a corner).
i don't understand the complete function
lucky
|
|
|
|
|
If you have problems with SetWindowPos, use MoveWindow instead.
Tomasz Sowinski -- http://www.shooltz.com
*** Vodka. Connecting people. ***
|
|
|
|
|
i used MoveWindow in the OnInitDialog().
MoveWindow( 0, 20, 100, 100, TRUE ); (e.g.)
but nothing happens. i want to define the function in the header, there comes an error. what's wrong?
lucky
|
|
|
|