Welcome Guest.   Make a donation to an author on the site October 25, 2014, 11:52:52 AM  *

Please login or register.
Or did you miss your validation email?


Login with username and password (forgot your password?)
Why not become a lifetime supporting member of the site with a one-time donation of any amount? Your donation entitles you to a ton of additional benefits, including access to exclusive discounts and downloads, the ability to enter monthly free software drawings, and a single non-expiring license key for all of our programs.


You must sign up here before you can post and access some areas of the site. Registration is totally free and confidential.
 
The N.A.N.Y. Challenge 2014! Download dozens of custom programs!
   
   Forum Home   Thread Marks Chat! Downloads Search Login Register  
Pages: [1]   Go Down
  Reply  |  New Topic  |  Print  
Author Topic: Exploring C++  (Read 8888 times)
arunpawar
Participant
*
Posts: 60


View Profile Give some DonationCredits to this forum member
« on: November 22, 2007, 05:41:03 AM »

I have Dev-C++ 4.9.9.2.I'm trying to create fun programs with it.So i pick up something

interesting and I'm attempting to create console based program to get the system details

such as:
1.CPU type (Name,specification,Speed)
2.Installed Operating system
3.Current Time
4.Motherboard Type
5.Cache Memory
6.Memory Slot detection (Type of Memory)

The problem i'm facing is how can i retreive this type of data from system using console based program?If i'm writing the program in C++,what header files i have to include? Which functions of the header are necessary to call in such case?Is it possible to create the same programs in Borland C++ Builder 6?Where to look into the help files?Which methods usually?It is really hard to find something in the help file,i hope i can get some pointer to work with.
Logged
Ehtyar
Supporting Member
**
Posts: 1,236



That News Guy

see users location on a map View Profile Read user's biography. Give some DonationCredits to this forum member
« Reply #1 on: November 22, 2007, 05:52:19 AM »

A few to get you started...
http://www.codeproject.com/system/computerinfo.asp
http://www.codeproject.co...em/system_information.asp
http://www.codeproject.com/system/sysinfo.asp

Ehtyar.
Logged
Gothi[c]
DC Server Admin
Charter Honorary Member
***
Posts: 857



see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #2 on: November 22, 2007, 05:55:56 AM »

Things like detecting memory, cpu usage etc, are very platform specific. Basically, you have to ask the operating system for that info. On windows those will be win32 API calls, on GNU/Linux you can query the files in /proc

Here's an example + source code for windows: http://www.codeproject.co...em/system_information.asp

If you want to make it cross-platform, you can detect the operating system with #ifdef statements and have a block of code for each OS you want to implement.

Yes, this can also be done in C++ builder. C++ builder is fully compatible with C++, but then it will be windows-only of course.

There are functions to get the current time in the C time library which comes with most if not all C++ compilers by default. Info here: http://www.cplusplus.com/reference/clibrary/ctime/ Example here: http://www.informit.com/g...g=cplusplus&seqNum=65

When coding C++, the standard template library is your friend. Reference: http://www.cppreference.com/cppstl.html

Also, lots of things have been done before, and exist in libraries. And since pure C++ is cross-platform, I recommend you stick to cross-platform libraries for your programs if you're not using C++ Builder, in case your users ever want to use your application on a different operating system. (wxWidgets is a good cross-platform library (mainly for GUI, but has increasingly lots of other handy stuff like filesystem access, time, locales, etc,...)

« Last Edit: November 22, 2007, 06:00:22 AM by Gothi[c] » Logged
arunpawar
Participant
*
Posts: 60


View Profile Give some DonationCredits to this forum member
« Reply #3 on: November 26, 2007, 05:33:26 AM »

Thanks all i'm just get started with it.As devcp uses mingw i have to search for files specific to these.I'll let u know abt that.

also i was looking for creating some winamp style visualization with c++ graphics i wonder how to create cool visualization like these.?
Logged
f0dder
Charter Honorary Member
***
Posts: 8,774



[Well, THAT escalated quickly!]

see users location on a map View Profile WWW Read user's biography. Give some DonationCredits to this forum member
« Reply #4 on: November 26, 2007, 05:53:11 AM »

Since you're on windows, consider looking at VC++ 2008 Express instead of devcpp/mingw - it's a more fully-featured product, and it's free.

As for cool C++ graphics and winamp visualisations, get comfortable with C++ and you IDE first...
Logged

- carpe noctem
Gothi[c]
DC Server Admin
Charter Honorary Member
***
Posts: 857



see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #5 on: November 26, 2007, 12:55:00 PM »

As for cool C++ graphics and winamp visualisations, get comfortable with C++ and you IDE first...

Golden advice.
However, once you're comfortable enough with C++, your IDE, and not to forget your debugger, you could use a few methods to achieve those effects.
1) using DirectX (DirectDraw and/or Direct3D)  (windows only)
2) using SDL (cross platform library for 2d graphics or 3d graphics through an opengl cross-platform wrapper)
3) using pure OpenGL (cross platform) good tutorials here(see tutorials menu on the left).
4) for the actual sound response you can use DirectSound (windows only), Audiere (cross platform), SDL(cross-platform) again (see here), or IRRKlang(also cross platform). (there's others too of course, if you google long enough Wink)
Logged
f0dder
Charter Honorary Member
***
Posts: 8,774



[Well, THAT escalated quickly!]

see users location on a map View Profile WWW Read user's biography. Give some DonationCredits to this forum member
« Reply #6 on: November 26, 2007, 05:19:19 PM »

Notice that OpenGL isn't 100% cross-platform - you need some per-platform init code, and to do anything interesting you need extensions, which also requires a bit of platform specific code to use.
Logged

- carpe noctem
arunpawar
Participant
*
Posts: 60


View Profile Give some DonationCredits to this forum member
« Reply #7 on: November 27, 2007, 04:36:44 AM »

Thanks for the advice. cheesy
What is STL? And how it is going to help C++ programmer like me?
Also Where can i see the usage of functions mentioned in header files?For example ctime.h  has time related structure or function where to look for usage?
Logged
f0dder
Charter Honorary Member
***
Posts: 8,774



[Well, THAT escalated quickly!]

see users location on a map View Profile WWW Read user's biography. Give some DonationCredits to this forum member
« Reply #8 on: November 27, 2007, 05:37:14 AM »

STL = Standard Template Library = "libc++"... basically things in the std:: namespace, like vectors and strings.

SDL = Simple Directmedia Layer, graphics (and more) library.
Logged

- carpe noctem
Gothi[c]
DC Server Admin
Charter Honorary Member
***
Posts: 857



see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #9 on: November 27, 2007, 07:13:51 AM »

Notice that OpenGL isn't 100% cross-platform - you need some per-platform init code, and to do anything interesting you need extensions, which also requires a bit of platform specific code to use.

Unless you use it through SDL like I mentioned, which seems to be the easiest way to get (complete) cross-platform openGL applications to compile without editing anything on about any platform

(SDL supports:
"Linux, Windows, BeOS, MacOS, MacOS X, FreeBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX.
The code contains support for Windows CE, AmigaOS, Dreamcast, Atari, NetBSD, AIX, OSF/Tru64, RISC OS, and SymbianOS, but these are not yet officially supported. ")
Logged
arunpawar
Participant
*
Posts: 60


View Profile Give some DonationCredits to this forum member
« Reply #10 on: February 11, 2008, 05:54:59 AM »

I'm going thru confusion after reading herbt scildt book of complete reference.It causesmore
pain than cure.I have some of the questions which are not properly answered by this book,can
you take a look at that & let me know you perspective.

1. What #include<filename> can do?can we use our own C++ file to include in our program,is
it possible to access classes from that file,what about main function in that file,how it
will be treated?

2. What is preprocessor directive?Where and why it is used?(I want to know the situations
and limitations of this thing)

3. When to use which loops i.e when to use "for" or "While" loop?(Actually i think using
"while" in most of the cases will put you into infinite loop mode if you go wrong,right)

4. What are cin,cout (Operators or objects of iostream) in comparison with printf and
scanf?Simmilarly what are scanf & printf?

5.What is Strong type checking & Type casting? (Both sounds simmilar but  type casting  is
rarely used while type checking is abt the code we write ,am i right?)

6.What is late binding & Dynamic binding?(I understand thru books is that till run time your
code is unknown to compiler is known as dynamic binding,i think i m right here.)

7.What is reference variable? What is the major use of this variable?

8.What is Namespace? what are these?
I have searched the internet for them but unable to get quite beginner friendly tutorial for
it.

Just let me know about these concepts of C++.Just post your perspectives about them.
Logged
f0dder
Charter Honorary Member
***
Posts: 8,774



[Well, THAT escalated quickly!]

see users location on a map View Profile WWW Read user's biography. Give some DonationCredits to this forum member
« Reply #11 on: February 11, 2008, 06:35:12 AM »

#1: "#include <file.h>" does exactly the same thing as opening file.h and copy-pasting it where the "#include <file.h>" statement is located. No more, no less.

#2: preprocessor directives are the things that start with a "#" hash sign. It can be used for preprocessor macros (you generally want to stay away from those), pragmas to control compiler-specific behavour, the classic #ifdef/#endif, and perhaps the most important, #include.

#3: you use loops when you need a loop? tongue

#4: cin,cout are C++ iostreams, which are a lot more flexible than C-style scanf/printf (they let you write your own output formatters, and a lot more). They also have the potential to be buffer-overflow safe, which scanf/printf don't.

#5: type checking is done all the time by the compiler, to ensure you don't shoot of your leg doing something stupid. C has pretty weak strong type checking, C++ has relatively strong but not over-insane type checking (contrast that to Pascal which has 'char' and 'byte' types that need typecasting >_<). You use typecasting when you need to convert one "unrelated" type to another - this doesn't happen often with decently designed C++ code, but happens a lot if you need to interface with legacy C code. Prime example is using the PlatformSDK for Windows.

#6: dynamic binding/polymorphism... let's say you have a whole class of output streams you can support (to file, to console, to network, to memory...). You design an interface class for this, with all virtual functions. You can't instantiate this interface class directly, but you can instantiate the concrete derived classes (ie, FileStream, NetworkStream, ...), but all code that uses the streams can use the GenericStream class interface. Using dynamic binding, the "generic" calls are bound to the "concrete" calls of the class you're using.

That explanation was probably a bit confusing, but it's pretty simple in practice.

#7: a reference variable is similar to a pointer variable, but they're not equal. One thing is the syntactic sugar: with a pointer, you need to do "*ptr = value" or "ptr->field = value". With a reference, you can simply do "ref = value" or "ref.field = value". Also, references can't be reassigned, and they don't take up any additional memory - the are the variables they refer to. Think of them as aliases.

#8: namespaces are wonderful Kiss basically, they were created to avoid polluting the global namespace, and having variable/function/class name clashes in large projects, or when using libraries. If two people wrote functions called SuperFormatter(), you'd usually be in trouble, but if they were put in separate namespaces, you aren't.

PS: is this a homework assignment?
Logged

- carpe noctem
nosh
Supporting Member
**
Posts: 1,388


View Profile Give some DonationCredits to this forum member
« Reply #12 on: February 11, 2008, 07:36:36 AM »

Error C:\DC\ARUNPAWAR.CPP 001: Undefined symbol 'herbt scildt'

SCILDT SUX!!! C0M p1lers scuk ev3n M0re!
 

Logged
arunpawar
Participant
*
Posts: 60


View Profile Give some DonationCredits to this forum member
« Reply #13 on: February 12, 2008, 05:08:14 AM »

 Grin
I never ask homework stuff cause i'm graduated with electronics engg major.
Logged
Pages: [1]   Go Up
  Reply  |  New Topic  |  Print  
 
Jump to:  
   Forum Home   Thread Marks Chat! Downloads Search Login Register  

DonationCoder.com | About Us
DonationCoder.com Forum | Powered by SMF
[ Page time: 0.048s | Server load: 0.08 ]