AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Brauche Hilfe bei einem Parser

Ein Thema von dragi · begonnen am 23. Mär 2006 · letzter Beitrag vom 23. Mär 2006
Antwort Antwort
dragi

Registriert seit: 22. Jul 2003
198 Beiträge
 
Delphi 2005 Personal
 
#1

Brauche Hilfe bei einem Parser

  Alt 23. Mär 2006, 13:13
Hallo,

ich habe folgendes Problem:

Ein Dokument ist in etwa so aufgebaut:
Code:
object objektname1: Typ1 //Irgendein Objektname und Typ
  Wert1 = 1  //irgendeine Bezeichnung und irgendein Wert
  Wert2 = 2  //irgendeine Bezeichnung und irgendein Wert
  ...
end

object objektname2: Typ2
  object objektname3: Typ3
    Wert1 = 1
    Wert2 = 2
    ...
  end
end
Wie oben zusehen ist, gibt es Objekte die nur Werte beinhalten und Objekte die aus Unterobjekten bestehen. Die möchte ich nun programmiertechnisch [c#] in Objekte speichern und die Objekte in einer Liste verwalten.

Mein Objekt besteht zur Zeit aus einem String Name und String Typ sowie einer Liste vom Typ ValueObject. ValueObject besteht wiederum aus string Valuename und string Value. So kann ich nun den Namen und den Typ des Objektes anlegen und eine nicht definierte Menge von Values in der Liste des Objektes anlegen.

Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace ParsIni
{
    class StFctObject
    {
        private string ObjName;
        private string ObjType;
       
        //Liste mit Werteobjekten
        List<StFctValueObject> StFctValueObjList = new List<StFctValueObject>();

        public void SetObjName(string ObjNameToSet)
        {
            ObjName = ObjNameToSet;
        }

        public string GetObjName()
        {
            return ObjName;
        }

        public void SetObjType(string ObjTypeToSet)
        {
            ObjType = ObjTypeToSet;
        }

        public string GetObjType()
        {
            return ObjType;
        }

        public void SetStFctValueObject(string NameToSet, string ValueToSet)
        {
            StFctValueObject MyStFctValueObject = new StFctValueObject();
            MyStFctValueObject.SetName(NameToSet);
            MyStFctValueObject.SetValue(ValueToSet);
            StFctValueObjList.Add(MyStFctValueObject);
        }

        public int ValueCount()
        {
            int count = StFctValueObjList.Count;
            return count;
        }

        public string GetStFctValueObjName(int i)
        {
            return StFctValueObjList[i].GetName();
        }

        public string GetStFctValueObjValue(int i)
        {
            return StFctValueObjList[i].GetValue();  
        }
    }

    class StFctValueObject
    {
        private string Name;
        private string Value;

        public void SetName(string NameToSet)
        {
            Name = NameToSet;
        }

        public string GetName()
        {
            return Name;
        }

        public void SetValue(string ValueToSet)
        {
            Value = ValueToSet;
        }

        public string GetValue()
        {
            return Value;
        }

    }
}
Um nun auch die Unterobjekte zu speichern, habe ich gedacht, ich füge eine weitere Liste hinzu die von gleichen Typ wie das Objekt ist. Bis dahin ja kein Problem. Ich kann dann ein Objekt definieren, mit dessen Namen und Typ, und es der Liste hinzufügen. Wie füge ich diesem Unterobjekt nun aber die nicht definierte Menge an Werten hinzu? Es kann ja mehrere Unterobjekte geben und wie kann ich sicher sein das ich gerade dem richtigen Unterobjekt die Werte zuweise?

Ich hoffe das Problem ist verständlich...

Gruß

dragi
Delphi 3 Professional @home
Delphi 2005 PE @home
Delphi 2005 Enterprise @work
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Brauche Hilfe bei einem Parser

  Alt 23. Mär 2006, 13:33
Deine Frage verstehe ich nicht wirklich, es ist doch eigentlich genau das gleiche wie beim bisherigen Parsen. Du parst ein Objekt und findest nun in diesem "object". Also erstellst du ein Unterobjekt, fügst es dem Überobjekt hinzu und die nächsten Werte bis zum "end" in eben jenes Unterobjekt ein. Danach kommt ggf. ein weiteres Unterobjekt oder die Werteliste.

PS: Hast du schonmal etwas von Propertys gehört ? Felder und Parameter sollte man übrigens klein schreiben. Und wenn du nächstes Mal die richtigen Tags verwenden würdest, wäre es auch nicht schlecht.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
dragi

Registriert seit: 22. Jul 2003
198 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Brauche Hilfe bei einem Parser

  Alt 23. Mär 2006, 13:38
Ansich hast du recht. Sobald ich nun aber das Unterobjekt hinzugefügt habe, weiß ich nciht wie ich darauf zugreifen soll. Woher kenne ich den Index des Unterobjektes?

Was meinst du mit Tags?

Gruß

dragi
Delphi 3 Professional @home
Delphi 2005 PE @home
Delphi 2005 Enterprise @work
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Brauche Hilfe bei einem Parser

  Alt 23. Mär 2006, 13:49
Zitat von dragi:
Ansich hast du recht. Sobald ich nun aber das Unterobjekt hinzugefügt habe, weiß ich nciht wie ich darauf zugreifen soll. Woher kenne ich den Index des Unterobjektes?
Findest du es logisch, etwas wegzuwerfen, nur um es sofort wieder suchen zu müssen? Erstelle das Unterobjekt und speicher die Referenz einfach in einer Variable, bevor du es in die Liste wirfst. Letzteres könntest du auch erst nach dem vollständigen Parsen des Ubterobjektes machen, ist aber schnurzpiepegal.

Zitat:
Was meinst du mit Tags?
Code:
Formatierter C++ und C#-Quellcode: [c]c#-code[/c]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
dragi

Registriert seit: 22. Jul 2003
198 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Brauche Hilfe bei einem Parser

  Alt 23. Mär 2006, 14:03
Du hast vollkommen Recht! Ich habe da viel zu kompliziert gedacht!

Danke
Delphi 3 Professional @home
Delphi 2005 PE @home
Delphi 2005 Enterprise @work
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz