tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Vereth
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
524
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    wegi wegi ist offline Grünschnabel
    Registriert seit
    May 2010
    Beiträge
    2
    hallo

    wie das genau heißt, weiss ich nicht, deswegen nenn ich es mal Struktur.

    aus dieser Struktur möchte ich einen Wert einem anderen zuweisen, also z.B.

    double ziel = test1 . subClazz1 [2] . subClazz . value [5] ;

    Jetzt möchte ich alles rechts vom = als Text in ein file schreiben (gibt es einen eleganten Weg, sich da durchzuhangeln?).

    Jetzt möchte ich den Text wieder auslesen und einem Objekt zuweisen, damit ich dann wieder den Wert ziel zuweisen kann.

    Object obj = lies_den_String_und_bastel_die _richtige_instanz( text );
    double ziel = obj;


    Man kann da sicherlich den Text parsen und mit getField das obj basteln, aber schon wegen des array von subClazz1 ist das recht kompliziert.
    Vielleicht gibt es ja doch einen besseren Weg?


    vielen Dank

    Martin




    TestClass test1= new TestClass();

    public TestClass(){
    subClazz1[0] = new SubClass1();
    subClazz1[1] = new SubClass1();
    subClazz1[2] = new SubClass1();

    array[0] =1.0;
    array[1] =2.0;
    array[2] =3.0;

    subClazz1[0].value =11.0;
    subClazz1[1].value =22.0;
    subClazz1[2].value =33.0;
    }

    class SubClass1 {
    public double value = 2.22;
    public SubClass2 subClazz = new SubClass2();
    }

    class SubClass2 {
    public double value[10];
    value[5] = 3.33;
    }
     

  2. #2
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    Registriert seit
    Aug 2005
    Ort
    Karlsruhe (Baden-Württemberg)
    Beiträge
    905
    1. Benutz [java] tags für den code (oder code tags)

    2. Mir ist noch nicht so richtig klar, was dein Ziel ist. Außer das du Daten in eine lesbare Text-Datei speichern willst.

    Ich glaube kaum, dass du "test1 . subClazz1 [2] . subClazz . value [5] ;" in der Textdatei speichern willst, sondern den Inhalt davon?

    Wenn du den Inhalt davon speichern willst, ist die Frage wie der Inhalt genau vorliegt?

    Da gibt es Dutzend verschiedene Techniken. Z.b. als CSV, XML, JSON, ObjectOutputstream.
     
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
    Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
    Blog: http://javaeffective.wordpress.com/

  3. #3
    wegi wegi ist offline Grünschnabel
    Registriert seit
    May 2010
    Beiträge
    2
    >Mir ist noch nicht so richtig klar, was dein Ziel ist. Außer das du Daten in eine lesbare Text-Datei speichern willst.
    >Ich glaube kaum, dass du "test1 . subClazz1 [2] . subClazz . value [5] ;" in der Textdatei speichern willst, sondern den Inhalt davon?

    doch ich will den weg zu der Variablen speichern.
    Hintergrund: Es gibt eine Schnittstelle zu einem anderen Programm, mit dem ich Daten austausche. Den Austauch muss ich zur Laufzeit konfigurieren können.
    Dafür habe ich für 2 Auswahl-Bäume verfügbarer Variablen in beiden Programmen. In beiden Bämen suche ich Variablen aus und definiere, ob ich schreiben oder lesen will.
    Diese Auswahl soll in eine XML-Configuration geschrieben werden.
    z.B.
    <opc name="OPC Settings" opc_server="tester" host="localhost" refresh_time="5000" connected="false">
    <opc_read name="OPC Read Items">
    <opc_item name="Solid Mass Inlet 1" item="OPC_mass.Real1" local="test1 . subClazz1 [2] . subClazz . value [5]" conversion_factor="1.782" active="true" write ="true"
    />
    </opc>

    Das möchte ich dann aus der Konfig auslesen. damit ich dann wieder die Werte einander zuordnen kann.
    Damit das gehen kann, muss ich zuerst die ausgewählte Variable in einen String umwandlen, was ja noch geht,
    da ich es aus einem Baum ausgewählt habe und somit die Struktur kenne. Schöner wäre es, wenn man das direkt aus der Struktur lesen könnte.
    Der umgekehrte Weg muss dann wieder aus dem String die Instanz basteln.

    martin
    Geändert von wegi (07.05.10 um 10:28 Uhr)
     

  4. #4
    Avatar von Vereth
    Vereth Vereth ist offline Mitglied Brokat
    Registriert seit
    Nov 2009
    Ort
    Dortmund
    Beiträge
    372
    Ich habe mir eine ähnliche Frage auch schon mal gestellt; darufhin habe ich ein Konzept entworfen, das ich bisher aus Zeitgründen noch nicht realisiert habe. Hier ist es:
    • Als erstes definiert man ein Interface, das ich einfach mal XmlExchangable nenne. Dieses Interface beinhaltet zwei Funktionen, die wir beispielsweise als createXmlNode und setupFromXmlNode bezeichnen.
    • Die Funktion createXmlNode ist dafür zuständig, die relevanten Variablen und ihre Werte als Xml-Baum zurückzuliefern; als Wurzelknoten dien dabei ein Node, der das Objekt identifiziert, beispielsweise '<TestClass>', die Kind-Knoten repräsentieren dann die jeweiligen Variablen und ihre Werte, beipspielsweise '<opc_server value="tester">'.bekommt als Parameter einen XmlNode, den das Objekt dazu nutzt, die für sich relevanten Attribute und Unterknoten auzulesen und seine Variablen entsprechend zu setzen; Arrays werden dabei als Unterbäume dargestellt. Einfache Datentypen können direkt dargestellt werden, für Objekte wird dann deren Interface-Methode createXmlNode aufgerufen und deren zurückgelieferter Baum an passender Stelle eingehängt. Zum Schluss wird der so erzeugte Xml-Baum als Funktionswert zurückgeliefert.
    • Die Funktion setupFromXmlNode funktioniert genau umgekehrt: sie bekommt einen XmlNode als Parameter übergeben, liest die Werte aus, und kann dann seine Variablen entsprechend setzen; Werte für Variablen einfacher Datentypen können direkt gesetzt werden, bei Objekten wird zuerst per Konstruktor ein neues Objekt erzeugt und dann dessen Funktion setupFromXmlNode mit dem dazugehörigen childNode aufgerufen. Arrays werden zuerst über einen Vector oder eine LinkedList aufgebaut, deren toArray-Methode dann bei Bedarf aufgerufen wird.
    Du musst aber aufpassen, dass deine Daten intern auch als Baum organisiert sind, weil sonst eine Endlosschleife entsteht.
    Geändert von Vereth (07.05.10 um 12:25 Uhr)
    wegi bedankt sich. 
    Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons

    Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.

Ähnliche Themen

  1. JTable Layout speichern und wieder laden
    Von Florian Strienz im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 28.05.08, 20:44
  2. Kommentare von Usern speichern und wieder laden
    Von smaresh im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 17.01.08, 21:08
  3. Antworten: 13
    Letzter Beitrag: 02.04.07, 19:31
  4. datei laden und wieder speichern
    Von rosmi im Forum Java
    Antworten: 5
    Letzter Beitrag: 14.03.07, 15:19
  5. Bilder laden, malen und wieder speichern
    Von jerrylloop im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 26.08.04, 01:00