|
thanks for the feedback.
well, I think your right. It would be better to just implement get and set functions rather than what I've been doing.
The only possible draw back is speed, but there might not be any difference (I think it's just my own paranoia getting to me).
Superman suggested I could check the assembly output, does this mean the assembly code that is produced when code is compiled to read a variable from a get function and read a variable directly ? I don't know how to check the assembly output or what part of it to examine ?
Ok, the assembly / machine code output of variable = instance.getVar() is not the same as variable = instance.var
I took timed measurements (optimizations on), reading from a variable directly seemed faster than using a function, but I'll reimplement the code for my actual project and see if there's a noticable difference in speed. If there isn't then I think I'll have to agree that in 99.99% or 100% of cases, it would be better to use the standard method.
modified on Monday, December 28, 2009 5:39 AM
|
|
|
|
|
I've removed the macro I was using in my project and I'm using the standard protected access specifier with get and set functions as people have recommended, and the difference in fps (with VSync turned off) is unnoticable.
So the classes are correctly encapsulated, coded in a standard format and there's no drop in performance.
So you were all right that making variables protected and accessing them through get functions is probably in 100% of cases the best way to go, when direct outside modification to variables should be prevented.
thanks for all the advice.
|
|
|
|
|
I'm glad that you've come around. Wikipedia has a good little collection of quotes about code optimization that you might like: clickety[^]
|
|
|
|
|
thanks very much.
useful quotes.
|
|
|
|
|
Amen
Bram van Kampen
|
|
|
|
|
Hello,
I want to display cyrillic alphabet in a text box read from a file but I cannot display it properly and when displaying I can see only ?????. Please help me to display cyrillic alphabet characters.
Kind regards,
Bhanu
|
|
|
|
|
You are either doing a non-Unicode build, or you do not have the language installed on your computer. If you can see and type the said character in notepad, then you have the language installed on your machine. You just need to do a fully Unicode build.
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
In TagInfo.cpp,i assigned value for the varaible BlinkBr =1.
in the same class i have function which is using this variable for fillign rect as below
pDC->FillRect(StRect,&Brush[BlinkBr]); in the function DrawBar.
Im callig this fucntion from differnt class like
From GroupView.Cpp
pTagBase->DrawBar(pMemDC,x,clnRect,FALSE);
Here the BlinkBr is as it 1 and its working fine.
But assigning value for BlinkBar is not done in DrawBar,its in another function in TagInfo.cpp
Im using this same fucntionality in another class
From Tuning.Cpp
pTagBase->DrawBar(pMemDC,((rTuningScreen.right+AlignX(5,rTuningScreen))/8)*7,rTuningScreen,FALSE);
But while debugging when the cursor goes to this fucntion,the BlinkBr show some garbage value.
I used headerfile everything like Groupview.But this class shows error.
Why its happening?
The same problem i find in different functionalities.Pls help me.
Anu
|
|
|
|
|
Having garbage sounds like the variable is not being initializated correctly.
Are you giving the value at the beggining of your DrawBar function? or at the beggining of your class?
it could be that in your GroupView you use more parts of TagInfo.cpp than only the function DrawBar and because of that you are having the value initialized, but... in your Tuning.cpp you just call the function and the variable hasn't been correctly initializated, but the debug mode does it for you giving garbage value.
Try putting some stop points for the debugger in your TagInfo.cpp and see what happens when you get in the class coming from the other two using the function.
Regards.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpfull answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
When i debugged,i found in Tuning.cpp,before that DrawBar fucntion,im calling one more TagInfo.cpp function called DrawTuning().But in that function i dont use this variable..in watch window i can find that till BlinkBr value is in 1 until the last line of DrwaTuning() fucniton.When the cursor gets out of the fucntion,suddenly BlinkBr value has gone to some garbage value like 8603485..
Anu
|
|
|
|
|
Are you giving values to BlinkBr locally? or in the constructor?
Your description sound like using local but needing global values.
On the other hand, is BlinkBr needed always with value 1?
If yes... why don't you use a constant instead of a variable?
#define BLINKBR 1 // placed in your main .h
If not... you can declare your BlinkBr in a place and acces it using "extern" where you need it.
Regards.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpfull answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
Hi masters!
I'v written a code by which I can add a new section to pe files. But as I've noticed, some pe files are a little more intelligent than I thought Because as soon as I run them after I add the new section, a message says to me that this file has been modified! Even when I change a few first opCode begining at their entry point without add any section to them and without making any other change to them, the same message appears! Do you think they're "packed"? How can I find out? How can I find the original entry point?
Thank you masters!
|
|
|
|
|
Actually what you want to achieve?
First thing, you can modify, but which tool you are using hexeditor?
If you want to get the Load address which is entry point of the PE.
then you can get that.
HMODULE hModDLL = LoadLibraryEx( "path\name.exe", NULL, DONT_RESOLVE_DLL_REFERENCES );
Величие не Бога может быть недооценена.
|
|
|
|
|
Is there any file browser control in MFC? my requirement is, the application should allow the user to browse a file, based on the user selection i should get the selected file name and the corresponding file path to do some operations on that file. please provide the solution for this problem, thanks in advance
Regards,
Anil
hi
|
|
|
|
|
Why don't you just use CFileDialog class?
Thank you masters!
|
|
|
|
|
A sample code to select Text/CSV file here:
CFileDialog l_SampleDlg(TRUE,NULL,NULL,OFN_OVERWRITEPROMPT,"Text Files (*.txt)|*.txt|Comma Separated Values(*.csv)|*.csv||");
int iRet = l_SampleDlg.DoModal();
CString l_strFileName;
l_strFileName = l_SampleDlg.GetPathName();
if(iRet == IDOK)
MessageBox(l_strFileName);
else
MessageBox("No File Selected!");
--
"Programming is an art that fights back!"
|
|
|
|
|
|
Well, no responses, but I was digging through the cheat engine source and I found
VOID
RtlCopyMemory(
IN VOID UNALIGNED *Destination,
IN CONST VOID UNALIGNED *Source,
IN SIZE_T Length
);
... Go me... cheers!
|
|
|
|
|
|
Im not so sure I can use some of those functions you mentioned as they include Windows.h (the goal is a driver that is injected into the kernal that will read/write ram), I dont have my DDK installed as a virus ate my system =(. but Ill check em out. Thanks man!
EDIT: new question, maybey it will get answered before I find the answer: How do I receive the debug messages from my driver?
ie)DbgPrint("Exception in GetMemoryRegionData\n");
modified on Saturday, December 26, 2009 3:10 PM
|
|
|
|
|
Mattzimmerer wrote: How do I receive the debug messages from my driver?
DebugView from sysinternal DebugView[^]
Be wary of strong drink. It can make you shoot at tax collectors - and miss.
Lazarus Long, "Time Enough For Love" by Robert A. Heinlein
|
|
|
|
|
Kernel mode drivers are written in C and not assembly.
When in kernel mode memory is divided into paged and non-paged pool.
If the function you're currently in is non-pagable you cannot safely access memory in the paged pool.
You will need to properly understand memory management in Windows especially from the kernel mode to do the task safely.
|
|
|
|
|
Yea, I'm decent with C, I just don't know my way around the kernel to well. I've noticed a few sources I've pulled used _asm{} in driver code so I know you can do it. Anyways thanks for the input. Anything that points me to the prerequisite knowledge is greatly appreciated.
|
|
|
|
|
Hi,
Mattzimmerer wrote: I just don't know my way around the kernel to well
Well, IMHO, you need to know the kernel inside Out, and Backward Front, before you should even attempt to mess with the Hardware end of Memory.
Otherwise, it is bound to end up in tears!!
If you explain to us what you want to achieve in the first place, I'm quite sure that one of us can then point you in a direction to reach your goal without resort to that sort of hardware access.
Bram van Kampen
|
|
|
|
|
yea, I can do what I'm trying to do without this kind of hardware access, basically I'm going for a kernel level readprocessmemory(). Dont worry friend, I welcome the tears of learning! I recognize that this is not an easy thing to do. Ok what was my question, ohh yea signing drivers. I seemed to have managed to test sign my driver and boot my OS in a mode so I can use test signed drivers (using vista64x, and wow its a pain, I was encountering so many less problems in vista 32x)
Right now my biggest problem is loading the drivers. I have been using OSR Loader on vista 32x without a problem, but on 64x none of the OSRLoader exe files can even open up the sample drivers that I built out of the WDK library.
If no one gives me a better solution my current scope is writing INF files...
So I really don't wanna hear its hard and I need to know this and that, I'm learning this and that and beleive me its so much fun (im a computer engineering major so this stuff is to my benifit)! My GF hates it lol...
I guess I have one question: Is it possible to correctly sign a driver using the makecert command in shell? I'm probally missing the grasp on that whole area...
|
|
|
|