Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » falsche werte in struct

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
21.09.2005, 14:59 Uhr
zippo



Moin moin zusammen...

mein Problem wäre folgendes: Ich habe eine Funktion, die eine struct mit Werten füllen soll und diese dann als Rückgabewert an die aufrufende Funktion zurückgibt bzw. geben soll. Das Ganze sieht ungefähr so aus:


C++:
struct XMLInfo *FORMREFERENCE(string _line)
    {
        int i, j, dif;
        string inhalt;
        AnsiString content;
               XMLInfo *xml_info;

        if(_line.find(XMLNodeForm) != -1)
        {
            if(_line.find(XMLFormRefName) != -1)
            {
                i = _line.find_first_of(XMLTagQuot);
                j = _line.find(XMLFormRefTable);
                dif = j-i;

                inhalt = _line.substr(i+1, dif-3);
                                content = inhalt.c_str();

                                xml_info->Name = content;
            }

            if(_line.find(XMLFormRefTable) != -1)
            {
                i = _line.find(XMLFormRefTable);
                j = _line.find(XMLFormRefKey);
                i = i + 11;
                j = j - 2;
                dif = j-i;

                inhalt = _line.substr(i, dif);
                content = inhalt.c_str();

                                xml_info->Text = content;
            }
                       ......
                       ......
                       ......


           return xml_info;
}



Innerhalb der Funktion sieht das alles schon ganz gut aus...soll heißen, wenn ich im Debug-Modus die Variablen abfrage stimmt soweit alles. In der Aufrufenden Funktion stimmt jedoch nur noch so ca. die hälfte der Werte mit denen aus der aufgerufenen Funktion überein (hoffe Ihr könnt mir noch folgen ). Die dazugehörige struct sieht folgendermaßen aus:


C++:
   struct XMLInfo{
            AnsiString     Name;
            bool         Visible;
            bool         Enabled;
            AnsiString     Key;
            AnsiString       Text;
            TStringList      *Items;
               };



Im AnsiString Text steht dann bspw. nur noch NULL und bool Enabled ist von true zu false mutiert. In der aufrufenden Funktion sieht das alles so aus:


C++:
XMLInfo *info;

AnsiString xml_name, xml_text, xml_key;
bool xml_vis, xml_en;

info = FORMREFERENCE(line);
xml_name = info->Name;
xml_text = info->Text;
xml_key = info->Key;
xml_vis = info->Visible;
xml_en = info->Enabled;



Wenn mir irgendjemand auf die Sprünge helfen könnte wäre ich echt dankbar...mir brummt von dieser sache nämlich mittlerweile der Schädel...Danke schon mal,

Zippo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.09.2005, 16:21 Uhr
Th



Du verwendest als Rückgabewert einen Zeiger auf eine Struktur, d.h. innerhalb der Funktion schreibst du Werte in einen uninitialisierten Speicher.

Also entferne den Stern (*)... und Zugriff dann mittels xml_info.Name etc...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.09.2005, 16:37 Uhr
zippo



Super...die Sonne geht auf!
Danke Th....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


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: