|
thanks....
|
|
|
|
|
I have a struture with a number of member array variables
eg:
struct DB
{
float IV [300];
char FAIL [300];
char FD [600];
float NCP [600];
float NLH [600];
float NENTH [600];
float NKVAL [30][600];
.
.
.
};
I have declared pointer object for this structure. This object is shared by other application using shared memory and the other application manipulates the values directly using the member variables eg: Es->IV[35] = 5.369;
Is it possible to raise an event when any of the member variable changes?
Anybody please help.
|
|
|
|
|
Get the other application to send you a message, or use event notifiers as Superman suggested to you earlier.
The best things in life are not things.
|
|
|
|
|
You have posted this twice now.
The technique suggested by Superman is the only way.
|
|
|
|
|
multiple applications sharing the same memory space directly is dangerous in a lot of circumstances, be sure to code as to prevent simultaneous data access
|
|
|
|
|
BOOL CSimpleFinderView::Findx(CString str)
{
return FindText(str,FALSE,FALSE,FALSE);
}
I have wrote above function in view class derived from CRicheditview. I will call this function from mainfrm class.
Consider following example text present view.
"function is not working, so remove the the function"
To find the word "function", I traps characters at mainfrm pretranslate message and calling above function for every key pressing.
Keypressed | Result
--------------------
f | function is not working, so remove the the function
fu | function is not working, so remove the the function
Findtext() selecting the second occurrence of the word function. But it suppose to be first one.
I feel this CRichEditView::FindText() will not help
Can u suggest any other solution?
|
|
|
|
|
|
I have a structure like this
struct ex
{
float pv[1500];
char sp[2000];
float ap[2000];
.
.
.
.
//some 100 arrays of float, char and short
}
ex *Pro;
I have declared an object for this struture and this is going to act as data source for my application. I have created shared memory for this data with another application and hence data is manipulated in the other application. Since the structure is shared whenever a value is changed in the other application, the changed value is reflected in this application.
Eg: whenever "Pro->pv[35]" is changed to 2.5556 in the other application, the same value is seen in this application.
But What I need is an event or a function that should be called whenever any of the variable is changed. If "Pro->pv[35] " is changed the function should be called which should in turn tell me the variable changed and the value.
|
|
|
|
|
Create a class instead of the structure.
Make all you variables as private members.
Write public functions that will modify the variables.
This way the public functions can call other functions or fire events to notify other observers.
You can otherwise go for a full fledged observer pattern where all observers can register events or callbacks to be called as a result of a data modification.
|
|
|
|
|
Thanks for your suggestion.
But I cannot create class as you said. because the structure object is shared by other application using shared memory (createfilemapping() and Openfilemapping()) In the other application the member variables of the struture object are directly accessed without using any function.
Kindly suggest some other ideas if I could trap the change of the struture object's member variable.
Thanks in advance
|
|
|
|
|
There is no way to detect a change like this with shared memory, you're either going to have to create a signalling mechanism -windows message, pipe or socket message, or COM call/event
I'd suggest a COM 'Broker object' would be a much more appropriate method of handling this
|
|
|
|
|
If you really can't change the other application, then you'll have to set up an observer pattern within your own, and have a 'watcher' observe the values that you're interested in by polling them in regular intervals. The issue I see with such a system is that as there is no direct connection, a value might be changed multiple times before the watcher registers the change. More to the point, a value may be changed and then changed back to the original value, preventing the watcher to register the change at all!
If that would be an issue for your program, then this setup wouldn't work. OTOH, if you're only interested in current values rather than the actual changes, then it should be good enough.
|
|
|
|
|
hi there,
as part of my degree at uni, i am required to write a questionnaire, containing 3 questions, each with 4 possible answers, one of these must be right, one partially correct, one slightly wrong, and one obviously wrong.
having never used C++ before, i thought that this would be a good place to come for help.
thanks in advance for any help
|
|
|
|
|
Welcome at MFC/C++ forum and please, read HOW TO ASK A QUESTION[^] before posting again.
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]
|
|
|
|
|
You need to first learn C++. Buy a book and learn it, then only you will be able to generate questionnaire correctly.
|
|
|
|
|
What makes you think that people here would give you the answers so that you can gain a degree? Would you trust a doctor who gained his qualifications in this way?
The best things in life are not things.
|
|
|
|
|
Richard MacCutchan wrote: Would you trust a doctor who gained his qualifications in this way?
Well, I trust Doctor Who.
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]
|
|
|
|
|
Ho Ho! (who who)
The best things in life are not things.
|
|
|
|
|
Avoid multitasking if you can!
|
|
|
|
|
Member 7861656 wrote: having never used C++ before, i thought that this would be a good place to come for help.
thanks in advance for any help
So what exactly is your question? Be specific. Provide details as to what you've tried thus far.
"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
"Some people are making such thorough preparation for rainy days that they aren't enjoying today's sunshine." - William Feather
|
|
|
|
|
hello, i try to compile somthhing into 64x
1>------ Rebuild All started: Project: software, Configuration: Release x64 ------
1>Build started 21-4-2011 12:29:50.
1>_PrepareForClean:
1> Deleting file "x64\Release\software.lastbuildstate".
1>InitializeBuildStatus:
1> Touching "x64\Release\software.unsuccessfulbuild".
1>ClCompile:
1> actions.cpp
1> admin.cpp
1> allocator.cpp
1> baseevents.cpp
1> beds.cpp
1> chat.cpp
1> combat.cpp
1> condition.cpp
1> configmanager.cpp
1> connection.cpp
1> container.cpp
1> creature.cpp
1> creatureevent.cpp
1> cylinder.cpp
1> database.cpp
1> databasemanager.cpp
1> databasemysql.cpp
1> databasesqlite.cpp
1> depot.cpp
1> dispatcher.cpp
1> Generating Code...
1> Compiling...
1> exception.cpp
1> fileloader.cpp
1> game.cpp
1> gameservers.cpp
1> globalevent.cpp
1> group.cpp
1> house.cpp
1> housetile.cpp
1> ioban.cpp
1> ioguild.cpp
1> iologindata.cpp
1> iomap.cpp
1> iomapserialize.cpp
1> item.cpp
1> itemattributes.cpp
1> items.cpp
1> luascript.cpp
1> mailbox.cpp
1> manager.cpp
1> map.cpp
1> Generating Code...
1> Compiling...
1> monster.cpp
1> monsters.cpp
1> mounts.cpp
1> movement.cpp
1> networkmessage.cpp
1> npc.cpp
1> otpch.cpp
1> otserv.cpp
1>..\otserv.cpp(243): warning C4273: 'getch' : inconsistent dll linkage
1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\conio.h(128) : see previous definition of 'getch'
1> outfit.cpp
1> outputmessage.cpp
1> party.cpp
1> player.cpp
1> position.cpp
1> protocol.cpp
1> protocolgame.cpp
1> protocolhttp.cpp
1> protocollogin.cpp
1> protocolold.cpp
1> quests.cpp
1> raids.cpp
1> Generating Code...
1> Compiling...
1> scheduler.cpp
1> scriptmanager.cpp
1> server.cpp
1> spawn.cpp
1> spells.cpp
1> status.cpp
1> talkaction.cpp
1> teleport.cpp
1> textlogger.cpp
1> thing.cpp
1> tile.cpp
1> tools.cpp
1> trashholder.cpp
1> vocation.cpp
1> waitlist.cpp
1> weapons.cpp
1> Generating Code...
1>libboost_filesystem-vc100-mt-1_46_1.lib(v2_operations.obj) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
1>
1>Build FAILED.
1>
1>Time Elapsed 00:04:48.94
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
so i updated so far also the libboost from 1.44 into 1.46 and i still get some error, can someone help me please with this? thanks!
|
|
|
|
|
This is happening because the boost library is 32-bit and the executable that you're creating is 64-bit.
You may have to build the boost source using a 64-bit compiler.
I found this site from where you can download the 64-bit version - http://boost.teeks99.com/[^]
|
|
|
|
|
hello superman,
first of all i want to thank you for your fast reaction!
now as i downloaded 'boost_1_46_1-vc64-bin.exe' and extracted it, i got a full folder with libs.
from vc 80/90/100
currently i use those libs:
libboost_date_time-vc100-mt-1_46.lib
libboost_date_time-vc100-mt-s-1_46.lib
libboost_date_time-vc100-mt-sgd-1_46.lib
libboost_filesystem-vc100-mt-1_46.lib
libboost_filesystem-vc100-mt-s-1_46.lib
libboost_regex-vc100-mt-1_46.lib
libboost_regex-vc100-mt-s-1_46.lib
libboost_regex-vc100-mt-sgd-1_46.lib
libboost_serialization-vc100-mt-s-1_46.lib
libboost_system-vc100-mt-1_46.lib
libboost_system-vc100-mt-s-1_46.lib
libboost_system-vc100-mt-sgd-1_46.lib
libboost_thread-vc100-mt-1_46.lib
libboost_thread-vc100-mt-s-1_46.lib
libboost_thread-vc100-mt-sgd-1_46.lib
so here is my next question, i have just replace the onces of folder lib64(boost) or another 'vc'? or just put all of the 3 kinds in it (80,90,100)
thanks!
modified on Thursday, April 21, 2011 10:14 AM
|
|
|
|
|
Not really clear about what you're asking, but if you using Visual Studio 2010, use 100 and if you're using Visual Studio 2008, use 90 and if you're using Visual Studio 2005, use 80.
|
|
|
|
|
i use microsoft visual studio 2010 ultimate, so its more clear now that i don't need the vc 80,90
edit: i now replaced the selected libs of the lib64 folder and overwritten the originals of the 32x.
i am compiling now, i will post here the results
|
|
|
|