<?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[FindFirstFile an ifstream übergeben?]]></title><description><![CDATA[<p>Hallo mal wieder;</p>
<p>Ich möchte eine Datei, welche mit FindFirstFile() gefunden wurde mit ifstream öffnen. Ist das überhaupt möglich? Oder muss ich die Sache ganz anders angehen?</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;tchar.h&gt;
#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;dos.h&gt;

using namespace std;

WIN32_FIND_DATA fileData;
HANDLE fileHan;

int main(){

string filename;
fileHan = FindFirstFile(&quot;C:\\*.txt&quot;, &amp;fileData);

while (true){
    FindNextFile(fileHan, &amp;fileData);

    if (filename == fileData.cFileName){
        break;
        }

    filename = fileData.cFileName;

    if(fileHan == INVALID_HANDLE_VALUE){
        cout &lt;&lt; &quot;Process Failed&quot;;
        }
        else {
            cout &lt;&lt; &quot;The first File found is &quot; &lt;&lt; filename&lt;&lt;endl;
            }

}//end while
ifstream fin(&quot;C:\\&quot; + filename);
    if(fin){
        cout&lt;&lt;&quot;file found&quot;;

        }
FindClose(fileHan);

return(0);

}//end main
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/274126/findfirstfile-an-ifstream-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 19:04:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274126.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Sep 2010 12:17:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Mon, 20 Sep 2010 12:28:54 GMT]]></title><description><![CDATA[<p>Hallo mal wieder;</p>
<p>Ich möchte eine Datei, welche mit FindFirstFile() gefunden wurde mit ifstream öffnen. Ist das überhaupt möglich? Oder muss ich die Sache ganz anders angehen?</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;tchar.h&gt;
#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;dos.h&gt;

using namespace std;

WIN32_FIND_DATA fileData;
HANDLE fileHan;

int main(){

string filename;
fileHan = FindFirstFile(&quot;C:\\*.txt&quot;, &amp;fileData);

while (true){
    FindNextFile(fileHan, &amp;fileData);

    if (filename == fileData.cFileName){
        break;
        }

    filename = fileData.cFileName;

    if(fileHan == INVALID_HANDLE_VALUE){
        cout &lt;&lt; &quot;Process Failed&quot;;
        }
        else {
            cout &lt;&lt; &quot;The first File found is &quot; &lt;&lt; filename&lt;&lt;endl;
            }

}//end while
ifstream fin(&quot;C:\\&quot; + filename);
    if(fin){
        cout&lt;&lt;&quot;file found&quot;;

        }
FindClose(fileHan);

return(0);

}//end main
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1954765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954765</guid><dc:creator><![CDATA[JonnyDaVinci]]></dc:creator><pubDate>Mon, 20 Sep 2010 12:28:54 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Mon, 20 Sep 2010 12:23:56 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">ifstream fin((&quot;C:\\&quot; + filename).c_str());
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954768</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 20 Sep 2010 12:23:56 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Mon, 20 Sep 2010 12:26:39 GMT]]></title><description><![CDATA[<p>Hi _matze</p>
<p>Danke für die schnelle Antwort!!!<br />
das scheint so zu funktionieren!!!</p>
<p>Könntest Du mir vllt auch noch erklären warum das so sein muss?</p>
<p>Thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954769</guid><dc:creator><![CDATA[JonnyDaVinci]]></dc:creator><pubDate>Mon, 20 Sep 2010 12:26:39 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Mon, 20 Sep 2010 12:44:43 GMT]]></title><description><![CDATA[<p>Das Ergebnis von &quot;C:\&quot; + filename ist ein std::string. Der Konstruktor von ifstream verlangt aber nach einem const char*. Da scheinbar keine implizite Konvertierung möglich ist, stillst du dieses Verlangen daher mit der std::string-Methode c_str, die dir einen char-Zeiger zurückgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954774</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 20 Sep 2010 12:44:43 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Mon, 20 Sep 2010 12:56:35 GMT]]></title><description><![CDATA[<p>Danke für eure Hilfe. Soweit läufts jetzt. Aber</p>
<p>zum Schluss soll noch eine neu Datei mit erweitertem Inhalt (Zuvor ausgelsener + neuer Text) erzeugt werde.</p>
<p>Das macht es auch , allerdings nur zu einer Datei und nicht zu allen welche er findet...</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;tchar.h&gt;
#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;dos.h&gt;

using namespace std;

WIN32_FIND_DATA fileData;
HANDLE fileHan;

int main(){

char zeile [1024];
string Seite [100];

int k=0;
while(k&lt; 2) {

string filename;

fileHan = FindFirstFile(&quot;C:\\*.txt&quot;, &amp;fileData);

while (true){
    FindNextFile(fileHan, &amp;fileData);

    if (filename == fileData.cFileName){
        break;
        }

    filename = fileData.cFileName;

    if(fileHan == INVALID_HANDLE_VALUE){
        cout &lt;&lt; &quot;Process Failed&quot;;
        }
        else {
            cout &lt;&lt; &quot;The first File found is &quot; &lt;&lt; filename&lt;&lt;endl;
            }

}//end while

/*ifstream fin((&quot;C:\\&quot; + filename).c_str());
    if(fin){
        cout&lt;&lt;&quot;file found&quot;;

        }
*/
ifstream dateiLese((&quot;C:\\&quot; + filename).c_str());
if (dateiLese){                             // Wenn Datei vorhanden....
ofstream dateiSchreibe ((&quot;C:\\&quot; + filename+ &quot;.ixm&quot;).c_str());  // Ausgabedatei
{int i=0;                                   // Zählvariable Zeilen
    cout &lt;&lt; &quot;File found&quot; &lt;&lt; endl;           // Kontrollausgabe

//Einlesen der .txt
while(dateiLese.getline (zeile, 1024)){
    Seite[i]=zeile;

    //Schreiben der neuen Datei .ixm
    if (i==0){
        dateiSchreibe &lt;&lt;&quot;[Execute]&quot; &lt;&lt; &quot;\n&quot;;    //Nur erste Zeile schreiben
    }

    dateiSchreibe &lt;&lt;Seite[i] &lt;&lt; &quot;\n&quot;;           //Kopie der alten Datei zeilenweise

    i++;
}

dateiLese.close ();
dateiSchreibe.close();

}

}
else {
        cout&lt;&lt;&quot;All Files Achived! - Nothing more to be done&quot;&lt;&lt;endl;
    }
    Sleep(10000);
}
FindClose(fileHan);

return(0);

}//end main
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1954784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954784</guid><dc:creator><![CDATA[JonnyDaVinci]]></dc:creator><pubDate>Mon, 20 Sep 2010 12:56:35 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Mon, 20 Sep 2010 13:25:40 GMT]]></title><description><![CDATA[<p>Das hier</p>
<pre><code class="language-cpp">if (filename == fileData.cFileName){
        break;
        }
</code></pre>
<p>brauchst du schon mal nicht. Werte stattdessen die Rückgabe von FindNextFile aus. So kannst du auch gleich eine sinnvolle Abbruchbedingung für deine innere while-Schleife definieren.</p>
<p>Zu deinem Problem: bist du schon mal schrittweise mit dem Debugger durch dein Programm gegangen? Ich vermute mal, du hast bislang keinen Debugger benutzt, richtig? Das ist der eigentliche Fehler! Setze einen Haltepunkt an einer günstigen Stelle und sieh dir dann genau an, was bei jedem Schritt passiert. Irgendwann erreichst du den Punkt, an dem nicht das passiert, was du eigentlich wolltest.</p>
<p>EDIT: Ähm, ich habe mir deinen Code jetzt doch mal angesehen (in meinem Editor, vernünftig eingerückt). Ist doch klar, dass nur die letzte Datei in neuer Version gespeichert wird. Deine Schleife mit FindNextFile wird zunächst abgearbeitet, bis alle txt-Dateien durch sind. Und im Anschluss hast du dann einfach das Schreiben daruntergeklatscht und verwendest dabei halt das letzte filename. Du solltest jedesmal beim Finden einer txt-Datei auch deinen Schreibkram ausführen. Und was soll eigentlich die Variable k? Die wird nie inkrementiert, somit ist deine äußere while-Schleife eine Endlosschleife...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954792</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 20 Sep 2010 13:25:40 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Mon, 20 Sep 2010 14:00:35 GMT]]></title><description><![CDATA[<blockquote>
<p>Und was soll eigentlich die Variable k? Die wird nie inkrementiert, somit ist deine äußere while-Schleife eine Endlosschleife...</p>
</blockquote>
<p>Das soll ja auch eine Endlosschleife sein, da das ganze alle 10Sekunden gemacht werden soll....</p>
<p>Wie könnte ich das besser lösen?</p>
<p>Ich habe es jetzt so gemacht, das ich die letzte Datei lösche, somit springt er zur nächsten...</p>
<p>Den Pfad wollte ich noch Variabel gestalten indem ich zunächste ein CIN mach um den Pfad einzulesen.</p>
<p>Er springt auch in den richtigen Ordner, macht dann aber nicht mehr weiter....</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;tchar.h&gt;
#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;dos.h&gt;

using namespace std;

WIN32_FIND_DATA fileData;
HANDLE fileHan;

int main(){

//Einlesen des Pfades in Variable path
char path [300];
cout&lt;&lt;&quot;Pfad eingeben - Statt '\\' MUSS '\\\\' verwendet werden (C:\\\\Dokumente\\\\*.txt)&quot;&lt;&lt;endl;
cout&lt;&lt;&quot;Pfad: &quot;;
cin&gt;&gt;path;

//Schleife für ständige Wiederholung
char zeile [1024];
string Seite [100];

int k=0;
while(k&lt; 2) {

string filename;

fileHan = FindFirstFile(path, &amp;fileData);

while (true){
    FindNextFile(fileHan, &amp;fileData);

    if (filename == fileData.cFileName){
        break;
        }

    filename = fileData.cFileName;

    if(fileHan == INVALID_HANDLE_VALUE){
        cout &lt;&lt; &quot;Process Failed&quot;&lt;&lt;endl;
        }
        else {
            cout &lt;&lt; &quot;The first File found is &quot; &lt;&lt; filename&lt;&lt;endl;
            }

     }//end while

ifstream dateiLese((path + filename).c_str());
    if (dateiLese){                             // Wenn Datei vorhanden....
        ofstream dateiSchreibe ((path + filename+ &quot;.ixm&quot;).c_str());  // Ausgabedatei
        {int i=0;                                   // Zählvariable Zeilen
            cout &lt;&lt; &quot;File found&quot; &lt;&lt; endl;           // Kontrollausgabe

//Einlesen der .txt
while(dateiLese.getline (zeile, 1024)){
    Seite[i]=zeile;

    //Schreiben der neuen Datei .ixm
    if (i==0){
        dateiSchreibe &lt;&lt;&quot;[Execute]&quot; &lt;&lt; &quot;\n&quot;;    //Nur erste Zeile schreiben
    }

    dateiSchreibe &lt;&lt;Seite[i] &lt;&lt; &quot;\n&quot;;           //Kopie der alten Datei zeilenweise

    i++;
    }

dateiLese.close ();
dateiSchreibe.close();

//rename((&quot;C:\\Users\\Jonny\\Desktop\\SFStoINOX\\&quot; + filename).c_str(), (&quot;C:\\Users\\Jonny\\Desktop\\SFStoINOX\\&quot; + filename+ &quot;.done&quot;).c_str());
remove((path + filename).c_str());
    }//end if (dateiLese)

}
else {
        cout&lt;&lt;&quot;All Files Achived! - Nothing more to be done&quot;&lt;&lt;endl;
    }
    Sleep(10000);
}
FindClose(fileHan);

return(0);

}//end main
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1954812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954812</guid><dc:creator><![CDATA[JonnyDaVinci]]></dc:creator><pubDate>Mon, 20 Sep 2010 14:00:35 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Mon, 20 Sep 2010 14:21:04 GMT]]></title><description><![CDATA[<p>1. Wenn du eine Endlosschleife haben willst (was ja ok sein kann), dann mach einfach while(true), aber k ist hier völlig unnötig. Du initialisierst es mit 0 und packst es dann nie wieder an. Und die ganze Zeit fragst du ab, ob es kleiner 2 ist. Jaaa, es ist immer noch kleiner 2! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> true ist also als (Endlos-)Bedingung gleichwertig.</p>
<p>2. Deine neue Aufforderung zur Benutzereingabe ist so falsch. Der Benutzer muss ganz normal einen Backslash zum Trennen der Pfadelemente verwenden. Der einzige, der doppelte Backslashes notieren muss, bist du - und das auch nur, wenn du im Quellcode in Stringliteralen Backslashes schreiben willst. Dieser doppelte Backslash wird dann zu einem einfachen (siehe Escapesequenzen).</p>
<p>3. Das mit dem Löschen bringt dich auch irgendwie zur nächsten Datei, nett! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Ist doch aber nicht, was du ursprünglich wolltest. Du willst doch einfach jede gefundene txt-Datei als ixm-Datei speichern, richtig? Und du findest in deiner ersten, inneren while-Schleife jede txt-Datei im Verzeichnis, richtig? Und du hast nach der Schleife einen Abschnitt, der die aktuell gefundene Datei als ixm-Datei speichert, richtig? Wo ist jetzt der Fehler? Genau, du musst diesen &quot;ixm-Speicher-Abschnitt&quot; einfach ans Ende deiner ersten, inneren while-Schleife packen. Sobald eine txt-Datei gefunden wurde, wird sie als ixm gespeichert. Und erst danach geht die Schleife in die nächste Runde und findet die nächste Datei, die dann wieder gespeichert wird usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954830</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 20 Sep 2010 14:21:04 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Mon, 20 Sep 2010 14:25:20 GMT]]></title><description><![CDATA[<p>Noch was: du musst dringend an deiner Einrückung arbeiten! So verliert man völlig den Überblick und weiß gar nicht, wann ein Block aufhört. So sieht dein Code (der zuerst gepostete) halbwegs ordentlich formatiert aus:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;tchar.h&gt;
#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;dos.h&gt;

using namespace std;

WIN32_FIND_DATA fileData;
HANDLE fileHan;

int main(){

	char zeile [1024];
	string Seite [100];

	int k=0;
	while(k&lt; 2) {

		string filename;

		fileHan = FindFirstFile(&quot;C:\\*.txt&quot;, &amp;fileData);

		while (true){
			FindNextFile(fileHan, &amp;fileData);

			if (filename == fileData.cFileName){
				break;
			}

			filename = fileData.cFileName;

			if(fileHan == INVALID_HANDLE_VALUE){
				cout &lt;&lt; &quot;Process Failed&quot;;
			}
			else {
				cout &lt;&lt; &quot;The first File found is &quot; &lt;&lt; filename&lt;&lt;endl;
			}

		}//end while

		/*ifstream fin((&quot;C:\\&quot; + filename).c_str());
		if(fin){
		cout&lt;&lt;&quot;file found&quot;;

		}
		*/
		ifstream dateiLese((&quot;C:\\&quot; + filename).c_str());
		if (dateiLese){                             // Wenn Datei vorhanden....
			ofstream dateiSchreibe ((&quot;C:\\&quot; + filename+ &quot;.ixm&quot;).c_str());  // Ausgabedatei
			int i=0;                                   // Zählvariable Zeilen
			cout &lt;&lt; &quot;File found&quot; &lt;&lt; endl;           // Kontrollausgabe

			//Einlesen der .txt
			while(dateiLese.getline (zeile, 1024)){
				Seite[i]=zeile;

				//Schreiben der neuen Datei .ixm
				if (i==0){
					dateiSchreibe &lt;&lt;&quot;[Execute]&quot; &lt;&lt; &quot;\n&quot;;    //Nur erste Zeile schreiben
				}

				dateiSchreibe &lt;&lt;Seite[i] &lt;&lt; &quot;\n&quot;;           //Kopie der alten Datei zeilenweise

				i++;
			}

			dateiLese.close ();
			dateiSchreibe.close();
		}
		else {
			cout&lt;&lt;&quot;All Files Achived! - Nothing more to be done&quot;&lt;&lt;endl;
		}
		Sleep(10000);
	}
	FindClose(fileHan);

	return(0);

}//end main
</code></pre>
<p>Bemerkst du den Unterschied?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954834</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 20 Sep 2010 14:25:20 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Mon, 20 Sep 2010 14:29:51 GMT]]></title><description><![CDATA[<p>Super. Danke für die Hilfe _matze.</p>
<p>Das hier ist das erste C++ Prjekt das ich vin mir gebe und ich bin echt super froh hier gute Hilfe zu erhalten!!!</p>
<p>Ich bin hier gerade wild am verbessern;)</p>
<p>Aber ich habe es immer noch nicht geschafft den Pfad &quot;Variabel&quot; zu übergeben.</p>
<p>Ergeht zwar in den richtigen Ordner, stellt dann aber nix mehr an.</p>
<p>Hab ja da die Variable 'path' welche ich da übergeben will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954837</guid><dc:creator><![CDATA[JonnyDaVinci]]></dc:creator><pubDate>Mon, 20 Sep 2010 14:29:51 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Mon, 20 Sep 2010 14:57:43 GMT]]></title><description><![CDATA[<p>JonnyDaVinci schrieb:</p>
<blockquote>
<p>Das hier ist das erste C++ Prjekt das ich vin mir gebe und ich bin echt super froh hier gute Hilfe zu erhalten!!!</p>
<p>Ich bin hier gerade wild am verbessern;)</p>
</blockquote>
<p>Nicht aufgeben, klappt bestimmt bald! <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>JonnyDaVinci schrieb:</p>
<blockquote>
<p>Aber ich habe es immer noch nicht geschafft den Pfad &quot;Variabel&quot; zu übergeben.</p>
<p>Ergeht zwar in den richtigen Ordner, stellt dann aber nix mehr an.</p>
<p>Hab ja da die Variable 'path' welche ich da übergeben will.</p>
</blockquote>
<p>Hab jetzt keine Zeit mehr, mir das genau anzusehen (vielleicht später heute Abend wieder). Aber eigentlich sehe ich da kein Problem, solange der Benutzer was Vernünftiges eingibt (z.B. &quot;C:\*.txt&quot;). Ich würde aber vorschlagen, dass du erstmal das Speichern aller Dateien umsetzt (falls nicht schon geschehen) und wir dann im Anschluss den variablen Pfad da reinbringen, ok? Übrigens: weißt du, dass du immer eine Datei überspringst? Du führst nämlich FindFirstFile aus und dann direkt im Anschluss FindNextFile. Somit machst du mit der zuerst gefundenen Datei gar nichts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954847</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 20 Sep 2010 14:57:43 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Tue, 21 Sep 2010 08:55:04 GMT]]></title><description><![CDATA[<p>SO</p>
<p>Ich habs nun soweit, dass der Pfad vom User eingegeben werden kann.<br />
Nun möchte ich noch einen Schritt weiter gehen und dies über eine art .ini lösen.</p>
<p>Die soll so aussehen:</p>
<p>C:\a\b\c\<br />
*.txt</p>
<p>Nun möchte ich diese Zeilenweise einlesen und in die Variablen speichern, welche ich zuvor manuell eingeben musste, sodass ich später nur noch bei Bedarf die .ini ändern muss.</p>
<p>Wie bekomme ich nun diese beide Zeilen in die Variablen?</p>
<p>Bisheriger Code:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;tchar.h&gt;
#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;dos.h&gt;

using namespace std;

WIN32_FIND_DATA fileData;
HANDLE fileHan;

int main(){

    //Einlesen des Pfades in Variable path     
    char path [1000];      //Variable für Pfad
    char data_end [6];      //Variable für Dateiendung
    char path_comp [1000];  //Pfad + Endung

//----------------------------------------------------------------------------------------
    //Eingabe des Pfades
    cout&lt;&lt;&quot;Bitte Pfad eingeben&quot;&lt;&lt;'\n';
    cout&lt;&lt;&quot;Pfad: &quot;;
    cin&gt;&gt;path;
    //cout&lt;&lt;path&lt;&lt;'\n';         //Testausgabe

    //Eingabe der Endung
    cout&lt;&lt;&quot;Welche Endung hat die Datei? (Im Format '*.xxx' angeben)&quot;&lt;&lt;'\n';
    cin&gt;&gt;data_end;

    //Kopieren und Zusammenfügen der Eingabe
    strcpy (path_comp, path);
    strcat (path_comp, data_end);
    puts(path_comp);
    //cout&lt;&lt;path_comp&lt;&lt;'\n';    //Testausgabe

//------------------------------------------------------------------------------------------
    //Schleife für ständige Wiederholung
    char zeile [1024];
    string Seite [100];

    //int k=0;
    while(true) {

//FindFile-----------------------------------------------------------------------------------
        string filename;

        fileHan = FindFirstFile(path_comp, &amp;fileData);

            while (true){
                FindNextFile(fileHan, &amp;fileData);

                if (filename == fileData.cFileName){
                    break;
                }

                filename = fileData.cFileName;

                if(fileHan == INVALID_HANDLE_VALUE){
                    cout &lt;&lt; &quot;Process Failed&quot;&lt;&lt;'\n';
                }
                else {
                    cout &lt;&lt; &quot;The first File found is &quot; &lt;&lt; filename&lt;&lt;'\n';
                }

            }//end while FindFile

//OPEN--------------------------------------------------------------------------------------------------
        //Datei öffnen
        ifstream dateiLese((path+ filename).c_str());
        if (dateiLese){                                                     // Wenn Datei vorhanden....
            ofstream dateiSchreibe ((path + filename+ &quot;.ixm&quot;).c_str());     // Ausgabedatei
        int i=0;                                                            // Zählvariable Zeilen
            cout &lt;&lt; &quot;File found&quot; &lt;&lt; '\n';                                   // Kontrollausgabe

//READ--------------------------------------------------------------------------------------------------
        //Einlesen der .txt
        while(dateiLese.getline (zeile, 1024)){
            Seite[i]=zeile;

//WRITE-------------------------------------------------------------------------------------------------
            //Schreiben der neuen Datei .ixm
            if (i==0){
                dateiSchreibe &lt;&lt;&quot;[Execute]&quot; &lt;&lt; &quot;\n&quot;;    //Nur erste Zeile schreiben
            }

            dateiSchreibe &lt;&lt;Seite[i] &lt;&lt; &quot;\n&quot;;           //Kopie der alten Datei zeilenweise

            i++;
        }                                               //end Einlesen

//CLOSE------------------------------------------------------------------------------------------------
            dateiLese.close ();
            dateiSchreibe.close();

            remove((path + filename).c_str());

        }

        else {
            cout&lt;&lt;&quot;All Files Achived! - Nothing more to be done&quot;&lt;&lt;endl;
        }
        Sleep(10000);
    }

    FindClose(fileHan);

    return(0);

}//end main
</code></pre>
<p>FRAGE: Wäre es besser mit Funktionen zu arbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955193</guid><dc:creator><![CDATA[JonnyDaVinci]]></dc:creator><pubDate>Tue, 21 Sep 2010 08:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Tue, 21 Sep 2010 09:24:00 GMT]]></title><description><![CDATA[<p>Ich finde es ja klasse, wie enthusiastisch du bei der Sache bist, aber willst du nicht erst mal den Kern des Programms ans Laufen kriegen? Du wolltest doch jede gefundene txt-Datei als ixm speichern. An dem Programmteil hat sich ja gar nichts getan. Ich finde, das solltest du zuerst mal regeln, bevor du dafür sorgst, dass das Programm bequem per Datei erfährt, wo es was falsch machen soll. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>JonnyDaVinci schrieb:</p>
<blockquote>
<p>Ich habs nun soweit, dass der Pfad vom User eingegeben werden kann.<br />
Nun möchte ich noch einen Schritt weiter gehen und dies über eine art .ini lösen.</p>
<p>Die soll so aussehen:</p>
<p>C:\a\b\c\<br />
*.txt</p>
</blockquote>
<p>Das ist keine ini-Datei. eine ini-Datei arbeitet mit Sektionen, Schlüsseln und Werten. Du hast hier nur Werte. Nenn es einfach Textdatei. Aber das nur am Rande...</p>
<p>JonnyDaVinci schrieb:</p>
<blockquote>
<p>FRAGE: Wäre es besser mit Funktionen zu arbeiten?</p>
</blockquote>
<p>Ja! Funktionen helfen, Funktionalität zu gliedern und Übersicht zu schaffen. Solltest du unbedingt machen. Einen Vorschlag habe ich schon:</p>
<pre><code class="language-cpp">SaveFileAsIXM(string sourceFilename, string path) {
  //...
}
</code></pre>
<p>So oder so ähnlich, je nachdem was du genau willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955218</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 21 Sep 2010 09:24:00 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Tue, 21 Sep 2010 09:39:32 GMT]]></title><description><![CDATA[<p>hi</p>
<p>also das PRogramm macht im mom genau das was soll. Es liest die Datei, erweitert sie und speichert sie unter .ixm wieder ab. Danach löscht es die nicht mehr benötigte .txt. Vllt nicht so schön vom Code her, aber es funktioniert. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Es wird auch keine Datei ausgelassen.;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955229</guid><dc:creator><![CDATA[JonnyDaVinci]]></dc:creator><pubDate>Tue, 21 Sep 2010 09:39:32 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Tue, 21 Sep 2010 09:54:45 GMT]]></title><description><![CDATA[<p>JonnyDaVinci schrieb:</p>
<blockquote>
<p>Es wird auch keine Datei ausgelassen.;)</p>
</blockquote>
<p>Stimmt leider nicht. Ich habe unter C:\ eine Datei test.txt und eine test2.txt. Jetzt schau mal hier:</p>
<pre><code class="language-cpp">fileHan = FindFirstFile(path_comp, &amp;fileData);  //in fileData steht nun die Datei test.txt

        while (true){
            FindNextFile(fileHan, &amp;fileData);     //hier wird direkt auf die nächste Datei gesprungen. es steht nun also test2.txt in fileData. Mit test.txt wurde gar nichts gemacht.
</code></pre>
<p>Welche IDE benutzt du? Zufällig Visual Studio? Dann könnte ich dir nämlich mal sagen, wie ein paar grundlegende Debugging-Mechanismen funktionieren. Glaube mir, das würde dir ungemein helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955244</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 21 Sep 2010 09:54:45 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Tue, 21 Sep 2010 09:57:57 GMT]]></title><description><![CDATA[<p>ich benutz code:Blocks</p>
<p>Also bei mir geht er alle Dateien durch!<br />
Die erste zeigt er zwar zunächst nich in der Konsole an, bearbeitet diese aber zu schluss...</p>
<p>Z.B. test.txt<br />
test2.txt</p>
<p>dann steht in der Konsole zuerst nur test2.txt. ja.<br />
Beim nächsten durchgang jedoch wird auch die test.txt verarbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955248</guid><dc:creator><![CDATA[JonnyDaVinci]]></dc:creator><pubDate>Tue, 21 Sep 2010 09:57:57 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Tue, 21 Sep 2010 10:14:43 GMT]]></title><description><![CDATA[<p>Ach klar, du hast ja außen drum noch eine Endlosschleife. Und du löschst verarbeitete Dateien. Du findest also jedesmal weniger Dateien und irgendwann ist die erste (die bislang immer übersprungen wurde) als einzige übrig. FindNextFile schlägt fehl (du verarbeitest die Rückgabe ja leider nicht) und in fileData steht noch das Gleiche wie nach FindFirstFile. Daher bekommst du zum Schluss auch diese übersprungene Datei. Das ist aber gar nicht gut. Du hast quasi Glück, dass sich die Programmierfehler gegenseitig aufheben oder so... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Sinnvoll wäre in etwa so ein Konstrukt:</p>
<pre><code class="language-cpp">while(true) {  //deine äußere Endlosschleife
  bool bFileFound=true;

  fileHan = FindFirstFile(path_comp, &amp;fileData);
  if(fileHan==INVALID_HANDLE_VALUE) {  //wenn gar keine Dateien mit der Endung gefunden werden, muss die Schleife unten auch nicht ausgeführt werden
    bFileFound=false;
  }

  while(bFileFound) {  //solange Dateien gefunden werden, werden sie als ixm gespeichert

    //mache was mit der Datei (Speichern als ixm usw.)

    //hier erst die nächste Datei suchen; bei der nächsten Iteration wird sie dann verarbeitet
    if(FALSE==FindNextFile(fileHan, &amp;fileData)) {
      bFileFound=false;  //wenn keine Datei mehr gefunden wird, wird hiermit die Schleife beendet
    }
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1955265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955265</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 21 Sep 2010 10:14:43 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Tue, 21 Sep 2010 10:16:09 GMT]]></title><description><![CDATA[<p>danke!!!</p>
<p>probier ich mal aus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955268</guid><dc:creator><![CDATA[JonnyDaVinci]]></dc:creator><pubDate>Tue, 21 Sep 2010 10:16:09 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Tue, 21 Sep 2010 10:30:38 GMT]]></title><description><![CDATA[<p>JonnyDaVinci schrieb:</p>
<blockquote>
<p>ich benutz Code::Blocks</p>
</blockquote>
<p>Da kenne ich mich zwar nicht aus, aber hier ist doch ne schöne Übersicht:</p>
<p><a href="http://wiki.codeblocks.org/index.php?title=Debugging_with_Code::Blocks" rel="nofollow">http://wiki.codeblocks.org/index.php?title=Debugging_with_Code::Blocks</a></p>
<p>Schau dir vor allem mal &quot;Set breakpoints&quot; an.</p>
<p>Ganz kurz:</p>
<p>Ein Haltepunkt funktioniert folgendermaßen: Du setzt ihn an einer bestimmten Stelle (Zeile) des Programms. Dann startest du das Programm. Sobald die Ausführung an dieser Stelle angekommen ist, hält das Programm an! Du bist nun also im Quellcode, obwohl das Programm gerade läuft, und kannst Variableninhalte überprüfen und ändern, den Ausführungszeiger versetzen uvm. Wichtig ist auch, dass du von da aus schrittweise - also Zeile für Zeile - durch das Programm gehen kannst und somit genauestens den Ablauf überprüfen kannst (bei dir müsste F7 die nächste Zeile ausführen, probier es mal aus). Oft programmiert man sich Schleifen und Verzweigungen zusammen, die letztlich gar nicht das machen, was man selbst da sieht. Daher ist es ungemein wichtig, diesen Ablauf mal überprüfen zu können. Und dafür ist der Debugger da!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955271</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 21 Sep 2010 10:30:38 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Tue, 21 Sep 2010 10:36:46 GMT]]></title><description><![CDATA[<p>Super. Danke!!</p>
<p>Schau ich mir auch ma an;)</p>
<p>Ich werd doch noch dieses Progrämmelchen fertig bekommen;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955279</guid><dc:creator><![CDATA[JonnyDaVinci]]></dc:creator><pubDate>Tue, 21 Sep 2010 10:36:46 GMT</pubDate></item><item><title><![CDATA[Reply to FindFirstFile an ifstream übergeben? on Tue, 21 Sep 2010 10:42:32 GMT]]></title><description><![CDATA[<p>JonnyDaVinci schrieb:</p>
<blockquote>
<p>Ich werd doch noch dieses Progrämmelchen fertig bekommen;)</p>
</blockquote>
<p>Aber klar. Nur nie die Geduld verlieren (davon braucht man manchmal richtig viel), dann klappt das schon. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955284</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 21 Sep 2010 10:42:32 GMT</pubDate></item></channel></rss>