Datei einlesen, bestimmte Daten suchen

BLADEooz

Mitglied
Hi, ich bin's nochmal.
Zwar kann ich jetzt durch wincnc's Hilfe bestimmte Daten aus einer Textbox, in die ich vorher eine .txt Datei eingelesen habe, raussuchen lassen, aber wenn ich das in meiner aktuelle Aufgabe anwenden will klappt es nicht mehr. :(
Ich werd euch jetzt einfach mal erklären was meine Aufgabe ist und hoffe, dass mir dann Jemand weiterhelfen kann.
Also ich mach grad mein Betriebspraktikum in einer Softwareentwicklung und meine Aufgabe ist ein Programm zu schreiben welches ungefähr 100 mehr oder weniger gleich aufgebauten .txt Dateien durchecken soll und deren aktuallität überprüfen soll.

Die Dateien sehen alle ungefähr so aus:

;
; Zone file for faszination-wasser.com
;
; The full zone file
;
@ 1D IN SOA kirk.baltic.net hostmaster.baltic.net. (
20020701 ; serial, todays date + todays serial #
5H ; refresh, seconds
30M ; retry seconds
1W ; expire seconds
1D ) ; minimum, seconds
;
1D IN NS kirk.baltic.net. ; Inet Address of name server
1D IN NS ns2.dnsresolve.net.
;
1D IN MX 10 kirk.baltic.net.
;
www 1D IN A 193.189.247.61

Teilweise weicht der Aufbau ab.

Das Programm soll jetzt ein oder zwei bestimmte Zeichenfolgen aus dem Text raussuchen und sie mit einer vorgegebenen Zeichenfolge vergleichen.

kleinens Beispiel: der Servername ns2.dnsresolve.net ist nicht mehr aktuell (aktuell ist halt die vorgegebene Zeichenfolge) und die Datei soll gelöscht, geändert oder sowas werden.

Naja aufjeden Fall bekomm ich das nicht hin :( .
Ich bin halt noch Anfänger.
Wäre nett falls Jemand sich dazu motivieren könnte mir bei dieser Aufgabe zu helfen.
Ich freu mich über jeden Tipp.

Danke schon mal im vorraus.( und auch dafür dass ihr das überhaupt gelesen habt :) )

MfG
BLADEooz
 
Das kannst Du mit der Replace Funktion machen:
Code:
Private Sub Command1_Click()
  Text1.Text = Replace(Text1.Text, "ns2.dnsresolve.net", "Neuezeichefolge")
End Sub
 
Zuletzt bearbeitet:
Ja, es würde so gehen, aber dann müsste der Anwender ja immer wieder die nächste von den 100 Dateien einlesen und gucken ob der falsche Server drin steht(es gibt mehrere falsche Servernamen) ihn ändern lassen (oder die Datei löschen) und danach wieder die nächste Datei einlesen und wieder gucken ob der falsche Servername drin steht....
Das Programm soll das alles automatisch machen, das heißt der Anwender klickt auf einen Button (oder so ähnlich) und den Rest macht das Programm von alleine.

Trotzdem danke für deine Hilfe. :)
 
Hi,
also im Prinzip müsste der Ablauf ja so aussehen wenn ich dich richtig verstehe:

1. Der Anwender gibt einen Pfad an in dem die Dateien stehen (oder er wird fest verdrahtet)
2. Der Anwender gibt an ob die Dateien geändert oder gelöscht werden sollen
3. Wenn geändert werden soll muss zusätzlich angegeben werden durch was die Zeichenfolge ersetzt werden soll
4. Das Programm zieht sich nacheinander alle Dateien an und forstet sie nach einer vom Anwender vorgegebenen Zeichenkette durch
Das Programm soll jetzt ein oder zwei bestimmte Zeichenfolgen aus dem Text raussuchen
Wie meinst du das? Also soll die Zeichenfolge nicht irgendwo in der Datei stehen sondern nur an einer bestimmten Position?!
5. Das Programm löscht alle Dateien in denen diese Zeichenfolge vorkommt (ohne Rückfrage?) oder ändert sie entsprechend

Ist das jetzt so richtig interpretiert?

Gruß
 
Also, das war schon ganz gut interpretiert.
1.Richtig
2.Richtig
3.Richtig
4.Richtig, allerdings hab ich das mit den ein oder zwei Zeichenfolgen schlecht formuliert. Ich meinte das einfach so als Beispiel, dass das Progamm halt so und so viele Zeichenfolgen überprüft die irgendwo im Text stehen, welche das sind und wie viele steht in der Aufgabenstellung, aber daran kann ich mich nicht mehr hundertprotzentig erinnern, aber sagen wir mal lieber zwei. (das ist ja auch nicht ganz so wichtig da man das im nachhinein ja noch ändern kann)
5.Richtig

MfG
BLADEooz
 
Hier mal auf sie schnelle.
Du benötigst eine FileListBox (File1) und einen CommandButton Command1).
Damit werden alle Dateien in dem Ordner (D:\DeinOrdner) in einer For Next Schleife durchlaufen (geöffnet - Zeichenfolge ersetzt - gespeichert).

Code:
Private Sub Command1_Click()
Dim Text As String
Dim Nr As Integer
Dim N As Long

For N = 0 To File1.ListCount - 1
 
 Nr = FreeFile
  
  Open File1.Path & "\" & File1.List(N) For Binary As #Nr ' Datei öffnen
    Text = Space(LOF(Nr))
    Get #Nr, , Text
  Close #Nr
  
 Text = Replace(Text, "ns2.dnsresolve.net", "NeueZeichenfolge") ' zeichenfolge ersetzen
 
 If Dir(File1.Path & "\" & File1.List(N)) <> "" Then Kill File1.Path & "\" & File1.List(N) ' Datei löschen wenn sie existiert

 Nr = FreeFile

  Open File1.Path & "\" & File1.List(N) For Binary As #Nr ' Datei mit neuer Zeichenfolge speichern
    Put #Nr, , Text
  Close #Nr
  
Next

End Sub

Private Sub Form_Load()
  File1.Path = "D:\DeinOrdner" ' musst Du anpassen !!
End Sub
 
Vielen, vielen Dank.
Das hat mir echt sehr geholfen. ^^
Ich werd das jetzt mal alles anpassen und dann meinen Praktikumsbetreuer fragen ob das so zu seiner Zufriedenheit ist.
Falls ich danach noch Probleme hab meld ich mich mal wieder.

Bis dahin MfG :)
BLADEooz
 
Zurück