<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[An bestimmter Position in Datei Text einfügen bzw. ersetzen]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>Bin schon den ganzen Vormittag dran zu versuchen in einer Textdatei einen Wert zu ändern bzw. zu ersetzen. Hab mich schon tot gegoogelt und gelesen aber irgendwie bin ich scheinbar zu doof, oder hab das ganze noch nicht so wirklich gerafft. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Folgendes:</p>
<p>Hab eine Textdatei die folgendermaßen aussieht;</p>
<pre><code>1001 Tastatur_elegant Formschoene_Tastatur_im_edlen_Design a 19 28 20 40 35 001
1002 Monitor_einfach kostenguenstiger_Monitor_fuer_Buerozwecke_optimiert b 80 120 10 30 15 002
1003 Laptop_GamePower Leistungsstarker_Laptop_mit_hochleistungs_Grafikkarte c 1010 1450 5 10 7 001
1004 Maus_easy kleine_handliche_Computermaus c 2 4 30 50 49 003
1005 Netzteil 450Watt_PC-Netzteil b 35 68 10 20 18 003
1006 Monitor_einfach kostenguenstiger_Monitor_fuer_Spiele_optimiert b 75 110 10 30 15 002
1007 Festplatte_HDReady Enorm_Grosse_Festplatte_fuer_viel_Speicherplatz b 69 85 25 50 40 002
1008 Multifunktionsdrucker_Gappa Fuer_Hochaufloesende_Bilder_zum_Kopieren_Scannen c 90 119 6 11 8 002
1009 Wireless_LAN_Router fuer_eine_einzigartige_Kabellose_Verbindung_ins_Internet a 70 99 20 40 35 002
1010 Farblaserdrucker Hohe_Aufloesung_und_extrem_schnellen_Ausdruck_machen_diesen_Drucker_komplett_Buerotauglich b 340 420 5 10 7 001
1011 Laptop_Tasche perfekte_verarbeitung_und_exterm_viel_Platz b 18 25 30 60 40 002
1012 USB_Stick mit_enorm_viel_Platz_fuer_ihre_Sicherung_von_Daten a 20 30 20 30 25 001
1013 Digitalkamera mit_sehr_hoher_Auflösung_und_jede_Menge_Speicherplatz c 60 89 20 35 30 002
</code></pre>
<p>und meine Funktion welche einen Wert (neuer Lagerbestand) ändern soll</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#include &lt;iostream.h&gt;
#include &lt;fstream&gt;
#include &lt;sstream&gt;
#include &lt;vector&gt;
#pragma hdrstop

#include &quot;funktionen.h&quot;
#include &quot;kdbestell.h&quot;
#include &quot;Produkt.h&quot;

//---------------------------------------------------------------------------

#pragma package(smart_init)

void abschliessen(int kunden_nr, vwk_produkte warenkorb[], int max)
{
.
.
.
//-------------------------------------------------------Prüfen ob Nachbestellt werden muss

            produkt p;
            vector&lt;produkt&gt; vecp;
            ifstream infile_produkt;
            string datensatz;

            infile_produkt.open(&quot;DB_Produkte.txt&quot;); //--Produkt Textdatei öffnen
//            if (!infile_kdbestell) return 0; //Abbruch falls datei nicht vorhanden

            getline(infile_produkt,datensatz);  //infile in Datensatz(Struktur) übertragen

            while (!infile_produkt.eof())
            {
                istringstream input(datensatz);
                input &gt;&gt; p.id &gt;&gt; p.bez &gt;&gt; p.info &gt;&gt; p.klasse &gt;&gt; p.ek &gt;&gt; p.vk &gt;&gt; p.soll_bestand &gt;&gt; p.normal_bestand &gt;&gt; p.ist_bestand &gt;&gt; p.lieferant;
                input.clear();

                 if(warenkorb[j].pid==p.id)
                {          //----------------------------------Anzahl überprüfen
                   p.ist_bestand=9999;  //&lt;-------------------------------nur zum testen

                    ofstream outfile_produkt;
                    outfile_produkt.open(&quot;DB_Produkte.txt&quot;,ios_base::app);
  //                  outfile_produkt.seekp() &lt;&lt; p.id;

                        outfile_produkt &lt;&lt; p.id &lt;&lt; &quot; &quot; &lt;&lt; p.bez &lt;&lt; &quot; &quot; &lt;&lt; p.info &lt;&lt; &quot; &quot; &lt;&lt; p.klasse &lt;&lt; &quot; &quot; &lt;&lt; p.ek &lt;&lt; &quot; &quot; &lt;&lt; p.vk &lt;&lt; &quot; &quot; &lt;&lt; p.soll_bestand &lt;&lt; &quot; &quot; &lt;&lt; p.normal_bestand &lt;&lt; &quot; &quot; &lt;&lt; p.ist_bestand &lt;&lt; &quot; &quot; &lt;&lt; p.lieferant &lt;&lt; endl;

                }

                vecp.push_back(p);
                getline(infile_produkt,datensatz);        //---neue Anzahl schreiben
            }
           if (infile_produkt.is_open()) infile_produkt.close();
            infile_produkt.clear();

           vecp.clear();

.
.
.
        }
      }

      cout &lt;&lt; &quot;Die Daten wurden im System aufgenommen.&quot; &lt;&lt; endl;
    }

    system(&quot;PAUSE&quot;);
    system (&quot;CLS&quot;);
}
</code></pre>
<p>Hab mir gedacht das ich einfachheitshalber die ganze Zeile überschreibe. Ich schaffe es aber nicht den Cursor in der Datei richtig zu positionieren. Entweder fügt er eine Zeile am Ende an oder aber überschreibt er die ganze Datei und es steht nur noch die neue Zeile darin.</p>
<p>Wie man sieht hab ich es schon mit &quot;seekp&quot; bzw. &quot;seekl&quot; probiert, aber irgendwie ist das glaub ich nicht so ganz das richtige oder ich mache da was falsch. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Hoffe mir kann da jemand helfen. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>gruß merc</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182272/an-bestimmter-position-in-datei-text-einfügen-bzw-ersetzen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 21:38:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182272.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 May 2007 10:03:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to An bestimmter Position in Datei Text einfügen bzw. ersetzen on Wed, 23 May 2007 10:03:26 GMT]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>Bin schon den ganzen Vormittag dran zu versuchen in einer Textdatei einen Wert zu ändern bzw. zu ersetzen. Hab mich schon tot gegoogelt und gelesen aber irgendwie bin ich scheinbar zu doof, oder hab das ganze noch nicht so wirklich gerafft. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Folgendes:</p>
<p>Hab eine Textdatei die folgendermaßen aussieht;</p>
<pre><code>1001 Tastatur_elegant Formschoene_Tastatur_im_edlen_Design a 19 28 20 40 35 001
1002 Monitor_einfach kostenguenstiger_Monitor_fuer_Buerozwecke_optimiert b 80 120 10 30 15 002
1003 Laptop_GamePower Leistungsstarker_Laptop_mit_hochleistungs_Grafikkarte c 1010 1450 5 10 7 001
1004 Maus_easy kleine_handliche_Computermaus c 2 4 30 50 49 003
1005 Netzteil 450Watt_PC-Netzteil b 35 68 10 20 18 003
1006 Monitor_einfach kostenguenstiger_Monitor_fuer_Spiele_optimiert b 75 110 10 30 15 002
1007 Festplatte_HDReady Enorm_Grosse_Festplatte_fuer_viel_Speicherplatz b 69 85 25 50 40 002
1008 Multifunktionsdrucker_Gappa Fuer_Hochaufloesende_Bilder_zum_Kopieren_Scannen c 90 119 6 11 8 002
1009 Wireless_LAN_Router fuer_eine_einzigartige_Kabellose_Verbindung_ins_Internet a 70 99 20 40 35 002
1010 Farblaserdrucker Hohe_Aufloesung_und_extrem_schnellen_Ausdruck_machen_diesen_Drucker_komplett_Buerotauglich b 340 420 5 10 7 001
1011 Laptop_Tasche perfekte_verarbeitung_und_exterm_viel_Platz b 18 25 30 60 40 002
1012 USB_Stick mit_enorm_viel_Platz_fuer_ihre_Sicherung_von_Daten a 20 30 20 30 25 001
1013 Digitalkamera mit_sehr_hoher_Auflösung_und_jede_Menge_Speicherplatz c 60 89 20 35 30 002
</code></pre>
<p>und meine Funktion welche einen Wert (neuer Lagerbestand) ändern soll</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#include &lt;iostream.h&gt;
#include &lt;fstream&gt;
#include &lt;sstream&gt;
#include &lt;vector&gt;
#pragma hdrstop

#include &quot;funktionen.h&quot;
#include &quot;kdbestell.h&quot;
#include &quot;Produkt.h&quot;

//---------------------------------------------------------------------------

#pragma package(smart_init)

void abschliessen(int kunden_nr, vwk_produkte warenkorb[], int max)
{
.
.
.
//-------------------------------------------------------Prüfen ob Nachbestellt werden muss

            produkt p;
            vector&lt;produkt&gt; vecp;
            ifstream infile_produkt;
            string datensatz;

            infile_produkt.open(&quot;DB_Produkte.txt&quot;); //--Produkt Textdatei öffnen
//            if (!infile_kdbestell) return 0; //Abbruch falls datei nicht vorhanden

            getline(infile_produkt,datensatz);  //infile in Datensatz(Struktur) übertragen

            while (!infile_produkt.eof())
            {
                istringstream input(datensatz);
                input &gt;&gt; p.id &gt;&gt; p.bez &gt;&gt; p.info &gt;&gt; p.klasse &gt;&gt; p.ek &gt;&gt; p.vk &gt;&gt; p.soll_bestand &gt;&gt; p.normal_bestand &gt;&gt; p.ist_bestand &gt;&gt; p.lieferant;
                input.clear();

                 if(warenkorb[j].pid==p.id)
                {          //----------------------------------Anzahl überprüfen
                   p.ist_bestand=9999;  //&lt;-------------------------------nur zum testen

                    ofstream outfile_produkt;
                    outfile_produkt.open(&quot;DB_Produkte.txt&quot;,ios_base::app);
  //                  outfile_produkt.seekp() &lt;&lt; p.id;

                        outfile_produkt &lt;&lt; p.id &lt;&lt; &quot; &quot; &lt;&lt; p.bez &lt;&lt; &quot; &quot; &lt;&lt; p.info &lt;&lt; &quot; &quot; &lt;&lt; p.klasse &lt;&lt; &quot; &quot; &lt;&lt; p.ek &lt;&lt; &quot; &quot; &lt;&lt; p.vk &lt;&lt; &quot; &quot; &lt;&lt; p.soll_bestand &lt;&lt; &quot; &quot; &lt;&lt; p.normal_bestand &lt;&lt; &quot; &quot; &lt;&lt; p.ist_bestand &lt;&lt; &quot; &quot; &lt;&lt; p.lieferant &lt;&lt; endl;

                }

                vecp.push_back(p);
                getline(infile_produkt,datensatz);        //---neue Anzahl schreiben
            }
           if (infile_produkt.is_open()) infile_produkt.close();
            infile_produkt.clear();

           vecp.clear();

.
.
.
        }
      }

      cout &lt;&lt; &quot;Die Daten wurden im System aufgenommen.&quot; &lt;&lt; endl;
    }

    system(&quot;PAUSE&quot;);
    system (&quot;CLS&quot;);
}
</code></pre>
<p>Hab mir gedacht das ich einfachheitshalber die ganze Zeile überschreibe. Ich schaffe es aber nicht den Cursor in der Datei richtig zu positionieren. Entweder fügt er eine Zeile am Ende an oder aber überschreibt er die ganze Datei und es steht nur noch die neue Zeile darin.</p>
<p>Wie man sieht hab ich es schon mit &quot;seekp&quot; bzw. &quot;seekl&quot; probiert, aber irgendwie ist das glaub ich nicht so ganz das richtige oder ich mache da was falsch. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Hoffe mir kann da jemand helfen. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>gruß merc</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1290482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1290482</guid><dc:creator><![CDATA[merc]]></dc:creator><pubDate>Wed, 23 May 2007 10:03:26 GMT</pubDate></item><item><title><![CDATA[Reply to An bestimmter Position in Datei Text einfügen bzw. ersetzen on Wed, 23 May 2007 10:11:27 GMT]]></title><description><![CDATA[<p>Solange du die Zeilenlängen nicht beeinflußt bei deinen Änderungen, kannst du mit seekp() an die richtige Stelle springen und dort die nötigen Teile überschreiben (die Datei mußt du dazu als 'ios::in|ios::out' öffnen<sup>*</sup>).</p>
<p>Wenn sich die Zeilenlänge ändern könnte, mußt du alles, was hinter der Einfügeposition steht, umkopieren, um Platz zu schaffen bzw. die Lücken aufzufüllen.</p>
<p>PS: Ich würde es ja so machen, daß ich die Datei einmal komplett in einen (z.B.) vector&lt;produkt&gt; einlese, alle notwendigen Änderungen vornehme und am Ende den kompletten vector zurückschreibe.</p>
<p><sup>*</sup> ios::app bewirkt, daß alle Ausgaben hinten an die Datei angehängt werden, unabhängig von der mit seekp() eingestellten Schreibposition, ios::out alleine löscht den bisherigen Dateiinhalt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1290489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1290489</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 23 May 2007 10:11:27 GMT</pubDate></item><item><title><![CDATA[Reply to An bestimmter Position in Datei Text einfügen bzw. ersetzen on Fri, 25 May 2007 08:49:26 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Danke für die Hilfe,<br />
das mit dem &quot;seekp()&quot; hat zwar nicht so richtig geklappt und hat für mich nicht ganz nachvollziehbare Fehler verursacht, könnte aber auch an mir liegen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Ist aber nicht weiter schlimm, hab mir nach nem bißchen lesen deinen Tipp mit dem Vektor zu Herzen genommen und schreibe jetzt die Datei jedes mal vollständig neu.<br />
Ich finde es zwar nicht so geeignet die &quot;halbe Datenbank&quot; jedes mal komplett neu schreiben zu müssen, aber wir haben ja schließlich in der Schule die Vorgabe bekommen TXT Dateien verwenden zu müssen.<br />
Ist unsere Lehrerin halt selber schuld :p</p>
<p>Danke nochmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1292024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1292024</guid><dc:creator><![CDATA[merc]]></dc:creator><pubDate>Fri, 25 May 2007 08:49:26 GMT</pubDate></item><item><title><![CDATA[Reply to An bestimmter Position in Datei Text einfügen bzw. ersetzen on Fri, 25 May 2007 09:04:47 GMT]]></title><description><![CDATA[<p>Eine Alternative (wenn es dir nicht auf die Reihenfolge der Dateieinträge ankommt) wäre es vielleicht, den alten Eintrag nur als ungültig zu kennzeichnen, wenn der neue nicht mehr in die Zeile passen würde, und am Dateiende einen neuen Eintrag anzuhängen.</p>
<p>(wenn du die z.B. Bestellmenge verkleinerst, wird die Ausgabezeile kürzer und du mußt nur ein Trennzeichen einfügen, um zu markieren, daß der Rest der physichen Zeile &quot;Müll&quot; ist. Wenn die Bestellmenge vergrößert wird und der neue Eintrag nicht mehr in die Zeile (inklusive eventuellen Reserven) passen würde, überschreibst du z.B. die Seriennummer in der Zeile mit 0000 (für &quot;ungültig&quot;) und hängst am Dateiende einen neuen Eintrag an.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1292030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1292030</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 25 May 2007 09:04:47 GMT</pubDate></item></channel></rss>