tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
435
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    NeoTrace NeoTrace ist offline Grünschnabel
    Registriert seit
    Jun 2004
    Ort
    M. bei D.
    Beiträge
    4
    Hallo zusammen

    Folgendes:
    Wollte ein Program in C++ für Linux bzw. / und Windows erstellen ( Konsole ) das mit Menü-Auswahl, einer Eingabe von Artikel und Preis daherkommt. Das Menü steht die Eingabe auch und die Speicherung erfolgt zur Zeit noch so, dass man den Dateinamen eingeben kann und den Speicherort auch.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    
    int main()
    {
       ....
     
    // Speichern
    case 'S':           
            if( myPlan.save() )
                   cout << " Speiseplan in der Datei "
                           << myPlan.getFilename()
                   << " gespeichert !" << endl;
                        
            else
                    cerr << " Speiseplan konnte nicht gespeichert werden !"
                << endl;
            weiter();
            break;
    ....
    }
     
    -------------------------------------------------------------------------------------------------
    // Speiseplan speichern
    bool PlanList::save()   
    {
        if( filename.empty() )
            return saveAs();
        if( !dirty )
            return true;
            
        ofstream outfile( filename.c_str(), ios::out | ios::binary );
        
        if( !outfile )
        {
            cerr << "Datei " << filename << " konnte nicht geöffnet werden !" << endl;
            return false;
        }
        
        int i=0;
        while( i < count )
        {
            outfile << v[i].name  << '\0';
            outfile << v[i].preis << '\0';
            
            if( !outfile)
                break;
            else
                i++;
        }
        
        if( i < count )
        {
            cerr << "Fehler beim Schreiben der Datei " << filename << endl;
            return false;
        }
        dirty = false;
        return true;
    }
    Das mit der Speicherung will ich aber ändern insofern das man erst mal nicht mehr den Speicherort sowie den Dateinamen eingeben muss / kann. Sondern das man bei Menü-Auswahl "Speichern"
    in einer HTML-Datei an einer bestimmten Stellen abspeichert die
    so aussehen: <!-- Platzhalter=#1 //-->
    Natürlich sollen diese "Platzhalter" erhalten bleiben um später wieder veränderungen machen zu können also hier-> setzte den erstellten Satz, 7 Zeichen nach dem HTML Komentar: #1
    Hoffe da blickt einer von euch durch
    MFG
    NeoTrace
    Geändert von NeoTrace (14.07.04 um 10:17 Uhr)
     
    ! Wie immer KP !

  2. #2
    Registriert seit
    May 2004
    Beiträge
    287
    Ne, also so ganz blicke ich wirklich nicht durch. Was willst du denn genau machen? In einer HTML abspeichern? Dann gib deiner Datei die Erweiterung html, wenn du Tags mitspeichern möchtest, dann schreib die halt mit rein.
     

  3. #3
    NeoTrace NeoTrace ist offline Grünschnabel
    Registriert seit
    Jun 2004
    Ort
    M. bei D.
    Beiträge
    4
    In einer Vorgefertigten HTML-Datei
    die Teile einfügen die ich
    vorher
    mit c++ erstellt habe...
     
    ! Wie immer KP !

  4. #4
    Registriert seit
    May 2004
    Beiträge
    287
    Ich würde das einfach in der Planlist::save einbauen. Generell würde ich den Speiseplan solange das Programm läuft im Speicher lassen. Planlist::save speichert dann den gesamten Speiseplan (erstellt die HTML also immer wieder neu) und bastelt das HTML-Zeug darum, Planlist::load liest das ganze wieder ein und extrahiert das wichtige (lässt also die Tags links liegen). Jede Umschiebeoperation kannst du dann bequem mit deinen Arrays im Speicher machen ohne einen schrecklich ineffizienten Dateiparser schreiben zu müssen und save verkapselt die HTML Besonderheiten.

    (P.S.: Wenn dir die load-Funktion zu stressig ist, mit den Tags, dann würde ich in Erwägung ziehen einfach zwei Dateien zu speichern, eine nur für den Datensatz und eine zum von außen betrachten als HTML.)
     

  5. #5
    NeoTrace NeoTrace ist offline Grünschnabel
    Registriert seit
    Jun 2004
    Ort
    M. bei D.
    Beiträge
    4
    Vielen Dank muss ich unbedingt ausprobieren...
     
    ! Wie immer KP !

  6. #6
    Avatar von squeaker
    squeaker squeaker ist offline Mitglied Platin
    Registriert seit
    Jun 2004
    Ort
    Würzburg
    Beiträge
    577
    Nim regular Expressions (am besten Perl oder Ruby) damit ist es ganz einfach. Einfach ein eindeutiges Muster nehmen und dieses dann mittels s/muster/ersatz ersetzen.
     

  7. #7
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Noch eine Möglichkeit wäre der Einsatz eines kompletten HTML-Parsers. Auch ein XML-Parser liesse sich verwenden, zum Beispiel der von Microsoft oder Xerces -- beide sind kostenlos. Das wäre zwar mit Kanonen auf Spatzen schiessen, aber sehr lehrreich.
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

Ähnliche Themen

  1. Text-Datei an bestimmter Stelle trennen
    Von deinertsche im Forum Linux & Unix
    Antworten: 1
    Letzter Beitrag: 01.06.06, 16:03
  2. Antworten: 2
    Letzter Beitrag: 08.12.04, 19:30
  3. Lesen einer Zeile, ab bestimmter Stelle
    Von Blind Guardian im Forum Java
    Antworten: 11
    Letzter Beitrag: 23.11.04, 15:01
  4. Speicherung eines INT Wertes in einer Datei.
    Von Shadowdancer im Forum Java
    Antworten: 2
    Letzter Beitrag: 02.12.03, 23:24
  5. Antworten: 2
    Letzter Beitrag: 19.06.02, 18:36