TXT-Datei einlesen, bearbeiten und ausgeben
-
HiGH@ALL!
Ich habe folgendes Problem (BCB6):
einzulesendeDatei.txt
111.111.111.111:XXX:0000 22.22.22.22:XXX:0000 3.3.3.3:XXX:0000 444.45.476.2:XXX:0000 44.444.44.4:XXX:0000auszugebendeDatei.txt
111.111.111.111 22.22.22.22 3.3.3.3 444.45.476.2 44.444.44.4..also eine TXT-Datei mit verschiedenen ips, dahinter immer ein ":"eine bemerkung nochma ein ":" und eine 4stellige zahl (es steht hinter jeder ip immer das selbe (":XXX:0000")).
nun bräuchte ich ein programm, das einfach hinter jeder ip das ":XXX:0000" abschneidet und die ips dann in eine neue txt schreibt (eine IP pro zeile).hab schon gegooglet usw. müsste irgentwie mit fstream gehen, aber ich weiß nicht wie ich das machen soll, das der immer dieses ":XXX:0000" löscht.
Kann mit da jemand weiterhelfen ??
GreeZ Weedy
-
Sieh dir mal in der BCB-Hilfe die Klasse TStringList an...
-
TStringList: LoadFromFile()
und
AnsiString: Pos
sind da ganz hilfreich.
-
Hallo
dazu benutzt man im BCB die Klasse TStringList, mit den Methoden LoadFromFile, SaveToFile, dem Array Strings sowie der AnsiString-Funktionen AnsiPos und Delete.
bis bald
akari
-
AnsiString strPos; strPos = "1111:XXX"; int iPos = strPos.Pos(':');
-
mh ich versteh insoweit nicht viel von c++, bzw nur teilweise
und ich weiß dass man das mit fstream ifstream seekg auch umsetzen kann, dürften auch nur ein paar zeilen sein, kann mir da jemand in die richtung weiterhelfen?
wie ich einfach ab dem ":" den rest der zeile abschneide
so hab ichs mir zumindest gedachtgreez & thx
weedy
-
Hallo
wenn du mit ifstream, seekg arbeiten willst, must du im C++ Forum nachschauen, insbesondere in der dortigen FAQ.
bis bald
akari
-
mein problem ist das ich nirgends was finde wie ich das machen soll, das er nur bis zum ":" einließt, in eine weitere datei abspeichert, den rest der zwile "verwirft" und das selbe in schleife bis eof
greez
weedy
-
Wie bereits gesagt, wenn Du es mit ifstream machen willst schau in FAQ des C++-Forums.
Im BCB verwendet man TFileStream.In Deinem Fall würde ich allerdings TStringList nehmen, in diese lädst Du die Textdatei. Dann gehst Du in einer Schleife durch alle Einträge in dieser TStringList, liest die Zeile aus, ermittelst die Position von :XXX und löschst alles ab dieser Position.
Dafür brauchst Du nur folgende Methoden:
TStringList::LoadFromFile()
AnsiString::AnsiPos()
AnsiString::Delete()
-
ok danke für die schnelle hilfe euch allen, ich denk das werd ich so hinbekommen, arbeite mich mal durch
greez
weedy
-
Lies mal ein bißchen in der Hilfe und probier es aus. Wenn Du mit irgendetwas nicht klarkommst, kannst Du gerne nochmal nachfragen...
Auf ein kleine Gemeinheit möchte ich Dich noch hinweisen. Du kannst auf einem String aus einer TStringList nicht direkt eine Delete Funktion ausführen. Du mußt den String wieder zuweisen.
Das liegt daran, dass beim Zugriff ein temporärer AnsiString erzeugt wird...