|
is there any way that i can write a generalized program to dynamically detect
any number of Dll in a folder and statically link them.
upto now i have my application that statically links and implicitly loads the dlls. i will detect the newly added dlls and keeps information in File.The infor
mation in the file and registry information is enough. The problem is how i can
my appliation understand the new dlls, how can oi include the headerfiles.
IS THERE ANY POSSIBILITY
|
|
|
|
|
As far as I know, this isn't possible.
Static linking implies that all code be known and identified at link-time, static linking is effectivly dynamic linking with hidden 'glue' that uses staticly bound stubs to dispatch to the dll.
This is possible and very simple to do with dynamic linking provided your class heirarchy supports it.
|
|
|
|
|
Can someone tell me the basic difference between a vector,list and dqueue. just the basic difference is appreciated.
|
|
|
|
|
They all have slightly different performance specifications and operations which make them suitable for different tasks.
std::vector is a dynamic array
std::list is a doubly linked list
std::deque is a hybrid container which is like a list of vectors (from memory)
By default, use a vector.
If you need to add to the front and the back, use a deque.
If you need to be able to insert/remove efficiently from the middle of a container, and never need random access use a list.
|
|
|
|
|
hi there,
<br />
char buf[1024];<br />
StrFormatByteSize(5*1024*1024*1024, buf, 1024 );
unsigned long size = 5368709120;
StrFormatByteSizeA(5368709120, buf, 1024);
(a), (b) is supposed to be 5G Bytes, am i right?
but StrFormatByteSize gave me 1G Bytes
what did i do wrong?
ie version is 6
thanks for your time
|
|
|
|
|
The first param of StrFormatByteSizeA() is a DWORD , 5GB overflows a DWORD . From the docs:The first parameter of this function has a different type for the ANSI and Unicode versions. If your numeric value is a DWORD, you can use StrFormatByteSize with text macros for both cases. The compiler will cast the numerical value to a LONGLONG for the Unicode case. If your numerical value is a LONGLONG, you should use StrFormatByteSizeW explicitly.
--Mike--
LINKS~! Ericahist updated! | 1ClickPicGrabber | CP SearchBar v2.0.2 | C++ Forum FAQ
Strange things are afoot at the U+004B U+20DD
|
|
|
|
|
it works!
|
|
|
|
|
Hi:
In C there is sqrt( ) function which gets the square root of any number. The sqrt(4) = 2 which is = 2 x 2.
I wonder how could I use it to find the 3rd order root, for example sqrt3(8)=2, which is = 2x2x2.
Thanks in advance.
joe,
|
|
|
|
|
Look at the pow(x, y) function.
Steve
|
|
|
|
|
|
What's the easiest way to drop the 0 on .233 floating point variable when displaying.
I'm using visual studio .net c++ for compiler.
Thanks!
|
|
|
|
|
using the format string "%4.3f" should do the trick.
Steve
|
|
|
|
|
Thanks, do you have an alternative solution, I'm not allowed to use printf type functions in my visual studio.net c++ program code.
Thanks!
|
|
|
|
|
I'm surprised that you are not allowed to use something like
CString str;
float xnum = 0.123;
str.Format("%4.3f", xnum);
[equivalent to char str[8]; sprintf(str, "4.3f", xnum);]
-------------------------------
but you can also use _fcvt
int decimal, sign;
char *buffer;
double source = 0.123;
buffer = _fcvt( source, 3, &decimal, &sign);
--------------
result:
buffer = "123"
decimal = 0;
sign = 0;
from MSDN:
"The _fcvt function converts a floating-point number to a null-terminated character string. The value parameter is the floating-point number to be converted. _fcvt stores the digits of value as a string and appends a null character ('\0'). The count parameter specifies the number of digits to be stored after the decimal point. Excess digits are rounded off to count places. If there are fewer than count digits of precision, the string is padded with zeros.
Only digits are stored in the string. The position of the decimal point and the sign of value can be obtained from dec and sign after the call. The dec parameter points to an integer value; this integer value gives the position of the decimal point with respect to the beginning of the string. A zero or negative integer value indicates that the decimal point lies to the left of the first digit. The parameter sign points to an integer indicating the sign of value. The integer is set to 0 if value is positive and is set to a nonzero number if value is negative."
-------------------------
Note that you will get last digit rounding.
You did not indicate if you have to manually do the conversion.
Steve
|
|
|
|
|
Im still new at this. Ive been trying for days, but I still cannot populate a list box from a text file. I need a method. Ive been instructed to read into CList and CStdioFile classes. Prying into the help file to understand this, I came away more confused than ever.
Surely, this is a standard operation! Isn't there a hard and fast method for doing this?
Help! Im desperate!
Travis
|
|
|
|
|
macrophobia wrote:
Isn't there a hard and fast method for doing this?
No.
Permit me to offer an analogy: millions of people use their car to drive to work. Their route is usually a fixed one (from home to work). Yet, no car offers a magic button labelled "Drive to work". You have to:- Start the car.
- Navigate your route to work (by using the accelerator, brake, gears and steering wheel).
- Park the car.
- Turn off the engine.
It's the same with your programming problem. You need to:- Open the file for reading.
- Read each line (see
CStdioFile ).
- Add each line to the list box (see
CListBox ).
- If there are more lines to read, return to step 2.
- Close the file.
That's what programming is all about. Lots of little instructions that allow you to perform a task.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Im coming to that conclusion every day. At least with Assembly language, I expected it. I guess Ive been hoping that all the magic routes have been paved for me with C++.
Thank you for your reply. I'll use your steps to help me put this thing together.
Travis
|
|
|
|
|
Good luck! And feel free to ask questions - we're here to help.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Thank you for making me feel welcomed! I hope to help people some day. (By the looks of things, it will take years! There is alot to know!)
Travis
|
|
|
|
|
That is not necessarily true, just look at how much you have learned in a short period of time...
Steve
|
|
|
|
|
Thats true. I have learned quite a bit. Thankfully, you gave me the help that I needed to get over a snag. This programming stuff isnt too bad if you can get a lifeline now and then.
In fact, it's pretty cool. Well, when I reach some level of mastery, perhaps I can use my real name and help others too.
Ill look for your excellent posts in the future!
Travis
|
|
|
|
|
There is no method to directly fill a list box from the contents of a file. You have to open the file, read lines, add each line to the list box and close the file.
Easiest way is to use the class CStdioFile and
then use the method ReadString. Like:
====================
CStdioFile m_File;
CString m_strLine;
m_File.Open("FileName", CFile::modeRead, NULL);
if(m_File.m_pStream != NULL) /* File opened? */
{
while(m_File.m_pStream != NULL)
{
if(m_File.ReadString(m_strLine))
m_cListCtrl.AddTail(m_strLine);
else
{
m_File.Close();
break;
}
}
}
Steve
|
|
|
|
|
Thank you for this info!
This looks like great stuff!
Please correct me on any misinterpretations I am about to make.
CStdioFile m_File;<br />
CString m_strLine;
I see from the code that m_File is an object of CStdioFile and m_strLine is an object of CString...
m_File.Open("FileName", CFile::modeRead, NULL);<br />
if(m_File.m_pStream != NULL)
take the CStdioFile object (m_File), call it's inherited function (Open), then check to see that the file was successfully opened.
{<br />
while(m_File.m_pStream != NULL)<br />
{
while the file is open and not at the end of its text...
{<br />
if(m_File.ReadString(m_strLine))<br />
m_cListCtrl.AddTail(m_strLine);
...read from the text file and write to the listbox...
else<br />
{<br />
m_File.Close();<br />
break;<br />
}<br />
}<br />
}
...finally close the file and end.
Again, Thank you. But I have two small questions:
1. Does the "Filename" have to point to the full path of the text file, or can I just include it in the build as a resource file?
2. If I have created an object for my listbox (named m_choices), do I substitute that name where you have used "m_cListCtrl"?
Thank you for bearing with me. You may be saving my life!
Travis
|
|
|
|
|
You are a great help!
Thank you, Steve!
Ive got some new wind in my sails!
I studied deeper into CString and CStdio. I fiddled a bit.
I found m_cListCtrl.AddTail(m_strLine); was giving a little trouble...I changed it to m_choices.AddString(m_strLine);
...and BAM! My listbox is functional!
Thank you sooo much. I bet someone else will have the same problem and find this solution! This is great!
Travis
|
|
|
|
|
Hi,
I was wondering if anyone knows why a process would show up in the process list in the short dos 8.3 format and not the long, full name format?
My process shows up as proc~1.exe. How do I get it to show up as process.exe?
Thanks.
|
|
|
|