Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Brauche Hilfe bei einem Parser (https://www.delphipraxis.net/66005-brauche-hilfe-bei-einem-parser.html)

dragi 23. Mär 2006 12:13


Brauche Hilfe bei einem Parser
 
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

Khabarakh 23. Mär 2006 12:33

Re: Brauche Hilfe bei einem Parser
 
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 :gruebel: ? 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.

dragi 23. Mär 2006 12:38

Re: Brauche Hilfe bei einem Parser
 
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

Khabarakh 23. Mär 2006 12:49

Re: Brauche Hilfe bei einem Parser
 
Zitat:

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]

dragi 23. Mär 2006 13:03

Re: Brauche Hilfe bei einem Parser
 
Du hast vollkommen Recht! Ich habe da viel zu kompliziert gedacht!

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:49 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