Aktuelle Zeit: 14.06.2025, 12:56

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: 31.08.2008, 20:15 
Offline

Registriert: 28.08.2008, 00:12
Beiträge: 18
Hi!

Ich habs den gannzen tag auf die kuriosesten Arten und weisen versucht, aber ich komm nciht an emine zwei Datenfehler ran...


Wie lässt sich das ganze lösen?

Game.cpp
Code:
#include "stdafx.h" //Hier sind die ganze irrlichtincludes etc drin - iss ja klar^^

int main (void)
{

[....]

   guienv->addButton(rect<s32>(425,402,575,423), 0, BTN_LOGINSCREEN_LOGIN, L"Login", L"Spiel starten");
   guienv->addEditBox(L"", rect<s32>(474, 346, 610, 365),true,0,TXTLN_LOGINSCREEN_LOGIN);
   guienv->addEditBox(L"", rect<s32>(474, 376, 610, 395),true,0,TXTLN_LOGINSCREEN_PASS)->setPasswordBox(true);

[....]

while ([...]
         case STATE_GAME_LOGIN_SEND: //Loginvorgang
/* HIER MÜSSTE ICH AN DIE DATEN AUS DEN FELDERN */
                  printf("Eingegebene Daten:\nUsername: %s    Passwort: %s", user, pass);
         break;
[...]
}


Über die Datentypen etc wies ich bescheid. Mir ist bewusst, dass ich über die felder einen wchar_t und keinen char * datentyp bekomme.
Wichtig ist nur, wie komme ich an die daten und zwar MÖGLICHST OHNE dass cih den Code ausserhalb der main-Funktion ändern muss. Also ich würd gern über die ID rankommen...^^

Und das krieg ich absolut nich hin...

Ich hab aucc schon im Forum gesucht. Wenn ich zumindest an das feld käme, das ->getText() schaff ich noch selber :P


//Edit: Scheiß Monat morgen Rechtschreibung^^

_________________
LG Alex.

Btw.: Die Buchstabenkombination "cih" stehtimmer für "ich" (z.B. möglcih). Das ist mein lieblingsfehler >.< Scheiß 10-Finger-System


Zuletzt geändert von IceFire_darkalex am 01.09.2008, 14:50, insgesamt 2-mal geändert.

Nach oben
 Profil  
 
BeitragVerfasst: 01.09.2008, 09:38 
Offline
Newsposter
Benutzeravatar

Registriert: 12.03.2007, 10:42
Beiträge: 338
Wohnort: Berlin
speicher dir doch irgendwo einen pointer auf diese gui elemente ab, die bekommt man als rückgabe dieser addGui... Funktionen

hab aber grad nicht im kopf welcher element typ das war und hab kaum zeit (bin @work)


Nach oben
 Profil  
 
BeitragVerfasst: 01.09.2008, 11:09 
Offline

Registriert: 28.08.2008, 00:12
Beiträge: 18
IGUIEditBox

aber das hab ich versucht... Das Game crasht beim zugreifen auf den pointer später.

IGUIEditBox *password = guienv->addEditBox(L"", rec... (ab dem = isses wie oben)

später

const wchar_t *test = password->getText();

und an genau der stelle crasht das Game

"Game.exe" (Verwaltet): "C:\WINDOWS\assembly\GAC_MSIL\mscorlib.resources\2.0.0.0_de_b77a5c561934e089\mscorlib.resources.dll" wurde geladen
Eine Ausnahme (erste Chance) des Typs "System.AccessViolationException" ist in Magical Blades ISC.exe aufgetreten.
Eine nicht behandelte Ausnahme des Typs "System.AccessViolationException" ist in Magical Blades ISC.exe aufgetreten.

Zusätzliche Informationen: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.



VisualStudio zeigt ja die Inhalte der Variablen zu dem Zeitpunkt an:
Zitat:
+ packetData 0x004129C4 "0001;;" char*
- password 0x043D2EC0 irr::gui::IGUIEditBox*
- irr::gui::IGUIElement { Children={...} Parent=0xFEEEFEEE RelativeRect={...} ...} irr::gui::IGUIElement
+ irr::IEventReceiver {...} irr::IEventReceiver
+ AbsoluteClippingRect {...} irr::core::rect<int>
+ AbsoluteRect {...} irr::core::rect<int>
AlignBottom error: cannot obtain value irr::gui::EGUI_ALIGNMENT
AlignLeft error: cannot obtain value irr::gui::EGUI_ALIGNMENT
AlignRight error: cannot obtain value irr::gui::EGUI_ALIGNMENT
AlignTop error: cannot obtain value irr::gui::EGUI_ALIGNMENT

+ Children {...} irr::core::list<irr::gui::IGUIElement *>
+ DesiredRect {...} irr::core::rect<int>
+ Environment 0xFEEEFEEE irr::gui::IGUIEnvironment*
ID 0xfeeefeee int
IsEnabled true bool
IsSubElement true bool
IsTabGroup true bool
IsTabStop true bool
IsVisible true bool
+ LastParentRect {...} irr::core::rect<int>
+ MaxSize {...} irr::core::dimension2d<int>
+ MinSize {...} irr::core::dimension2d<int>
NoClip true bool
+ Parent 0xFEEEFEEE irr::gui::IGUIElement*
+ RelativeRect {...} irr::core::rect<int>
+ ScaleRect {...} irr::core::rect<float>
TabOrder 0xfeeefeee int
+ Text {...} irr::core::string<wchar_t,irr::core::irrAllocator<wchar_t> >
+ ToolTipText {...} irr::core::string<wchar_t,irr::core::irrAllocator<wchar_t> >
Type error: cannot obtain value irr::gui::EGUI_ELEMENT_TYPE
- test 0x001A4AD0 "???" wchar_t*
*test 0x6af0 L'?' wchar_t



Aber kann ich nicht irgendwie über die ID drauf zugreifen? Weil ich später mal einige Felder haben werde, und immer die pointer zu definieren... naja weis net ob das so die lösung ist...


//Edit: Wenn ich die Werte aktualisiere in VS, dann krieg cih bei allen die Speicheraddresse 0xfeeefeee reingeschrieben. und im Text steht diese ebenfalls. Keine Ahnung, ob das irgendwas zur Diagnose hilft, aber ich hab keine Ahnung woran das liegt bzw was ich falsch mache

_________________
LG Alex.

Btw.: Die Buchstabenkombination "cih" stehtimmer für "ich" (z.B. möglcih). Das ist mein lieblingsfehler >.< Scheiß 10-Finger-System


Nach oben
 Profil  
 
BeitragVerfasst: 01.09.2008, 11:37 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Ist ja kein Wunder.

Wenn ich das richtig sehe, dann weißt du passwort ein void zu.

Es muss so sein:
Code:
IGUIEditBox* box = gui->addEditBox(...);
box->setPasswordBox(true);


Wenn du nämlich das machst:
Code:
IGUIEditBox* box = gui->addEditBox(...)->setPasswordBox(true);

dann steht in box nicht der Pointer zu deiner Editbox, sondern auf irgendwelchen undefinierten Müll.

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
BeitragVerfasst: 01.09.2008, 11:47 
Offline

Registriert: 28.08.2008, 00:12
Beiträge: 18
oh stimmt!

Aber tut nix zur sache, da mit der box für den login dasselbe passiert, und bei der it hinten nichtsmehr angehängt^^

nun ist es so und crasht trotzdem^^:

Code:
   //Loginscreen
   video::ITexture* images = driver->getTexture("texture/loginbg.jpg"); //In unsrem Archiv versteckt!
   guienv->addButton(rect<s32>(425,402,575,423), 0, BTN_LOGINSCREEN_LOGIN, L"Login", L"Spiel starten");
   IGUIEditBox *loginname = guienv->addEditBox(L"", rect<s32>(474, 346, 610, 365),true,rootgui,TXTLN_LOGINSCREEN_LOGIN);
   IGUIEditBox *password = guienv->addEditBox(L"", rect<s32>(474, 376, 610, 395),true,rootgui,TXTLN_LOGINSCREEN_PASS);
   password->setPasswordBox(true);

_________________
LG Alex.

Btw.: Die Buchstabenkombination "cih" stehtimmer für "ich" (z.B. möglcih). Das ist mein lieblingsfehler >.< Scheiß 10-Finger-System


Nach oben
 Profil  
 
BeitragVerfasst: 01.09.2008, 13:29 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Hast du zufällig eine globale Variable die password heißt, und eine lokale, der du den Wert zuweist ?

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
BeitragVerfasst: 01.09.2008, 13:51 
Offline

Registriert: 28.08.2008, 00:12
Beiträge: 18
Mit namen o.ä. hat das definitiv nichts zu tun.

Der Bug trit bei zwei feldern auf, die unterschiedliche Pointer bekommen (loginname und password)

Was lustig ist, das setzen des PasswordField flags klappt :-/

_________________
LG Alex.

Btw.: Die Buchstabenkombination "cih" stehtimmer für "ich" (z.B. möglcih). Das ist mein lieblingsfehler >.< Scheiß 10-Finger-System


Nach oben
 Profil  
 
BeitragVerfasst: 01.09.2008, 14:29 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Ich denke einfach, dass es daran liegt, dass du 2 variablen haben wirst, die den selben Namen haben.

Also in etwa sowas
Code:
IGUIEditBox* box = 0;

funktion1()
{
   IGUIEditBox* box = gui->addEditBox(...);
}

funktion2()
{
   box->getText();
}


funktion2 würde in diesem Fall versuchen auf die globale Variable (die 0 ist) zuzugreifen.

Ansonsten gibt es nur die Möglichkeit, dass du irgendwo zwischen der Zuweisung und dem Crash nochmal irgendwas mit der Variable machst.

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
BeitragVerfasst: 01.09.2008, 14:44 
Offline

Registriert: 28.08.2008, 00:12
Beiträge: 18
das ist beides nciht der Fall >.< nuja ichw erd die var mal nur an dieser stelle und an der gettext stelle umbenennen, dann wären ja beide fehlerquellen isoliert

//Edit: Nein :-( bringt nix. ich hab die variablen nun ganz zufällig aabbghght und aabbghghz genannt. und keine änderung des Problems. IrrLicht-Bug?
bzw vllt ein header, der fehlt oder so?

_________________
LG Alex.

Btw.: Die Buchstabenkombination "cih" stehtimmer für "ich" (z.B. möglcih). Das ist mein lieblingsfehler >.< Scheiß 10-Finger-System


Nach oben
 Profil  
 
BeitragVerfasst: 01.09.2008, 14:53 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
poste mal den code, wo du
- Die Variable definierst,
- Die editbox erstellst,
- Der Crach kommt.

Und zwar am besten jeweils immer den ganzen block

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
BeitragVerfasst: 01.09.2008, 15:17 
Offline

Registriert: 28.08.2008, 00:12
Beiträge: 18
Bitteschön:

stdafx.h:
Code:
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <locale>
#include <sstream>
#include <time.h>
#include <map>
#include <irrKlang.h>
#include <irrlicht.h>

//Hauptnamespaces
using namespace std;
using namespace irrklang;
using namespace irr;

//Subspaces von Irrlicht: http://irrlicht.sourceforge.net/docu/namespaces.html
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

#ifdef _IRR_WINDOWS_
#pragma comment(lib, "Irrlicht.lib")
#endif

#ifdef _IRR_WINDOWS_
#pragma comment(lib, "IrrKlang.lib")
#endif


Main.cpp
Code:
#define in_main_cpp
#include "stdafx.h"
#include "EventHandler.cpp"

const wchar_t *test;

int main()
{
[...ein paar cases...]
         case STATE_GAME_LOGIN_SEND: //Loginvorgang
               guienv->clear(); //Hier sintzt der Verursacher des bugs^^
               driver->draw2DImage(images, core::position2d<s32>(0,0),
                  core::rect<s32>(0,0,1024,768), 0,
                  video::SColor(255,255,255,255), true);
               txtlable = guienv->addStaticText(L"Magical Blades - IceFire Developers Alpha.",rect<s32>(900,745,1020,765),false,true,0,-1,false);
               txtlable->setOverrideColor(SColor(255,255,255,255));
               rootgui = guienv->getRootGUIElement();
                  packetData="ALPHA;;";
      /*BUGALARM*/      test = aabbghghz->getText(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<CRASH
[...noch ein paar cases...]
[... und der rest iss ja egal.]


//Edit: Hab den code mal gekürzt. Ist nun nurnoch vom bugverursache bis zum crash da^^

_________________
LG Alex.

Btw.: Die Buchstabenkombination "cih" stehtimmer für "ich" (z.B. möglcih). Das ist mein lieblingsfehler >.< Scheiß 10-Finger-System


Zuletzt geändert von IceFire_darkalex am 01.09.2008, 21:52, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
BeitragVerfasst: 01.09.2008, 15:39 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Hm.. das sieht eigentlich alles richtig aus.
Bist du denn schonmal mit dem Debugger durchgegangen und hast mal geguckt, an welcher stelle er denn genau crasht ? (Also ob in deiner anwendung oder in irrlicht)

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


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:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de