|
I don't know: you should read the API reference documentation at MSDN. Anyway I suppose it works on Microsoft Operating Systems since Windows XP (i.e. Windows XP, Windows Vista, Windows 7).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I use the following code;
ICDBurn *burner = NULL;
BOOL bResult;
if (!burner->HasRecordableDrive(&bResult))
{
printf("Oops—No recordable drive!\n");
}
but it gives error while function calling
burner->HasRecordableDrive(&bResult)
Error is "Access violation reading location 0x00000000"
I think pointer for ICDBurn is not created. What will be the problem. I have to add additional files for that?Abhijit
|
|
|
|
|
Abhijit D. Babar wrote: I think pointer for ICDBurn is not created. What will be the problem.
Of course.
I suggest you downloading (or browsing online) the article author's code.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Look at your code - have you tried to create the burner object? No. And it crashes. What a surprise.
A simple Google search finds this result[^], which is a tutorial with complete code for burning a CD.
Try using some initiative - Google should be your first port of call for a programming question.Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
CodeProject MVP for 2010 - who'd'a thunk it!
|
|
|
|
|
Can i use any API like nero for writing/ reading the CD?.
I found some links but it is some complicated to understand.
http://www.devsource.com/c/a/Techniques/Burn-CDs-in-C-and-C-With-ICDBurn/1/
can you suggest some simple methods.modified on Wednesday, February 10, 2010 7:38 AM
|
|
|
|
|
Abhijit D. Babar wrote: How do I read/write files from a recordable CD?
You read files from a CD like you would from any other medium. Writing the files is a different matter."One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
Friends,
I want to know what Language is used for a particular software. Can i get any tools for it . Iam repeating the question once again i want to Know by which technology a product or software is implemented.
Thanks in Advance.....
|
|
|
|
|
No matter which language you use to develop an application, it has to be compiled to a Window binary which is of PE format for it to be executable.
So you will not be able to find out what language was used to develop it.
The only clue is the linker version field that is part of the PE format.
|
|
|
|
|
Pardhu2 wrote: I want to know what Language is used for a particular software.
If it is a standard executable (i.e. a native one) you usually cannot find what language generated it.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
What will happen if there are mutiple #define with same name?
For eg:
in one file there is,
#define MY_NAME 1
and in another file,
#define MY_NAME 3
I have seen that the compiler gives a warning for this.
But what will be the value of "MY_NAME" when it is used? is it 1 or 3?
|
|
|
|
|
Who knows? That's why the compiler is giving you a warning. It'll probably be defined differently in different modules. L u n a t i c F r i n g e
|
|
|
|
|
First I guess, this is bad design, why ? two definition, you should have ideally one define ( in header file) and include that file where the value being used.
On other hand technically if two files are unrelated files, each should have there respective values.
If one file is calling function in another or they are two separate header files, included in a single cpp file, you compiler should give error,
|
|
|
|
|
The compiler gives a warning in this case because even though this practice is totally acceptable, it may indicate some type of oversight. In cases like this, the compiler's warning can be ignored if it is intentional; otherwise, it should be corrected.
As for why this is acceptable by the compiler, it is because it does not violate any rules of the language. The value of the defined symbol when it is referenced depends on the order of the two #define s that was read by the compiler when it is in the preprocessing stage. The preprocessor will use the value of the one that appeared cloest to the reference to substitute the symbol. By compile time this substitution is already done.
I would avoid this practice since it is error prone.
|
|
|
|
|
If the compiler gives a warning, fix it.
either rename one of the offending define or depending on what you want to do, you can try something like this to re assign value to a #defined value:
#define MY_NAME 1
#ifdef MY_NAME
#undef MY_NAME
#define MY_NAME 3
#endif Watched code never compiles.
|
|
|
|
|
Hi,
there is no need to test (see MSDN[^]), you can reduce it to:
#undef MY_NAME
#define MY_NAME 3
as #undef never complains about undefined symvols.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that. All Toronto weekends should be extremely wet until we get it automated in regular forums, not just QA.
|
|
|
|
|
Yep you're right.
Watched code never compiles.
|
|
|
|
|
With #define constants, you should try to surround the value with paranthesis. It also is safer to check if there is a name conflict and throw an error if there is. You do not want to use the wrong constant in another file! This could happen with the use of #undef
#ifdef MY_NAME
#if MY_NAME!=(3)
#error Conflicting definitions of MY_NAME
#endif
#else
#define MY_NAME (3)
#endif
|
|
|
|
|
dipuks wrote:
But what will be the value of "MY_NAME" when it is used? is it 1 or 3?
You would have spent less time just trying it yourself. "One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
I am using file I/O in C++ as a way to save a game:
ofstream outputFile("name.txt");
ifstream inputFile;
outputFile << name;
outputFile.close();
A am using the above code for several other important variables, but I am concerned by the fact that once the game is saved, the player can simply open the .txt files and change the variables within. Is there some way for me to save as a different file type, or to somehow encrypt or protect the data within the .txt files?modified on Wednesday, February 10, 2010 3:42 PM
|
|
|
|
|
Eugen J. Jung wrote: Is there some way for me to save as a different file type, or to somehow encrypt or protect the data within the .txt files?
Well, there are a few solutions:
1- continue using text files but encrypt the file. (google a bit about that, you will find some answers)
2- use binary format; most games use binary files because it's faster and easier to "hide" sensitive data.This signature was proudly tested on animals.
|
|
|
|
|
Hello,
I need to call all global functions(probably several) that are exported in a DLL but using only single generic pointer.
I am loading dll with LoadLibrary function and getting all exports with GetProcAddress, this needs to be type casted with that function pointer of which type the function is really itself.
I don't know how many exported functions are there in DLL and how many no of parameters on which they are operating.This prevents me to define generic type of pointer for every function call working for GetProcAddress.(void* is possible but still we cannot generate function call, gives compile time error)
This problem can be resolved when you have all member functions of some class. You can rely on 'this' of that class and function pointer can be declared of that class. Moreover all functions with single function pointer can be called with some boost API bindings.
But for all global and EXPORTED functions of DLL, how this problem can be solved.
Regards
Muhammad Usman Khalil
|
|
|
|
|
You can't call a function without knowing the number and type of parameters it requires - whether a free function or a member function, whether statically linked or dynamically linked, whether directly or through a pointer. How would you know what arguments to provide? How would the compiler be able to implement the call, passing arguments correctly and using the correct calling convention?
To be called via a pointer, member functions of a class need everything that a free function would plus an object to act on.
If you really needed to use void pointers, you will need to find or put together something that couples the pointers with some sort of identification of the function signature so that the pointer can be appropriately cast when used. You would also need to work something out to provide the proper arguments and dealing with any return value.
Either via documentation, header file, or some mechanism in the dll itself, you need to have information about the exported functions in order to use them.
Good Luck.Please do not read this signature.
|
|
|
|
|
You can use the dumpbin command with /EXPORTS to get the parms.
/edit sorry, only seems to show the parms for class functions.modified on Tuesday, February 9, 2010 4:28 PM
|
|
|
|
|
Use a def file. I've never had to use GetProcAddress and regularly export void * functions with dll's.
|
|
|
|
|
Respectfully !!
My goal to call every exported function of DLL without need to declare function pointers.If DLL contains 100 funcs(exported methods) having different types(i.e their return type and in/out params) I need 100 function pointers. Every time GetProcAddress needs to be type casted with those 100 func pointers. Creates horrible maintainaince nightmare. Every time new function included, you need pointer of that type to be declare in code.
Wot about delegates..?
Delegate usage prevents user to use GetProcAddress and require any function pointer to work with.
It wraps all functions to which you want to call at run time. Thus we'll not need any function pointer or need to know the type for that pointer.
Once we know the function Name,in/out params and their types, Without using GetProcAdress, we can call these functions using delegates.
But for this we need to work in managed code sustains within C#.NET
Wot about delegates..?
Delegate usage prevents user to use GetProcAddress and require any function pointer to work with.
It wraps all functions to which you want to call at run time. Thus we'll not need any function pointer or need to know the type for that pointer.
Once we know the function Name,in/out params and their types, Without using GetProcAdress, we can call these functions using delegates.
But for this we need to work in managed code sustains within C#.NET
Regards
Usmanmodified on Wednesday, February 10, 2010 3:37 AM
|
|
|
|