WinFuture-Forum.de: Datei Durchsuchen + Zeilen Löschen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Datei Durchsuchen + Zeilen Löschen


#1 Mitglied ist offline   Crapshit 

  • Gruppe: aktive Mitglieder
  • Beiträge: 216
  • Beigetreten: 14. September 06
  • Reputation: 0

geschrieben 14. Februar 2007 - 08:31

Hallo Leute,

ich hatte bis jetzt noch nichts mit dem Einlesen von Dateien zu tun, deswegen habe ich hier ein paar Fragen. Also ich habe eine xml-Datei und ich muss in einem bestimmten Bereich zwischen zwei Tags mehrere Zeilen löschen.

z.B. zwischen diesen Tags sind mehrere Zeilen ---> <Beispiel> </Beispiel>

<Beispiel>
Zeile1
Zeile2
Zeile3
Zeile4
</Beispiel>

So jetzt meine Fragen.

1) Wie lese ich z.B. eine xml-Datei ein. Wird die eingelesene Datei in irgendeiner Variablen gespeichert ? Wenn ja welchen Datentyp muss ich wählen ? String ?
2) Ich muss ja einmal nach diesem Tag suchen "<Beispiel>" und einmal nach diesem "</Beispiel>". Wie finde ich nun heraus wieviele Zeilen dazwischen sind bzw. wie ich die Zeile löschen kann.?

Kann mir vielleicht jemand helfen bitte.
0

Anzeige



#2 Mitglied ist offline   Mal4ik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 642
  • Beigetreten: 22. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 14. Februar 2007 - 08:58

Möglicherweise hilft dir dieses Programm dabei: Inforapid Suchen & Ersetzen
//**~ Mal4ik ~**//
0

#3 Mitglied ist offline   Crapshit 

  • Gruppe: aktive Mitglieder
  • Beiträge: 216
  • Beigetreten: 14. September 06
  • Reputation: 0

geschrieben 14. Februar 2007 - 09:03

Hi,

danke für die schnelle Antwort.
Ich "muss" ein kleines C++ Programm schreiben.

Ich habe ein paar Probleme und zwar weiß ich halt wie gesagt nicht, wie ich in der Textdatei oder xml-Datei (das is egal) etwas bestimmtes suchen kann wie oben zu sehen ist die "Beispiel Tags" und diese mit den dazwischen befindenden Zeilen löschen kann. Sonst soll die Datei nicht weiter verändert werden.
0

#4 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.701
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 14. Februar 2007 - 09:16

Die einfachste Möglichkeit wäre es einen XML-Parser einzusetzen, wie Xerces. Doku sollte genügend auf der Seite vorhanden sein.
Bei Unklarheiten ansonsten einfach nachfragen :blink:
0

#5 Mitglied ist offline   Crapshit 

  • Gruppe: aktive Mitglieder
  • Beiträge: 216
  • Beigetreten: 14. September 06
  • Reputation: 0

geschrieben 14. Februar 2007 - 09:27

Ich "muss" leider ein eigenes Programm schreiben. Mein Programm wird von einem anderen aufgerufen und es sollen 3 Parameter übergeben werden können.
1. Parameter = Anzahl Löschvorgänge.
2. Parameter = Startpunkt des Löschvorgangs
3. Parameter = Endpunkt des Löschvorgangs

Bin noch ein newbie im programmieren. Please, help me.
0

#6 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.701
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 14. Februar 2007 - 09:39

Zitat

Ich "muss" leider ein eigenes Programm schreiben.

Es ist dir verboten auf externe Bibliotheken zuzugreifen?
Ganz ehrlich...bevor ich das Rad neu erfinde, schaue ich erst nach, ob sowas ähnliches schon existiert.

Und Xerces ist in dem Sinne kein eigenes Programm, sondern eine Bibliothek, die einem auf einfachste Weise ermöglicht, XML-Dateien zu lesen/schreiben. Und den Rest musst du sowieso selbständig implementieren.

Wenn du das jetzt wirklich auf "Low-Level-Ebene" entwickeln möchtest - wovon ich dir wirklich abrate - dann sollte dir dieser Link weiterhelfen: http://www.cplusplus...rial/files.html
0

#7 Mitglied ist offline   Crapshit 

  • Gruppe: aktive Mitglieder
  • Beiträge: 216
  • Beigetreten: 14. September 06
  • Reputation: 0

geschrieben 15. Februar 2007 - 11:15

Hallo Leute ich bins nochmal,

also noch einmal zu meinem Problem zurück. Bin ja newbie.
Also ich weiß wie ich auf Parameter zugreife, die ich beim Programmaufruf mitgebe. Das habe ich rausbekommen.

Mein Problem: ist aber immer noch in einer Datei nach etwas zu suchen (Suchbegriff steht in einer Variablen) und wenn der Suchbegriff gefunden wird bis zu einer stelle Sachen zu löschen. Diese Stelle bis wohin gelöscht werden soll steht in einer anderen Variablen.


Also ich kann eine Datei öffnen, und in der Konsole den Dateiinhalt meiner Textdatei auszugeben.

int main(int argc, char* argv[])
{
  ifstream datei;	   	// neues objekt zum auslesen meiner datei
  string zeile;		// ein string in den eine zeile immer geschrieben wird
  datei.open("Configuration.txt", ios::in); // öffnen der datei + zuweisung in objekt
  while(!datei.eof())		// bis end of file
  {
	getline(datei,zeile);	//hol die nächste zeile
	cout << zeile << endl;
  }
  datei.close();
  getch();
  return 0;
}

Dieser Beitrag wurde von alphazero bearbeitet: 15. Februar 2007 - 11:22

0

#8 Mitglied ist offline   Crapshit 

  • Gruppe: aktive Mitglieder
  • Beiträge: 216
  • Beigetreten: 14. September 06
  • Reputation: 0

geschrieben 15. Februar 2007 - 14:50

Beitrag anzeigenZitat (Witi: 14.02.2007, 11:16)

Die einfachste Möglichkeit wäre es einen XML-Parser einzusetzen, wie Xerces. Doku sollte genügend auf der Seite vorhanden sein.
Bei Unklarheiten ansonsten einfach nachfragen :D


Also ich habs jetzt irgendwie noch hinbekommen, habe aber nur Probleme saubere xml-Dateien zu erstellen.
Es scheint als speichert der Borland Builder 5 meine neue xml-datei in der codierung ANSI ab.
Wenn ich nachträglich die xml-Datei mit dem Windows-Editor öffne und sie mit der Codierung UTF-8 abspeichere, gehts wieder. Also danach kann ich meine neue xml-Datei ohne Probleme im Firefox z.b. mir angucken.
Weiß jemand eine Lösung ?
Also scheint nur die Codierung zu sein ANSI <---> UTF-8.

Oder mir helfen bei einem xml-Parser, was auch immer das sein soll. Also wie verwende ich sowas ?
Wie verwende ich es in Bezug auf den Builder 5. etc pp.
Wäre schön wenn ihr mir helfen könnt.

*Push*

Dieser Beitrag wurde von alphazero bearbeitet: 20. Februar 2007 - 13:33

0

#9 Mitglied ist offline   Crapshit 

  • Gruppe: aktive Mitglieder
  • Beiträge: 216
  • Beigetreten: 14. September 06
  • Reputation: 0

geschrieben 20. Februar 2007 - 13:34

Beitrag anzeigenZitat (alphazero: 15.02.2007, 16:50)

Also ich habs jetzt irgendwie noch hinbekommen, habe aber nur Probleme saubere xml-Dateien zu erstellen.
Es scheint als speichert der Borland Builder 5 meine neue xml-datei in der codierung ANSI ab.
Wenn ich nachträglich die xml-Datei mit dem Windows-Editor öffne und sie mit der Codierung UTF-8 abspeichere, gehts wieder. Also danach kann ich meine neue xml-Datei ohne Probleme im Firefox z.b. mir angucken.
Weiß jemand eine Lösung ?
Also scheint nur die Codierung zu sein ANSI <---> UTF-8.

Oder mir helfen bei einem xml-Parser, was auch immer das sein soll. Also wie verwende ich sowas ?
Wie verwende ich es in Bezug auf den Builder 5. etc pp.
Wäre schön wenn ihr mir helfen könnt.



*Push*
0

#10 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.701
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 20. Februar 2007 - 14:28

Zitat

Es scheint als speichert der Borland Builder 5 meine neue xml-datei in der codierung ANSI ab.

Dann musst du ihm sagen, dass er das in utf-8 abspeichern soll. :blink:

Zitat

Oder mir helfen bei einem xml-Parser, was auch immer das sein soll.

wikipedia sagte:

XML-Parser analysieren XML-Dokumente und stellen die darin enthaltenen Informationen (also Elemente, Attribute usw.) der weiteren Verarbeitung zur Verfügung.

Normalerweise haben Parser Methoden die sich bspw "setEncoding" schimpfen, mit dem du das CharSet angeben kannst.
0

#11 Mitglied ist offline   Crapshit 

  • Gruppe: aktive Mitglieder
  • Beiträge: 216
  • Beigetreten: 14. September 06
  • Reputation: 0

geschrieben 21. Februar 2007 - 12:33

Beitrag anzeigenZitat (Witi: 20.02.2007, 16:28)

Dann musst du ihm sagen, dass er das in utf-8 abspeichern soll. :(


Wenn ich wüsste wie. Habe dazu nichts gefunden.

Zitat

Normalerweise haben Parser Methoden die sich bspw "setEncoding" schimpfen, mit dem du das CharSet angeben kannst.


Wenn ich eine deutsche Dokumentation zu TinyXML finden würde, würd mir das vielleicht schon weiter helfen.
Ich bin totaler Programmierneuling. Absolut neu!! Alles was mit OOP zu tun hat kann ich nicht. Zeiger Objekte etc pp.

Ein Objekt anlegen kann ich schon, nur weiß ich dann z.b. nicht auf welche methoden ich zurückgreifen kann.
also:

ifstream data("test.xml"); <--- woher weiß ich nun welche methoden ich zur verfügung habe. z.b. in einer datei nach textbausteinen zu suchen

Mein Problem ist nun da ich auch Probleme in englisch habe, durch die Doku von TinyXML zu steigen. Wie öffne ich eine xml datei mit tinyxml. wie lege ich ein objekt an (klasse ?) welche methoden stehen mir in bezug auf "Suchen, Löschen, Schreiben, Neue Datei anlegen"
Also ich brauch Hilfe auf "Erste Klasse Niveau in C++".

//---------------------------------------------------------------------------
#pragma hdrstop
#pragma argsused
#include <iostream.h>
#include <fstream>
using namespace std;

int main(int argc, char* argv[])
{
  ifstream datei;
  ofstream neuedatei;
  string zeile;

  datei.open(argv[1], ios::in);
  neuedatei.open("temp.txt", ios::out);

  bool gefunden = false;
  while(!datei.eof())
  {
	getline(datei,zeile);
	if(zeile.find(argv[2]) != string::npos)
	  gefunden = true;
	if(!gefunden)
	  neuedatei << zeile << endl;
	if(zeile.find(argv[3]) != string::npos)
	  gefunden = false;
  }

  datei.close();
  neuedatei.close();

  remove(argv[1]);
  rename("temp.txt", argv[1]);

  return 0;
}
//---------------------------------------------------------------------------


Sowas, ich sag mal einfache für euch, habe ich nur durch hilfe in foren zusammenbekommen.
Der Code funktioniert, aber nur mit Textdateien!
0

#12 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.701
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 21. Februar 2007 - 12:44

Zitat

ifstream data("test.xml"); <--- woher weiß ich nun welche methoden ich zur verfügung habe. z.b. in einer datei nach textbausteinen zu suchen

Programmierer treffen in ihrem Leben immer wieder auf neue Bibliotheken mit neuen Klassen und Methoden. Was bedeuten soll, dass er nicht wissen kann welche Methoden eine Klasse besitzen kann.
Aber ein guter Programmierer weiß sich zu helfen. Zwei Möglichkeiten fallen mir spontan ein.
1. Du nutzt eine IDE, die dir den Code vervollständigt.
2. Du nutzt eine API (Programmierschnittstelle, Dokumentation...nenn es du wie willst).

Wenn ich richtig sehe, nutzt du einen einfachen Editor und kompilierst wahrscheinlich auf der Konsole. (Was IMO löblich ist, da ich bspw auch so angefangen habe bzw. es mir so beigebracht wurde), also wäre der zweite Punkt für dich interessant.

Ich habe letztens noch einen interessanten Satz gelesen.
"Ein guter Programmierer kann so gut wie jede Programmiersprache, wenn ihm die Sprachreferenz und das Internet zur Verfügung steht."
In diesem Sinne...:wink:
http://www.cplusplus...stream/ifstream

Zitat

Mein Problem ist nun da ich auch Probleme in englisch habe, durch die Doku von TinyXML zu steigen. Wie öffne ich eine xml datei mit tinyxml.

Ganz ehrlich...LERNE ENGLISCH!
Ohne englisch wirst du irgendwann einfach nicht weiterkommen...

Ansonsten bin ich mir ziemlich sicher, dass du auch deutsche Doku in einer Suchmaschine deiner Wahl finden wirst.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0