Aktuelle Zeit: 12.05.2024, 18:49

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Pointerproblem
BeitragVerfasst: 09.01.2011, 04:31 
Offline

Registriert: 10.03.2010, 20:15
Beiträge: 19
Hi,

ich hab ein Problem mit Pointern anscheinend. Ich fands eigentlich ganz simpel aber irgendwie passiert nix oO
Hmm.. erstma 'nen paar Zeilen code:

Code:
    SSharedData shareddata;
    [...]
    shareddata.username = stringw("hallo");
    shareddata.password = stringw("du");
    [...]
    CMainMenu mm (&params,&(shareddata.username),&(shareddata.password));
    mm.run();


Es geht um shareddata.username und shareddata.password beide vom Typ irr::core::stringw.
im CMainMenu-Konstruktor werden die Zeiger einfach nur in privaten membern gespeichert:

Code:
class CMainMenu : public IEventReceiver
{
private:
    [...]
    stringw* user;
    stringw* password;
public:
    CMainMenu(SIrrlichtCreationParameters* pa, stringw* u, stringw* p);
    [...]
    void run();
};
Code:
      user = u;
      password = p;


So, wenn dann das richtige Event ausgelöst wird wird folgender Code ausgeführt:
Code:
                      case GUI_ID_LOGIN:
                             *user = lwndUserEdit->getText();
                             *password = lwndPWEdit->getText();

                           //  device->closeDevice();
                             return true;
                        break;


und dann soll das ganze erstmal testweise in eine Datei geschrieben werden:
Zitat:
std::wfstream log;
log.open("connectionhandler.log", std::ios_base::out);
log << "u:" << sd->username.c_str() << std::endl << "pw:" << sd->password.c_str() << std::endl;
log.close();


und wenn ich dann den Dateiinhalt betrachte, merke ich das irgendwas schief läuft:
Code:
u:hallo
pw:du


Ich seh einfach den Fehler nicht.

Ich hoffe ihr könnt helfen :)
mfg
rotten_corpse


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Pointerproblem
BeitragVerfasst: 09.01.2011, 11:06 
Offline

Registriert: 08.01.2011, 19:18
Beiträge: 23
Hmm...was willst du denn?
Wenn ich grad nicht total neben der Rolle bin hast du halt als Username "Hallo" angegeben und als Passwort "Du" und das schreibt der so da rein...

...also soweit ist das doch eigentlich richtig, oder?

Bin zwar grad erst aufgestanden aber ich verstehe grad dein Problem nicht so ganz :D


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Pointerproblem
BeitragVerfasst: 09.01.2011, 12:08 
Offline

Registriert: 10.03.2010, 20:15
Beiträge: 19
Also, ich kam jetzt ma auf die Idee das was mein Thread danach machen soll einfach ma im Haupthread auszuführen, da klappt das ganze wunderbar!

Unter Delphi hatte ich an sich noch nie Probleme mit Threads, aber da ist das ja auch 'nen bssl anders :?

Also es muss definitiv am Thread liegen hier mal der dazugehörige Code:

connection.h:
Code:
#ifndef INC_CO
#define INC_CO

#include <windows.h>
#include <irrlicht.h>

#define CHdebug
#ifdef CHdebug
  #include <fstream>
#endif

enum ECH_ACTIONS
{
    ECHA_EXIT = 0,
    ECHA_TERMINATED,
    ECHA_IDLE,
    ECHA_CONNECT,
    ECHA_DISCONNECT,
    ECHA_NOTIFY
};

struct SSharedData
{
    ECH_ACTIONS action;
    irr::core::stringw username;
    irr::core::stringw password;
};

DWORD WINAPI ConnectionHandler(LPVOID parameter);
void startConnection(SSharedData* sd);

#endif


connection.cpp:
Code:
#include "connection.h"

DWORD WINAPI ConnectionHandler(LPVOID parameter)
{
    SSharedData* sd = (SSharedData*) parameter;
#ifdef CHdebug
   std::wfstream log;
   log.open("connectionhandler.log", std::ios_base::out);
   log << "u:" << sd->username.c_str() << std::endl << "pw:" << sd->password.c_str() << std::endl;
#endif
   while(sd->action != ECHA_EXIT)
   {
      switch(sd->action)
      {
          case ECHA_IDLE:
                Sleep(200);
            break;
          default:
                sd->action = ECHA_EXIT;
            break;
      }
      Sleep(50);
   }
#ifdef CHdebug
   log.close();
#endif
   sd->action = ECHA_TERMINATED;
   return 0;
};

void startConnection(SSharedData* sd)
{
    CreateThread(NULL, 0, ConnectionHandler, &(*sd), 0, NULL);
    return;
};


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de