Leana
-
Gesamte Inhalte
73 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Leana
-
-
och mann ich dreh gleich durch....
bei dem gibt es ne fehlermeldung
x.*funcp(strProzess, strBack);
fehlermeldung:
rror C2064: term does not evaluate to a function
d:\steffi\systemabfragentest\erweiterungsnapshot\erweiterungsnapshotdlg.cpp(1161) : see reference to function template instantiation 'void __thiscall CSystemInfo::GetActualProcInformation(class CString,int,void (__thiscall CErweiterungSnapSh
otDlg::*)(class CString,class CString))' being compiled
-
jetzt hab ich es doch geschafft das er sich übersetzen wollte...
also ich guck mal ob es geht, ich versteh diesen compiler echt net
kannst mir das mit dem outline, inline erklären
-
er kann nicht linken
-
jetzt bekomm ich ständig linkerfehler
keine ahnung was falsch ist
kannst du nochmal drüber gucken
in der klasse steht
//öffentliche methoden
public:
template <typename returntype, class C>
void GetActualProcInformation(CString strProzess, int iInfoArt, returntype(C::*funcp)(CString,CString) )
{
C x;
int iStelle = FindPlace(strProzess);
CString strBack;
switch(iInfoArt)
{
case CPU_AUSLASTUNG:
strBack = m_ProzessArray[iStelle].GetWert();
break;
case VERGANGENE_ZEIT:
strBack = m_ProzessArray[iStelle].GetTime();
break;
case HANDLE_PROZESS:
strBack = m_ProzessArray[iStelle].GetHandleCount();
break;
case P_ID:
strBack = m_ProzessArray[iStelle].GetProzessID();
break;
case THREAD_HANDLE:
HANDLE = m_ProzessArray[iStelle].GetThreadHandle();
//strBack
break;
default:
break;
}
x.*funcp (strProzess, strBack);
}
mein aufruf in der anderen klasse:
//funktionspointer erstellen
void (CErweiterungSnapShotDlg::*pfunction)(CString strProzess, CString strWert);
// jetzt zeigt pfunction auf CallbackFunction
pfunction = &CErweiterungSnapShotDlg::CallbackFunction;
CString strProc = m_ListProzesse.GetItemText(0,0);
m_System.GetActualProcInformation(strProc, 1, pfunction);
wo liegt der fehler
-
ok ich hab das jetzt umgesetzt, mal schauen ob es geht.
kannst du mir aber bitte erklären warum ich fehler bekomme, wenn es outline ist?
und es bei inline das übersetzen funktioniert
-
ja, genau, dass sieht schon viel besser aus!
danke
kannst du mir nur kurz erleutern, da wo du Param 1 und param 1 hast
kann ich ja auch z.b. CString oder int oder so reinschreiben oder, wenn das fest definiert sein soll?
-
das muss schon irgendwie gehen, aber wie?
templates vielleicht!
kann mir jemand helfen!
schließlich sollen ja die schnittstellen allgemein gehalten werden und nicht nur von diesem einem dialog
-
hallo ich habe eine methode in meiner datenhaltungsklasse, die den paramter einer callbackfunktion bekommen soll.
in meiner anderen klasse, die diese methode aufrufen soll erstell ich den
funktionspointer
//funktionspointer erstellen
void (CErweiterungSnapShotDlg::*pfunction)(CString strProzess, CString strWert);
// jetzt zeigt pfunction auf CallbackFunction
pfunction = &CErweiterungSnapShotDlg::CallbackFunction;
nun will ich die methode der datenhaltungsklasse aufrufen
und den funktionspointer übergeben
mein problem ist, welchen datentyp muss ich denn in die methode reinschreiben für den funktionspointer, es soll allgemein gehalten werden...
also egal in welcher klasse diese methode aufgerufen wird, es kann immer ein beliebiger funktionspointer mitgegeben werden....
bitte, kann mir jemand helfen?
-
ich habe jetzt keine lust, deswegen ewig rumzureden...
ich habe es implementiert und bei mir funktioniert es nun mal....
-
hallloooooooooo
das problem wurde gelöst
udn wie du eigentlich wissen müsstest, dass wenn man eine variable zu einem ctrl anlegt und diesem einen wert zuweist, dass das dann funktioniert und der wert gleich angezeigt wird ohne update!
(siehe beschreibung!)
also ich hab es so beschrieben wie es auch ist, es hat ja nur net unter 98 funktioniert
also.....
ich wünsche dir, dass du bald mehr erkenntnisse dazu gewinnst
-
ist schon ok!!! *lach*
ja da bin ich auch gerade drauf gekommen mit der funktion
und es geht! *jipiii*
ist anscheinend ein updateproblem unter 98
und glaube mir, es geht unter 2000, mach ich doch und es funkt
aber danke für dienen hilfe
-
Also es wird geprüft, ob es 95/98 ist, weil man ab 2000 die CPU Auslastung anders ausgelesen werden muss.
die Variable m_strGesamtauslastung ist die von meinem Edit Ctrl
if(m_strVersion != W95 && m_strVersion != W98)
{
long lAusgabe = m_System.GetTotalUsage();
m_strGesamtauslastung.Format("%d", lAusgabe);
}
else
{
DWORD dwUsage = m_System.GetCPUUsage9x();
m_strGesamtauslastung.Format("%d",dwUsage);
}
unter 2000 funktioniert es, deswegen wundert es mcih ja das es unter 98 nicht geht.
meine erkenntnisse, dass meine threads funktionieren, habe ich natürlich durch das debuggen unter 98 gewonnen.
bin ja net blöde, nicht
und ich arbeite ohne updateData(false);
also kann mir jetzt jemand helfen, bitte!!!
-
blöde sprüche helfen mir nicht weiter!
ich weiß ja nciht woran es liegt das 98 es net anzeigt, dazu brauch ich nun mal ne lösung
-
ja bin mir sicher, der thread wird gestartet
wirft regelmäßig seine messages mit den werten
das fenster fängt die auf
und schreibt sie auch in die variable von dem editctrl
daher liegt das wirklich nicht am thread, sondern nur an der ausgabe!
unter 2000 oder nt schreib ich das auch einfahc in die variable udn es wird angezeigt
es geht nur nciht unter 98
-
nein mit den threads hat das nichts zu tun!
die werte schicke ich an das fenster aus den threads heraus
und diese fange ich im fenster auf
das problem ist nur das anzeigen
-
Also ich hab ein Dialog, auf den mehrere Editfelder sind.
eins davon wird ständig mit einem neuen wert gefüllt, bzw. sollte es
ich hab mir hierfür einen thread gebaut!
mein problem ist, dass sich die werte nicht anzeigen unter 98
ich hab für dieses editfeld eine CString variable angelegt und weise den wert entsprechen zu.
unter nt/2000.... funktioniert das ganz einfach
zuweisen -> und man sieht es am dialog
unter 98 funktioniert das nicht!!!
warum?
mit UpdateData() hab ich es probiert -> fehlermeldung, schluckt er nicht
oder UpdateWindow() macht gar nichts!!!
hat jemand dazu ne lösung!?
ich verzweifel sonst :confused:
-
Hi,
also die Angaben zur GH1 und GH2 FIAE sommer 2003 hab ich mittlerweile gefunden!
und die Lösung zur GH2 auch!
aber GH1 gibt es ncoh keine lösung!
hat da jemand evtl schon irgendwas gefunden udn ich hab das nur übersehen?
danke
-
Sehe ich nicht so
Bei GH1 war ich schon 20 min früher fertig und bei GH2 war es stressig
aber ich denke das liegt einfach an dem eingenen wissen und was einem besser liegt
-
ein paar aus der Fürther BS werden auch mit dabei sein, ist ja wohl klar
-
ok ich prbier mal
-
dann muss das ja ne globale variable sein! richtig?
-
hätte trotzdem ncoh ne doofe frage !
wie mach ich das mit dem flag!?
wie sag ich ihm, bitte versuch dich mal zu beenden!?
-
Ok ich guck mal ob ich das irgendwie hinbekomm!
mal schauen
und danke für eure antworten
-
Also ich starte aus einer anwendung heraus einige threads!
die thread id kann ich mir auch merken
nun möchte ich beim beenden meiner anwendung allen threads sagen, "beende dich"
nun ist die frage wie ich das machen kann!
ich müsst ja eigentlich jedem einzelnen thread sagen, ende!
hat jemand ne ahnung wie das gehen kann!
ich arbeite mit VC++ 6.0 und mfc
danke für die hilfe
:confused:
Funktionspointer übergeben
in C und C++
Geschrieben
ich hab nur die klammern um x.*fppointer vergessen, danke dir
super hilfe...
wenn du aber bitte trotzdem noch erklären könntest, warum das inline stehen muss