Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » zugriff auf tchar anderer klasse

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.09.2006, 12:06 Uhr
~kielfahrer
Gast


Hi,

wie kann ich von der einen Anwendungsklasse auf die Membervariable (TCHAR) einer anderen Anwendungsklasse zugreifen? Ich kann zwar auf int und bool Variablen zugreifen aber bei TCHAR bekomm ich nur Datenmüll, lauter Ì.

Die suchergebnisse in diversen Foren und Google beschränkten sich nur auf Klasseninterne zugriffe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.09.2006, 12:37 Uhr
ao

(Operator)


Das liegt nicht an der Art des Zugriffs. Vielleicht ist die Variable nicht initialisiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.09.2006, 13:24 Uhr
~kielfahrer
Gast


in der klasse a wird ein pfad in dieser variable gespeichert. wenn ich ihn mir per messagebox dort direkt ausgeben lasse steht auch das drin was drinstehen soll. greiff ich jetzt von der anderen klasse drauf zu ...


C++:
CSettingsLader Settings;
MessageBox(NULL,Settings.sPfad_Logdatei,"ERROR",MB_OK);



... kommt nicht das dabei raus was drin sein sollte.

die funktion die die variable initialisiert wird vorher aufgerufen, bevor die funktion der anderen klasse aufgerufen wird, die auf die variable zugreift.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.09.2006, 13:48 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Zeig mal was mehr Code. Ist das denn die selbe Instanz in der du die Variable füllst und später wieder abfragst?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.09.2006, 13:53 Uhr
xXx
Devil


Hmm ...
C++:
CSettingsLoder oSettings;
MessageBox(NULL, oSettings.GetLogFilePath(),  NULL, MB_OK | MB_ICONERROR);

Naja ... also Error braucht man net angeben... ist std. und zum anderen müsstest du nen TEXT() oder nen _T() Makro drumsetzen ... hmm und das ganze buildest de unicode oda was?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.09.2006, 15:22 Uhr
~kielfahrer
Gast


Die MessageBox war nur da um zusehen was in der Variable drinsteht.

Hier wird eine Funktion aufgerufen die in einer anderen Klasse steht.


C++:
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
...
    if(!cfg._LadeSettings())
    {
    return 0;
    }
...
}



Diese Funktion wird aufgerufen, die sich wie gesagt in einer anderen Klasse befindet. Diese schreibt auch die Daten in die TCHAR Variable.

sPfad_Logdatei ist TCHAR mit MAX_PATH und trägt den Ort wo die logdatei gespeichert werden soll
sPfad_Anwendungspfad ist TCHAR mit MAX_PATH und trägt den Pfad des "Anwendungsdaten" Verzeichnis vom Aktuellen Benutzer

Wenn ich hier eine Messagebox reinsetze und mir sPfad_Logdatei ausgeben lasse steht auch das drin was drin stehen soll, sprich der Pfad der für die Logdatei verwendet werden soll.


C++:
bool CSettingsLader::_LadeSettings()
{
...
sprintf(sPfad_Logdatei,"%s\\Name\\logfile.log",sPfad_Anwendungsdateien);
...
}



Wenn ich jetzt einen Eintrag in die Logdatei erstellen möchte ruf ich die Funktion die sich wieder in einer eigenen Klasse befindet auf. Dort wird auf die Variable der anderen Klasse zugriffen um zu wissen wo die Logdatei gespeichert werden soll.

Wenn ich mir hier jetzt sPfad_Logdatei erneut in einer Messagebox ausgeben lasse kommt der Datenmüll raus. Die Funktion wird von diverse Funktionen in diversen Klassen aufgerufen, aber erst nach dem die Funktion zum laden der Einstellungen ausgeführt wurde.


C++:
void CLogfileSchreiber::_debug(LPCTSTR sText)
{
...
CSettingsLader Settings;
FILE *file;
file = fopen(Settings.sPfad_Logdatei, "a");
...
}



wenn ich das so mache wie xXx das vorgeschlagen hat mit dem funktionsaufruf und dort die variable mit messagebox abfrage kommt auch datenmüll raus. als wenn er den variableninhalt nach dem ende der funktionsausführung vergisst/verliert/zerstört oder was auch immer.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
01.09.2006, 15:46 Uhr
~kielfahrer
Gast


Nachtrag ...

wenn ich die variable in der selben funktion in der ich sie befülle abfrage, direkt oder durch funktionsaufruf die diese Variable abfragt und den inhalt zurückliefert, wird das in der messagebox angezeigt was ich sehen möchte.

wenn die funktion zum laden der einstellungen beendet ist und eine funktion, in welcher klasse auch immer die nicht von der lade funktion aufgerufen wurde, nur auf die membervariable der klasse draufzugreift sind die daten müll.

ist das normal? bei int und bool variablen die von der lade funktion geschrieben werden tritt das problem soweit nicht auf.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
01.09.2006, 16:37 Uhr
xXx
Devil


Entweder du arbeitest mit TCHAR ... dann mit allen Funktionen die dazu gehören oder nicht ... aber nicht so ein misch masch ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
01.09.2006, 19:21 Uhr
~kielfahrer
Gast


du hast schon recht.

aber hier bin ich an der grenze meines wissens angelangt und weiss nicht wie ich das problem lösen soll. ob der pfad im char oder tchar steht, er ist nur zur laufzeit der lader funktion vorhanden. bei den int und bool werten ist das nicht der fall, die kann ich von jeder anderen klasse abrufen.

hast du oder jeman
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: