Umlaute ersetzen

Hallo zusammen,

ich habe folgendes Problem:
Ich soll ein Programm schreiben, dass eine Textdatei öffnet und alle „ä“ durch „ae“ und „ü“ durch „ue“ und „ö“ durch „oe“ und „ß“ durch „ss“ ersetzt. Das Resultat soll ich einer anderen Datei gespeichert werden.

Ich habe nun dies geschrieben:

Sub Sonderzeichen_ersetzen()

Dim DNameget As String
Dim DNameput As String
Dim Pos As Integer
Dim Zeichen As String * 1
Dim Zeichenneu As String * 2

DNameget = Application.GetOpenFilename
DNameput = Application.GetSaveAsFilename

Open DNameget For Random As #1 Len = 1
Open DNameput For Random As #2 Len = 2

Pos = 1

Do
Get #1, Pos, Zeichen
Zeichenneu = Zeichen
If Zeichen = „ä“ Then Zeichenneu = „ae“
If Zeichen = „ö“ Then Zeichenneu = „eo“
If Zeichen = „ü“ Then Zeichenneu = „ue“
If Zeichen = „ß“ Then Zeichenneu = „ss“
If Zeichen = „Ä“ Then Zeichenneu = „Ae“
If Zeichen = „Ö“ Then Zeichenneu = „Oe“
If Zeichen = „Ü“ Then Zeichenneu = „Ue“

Put #2, Pos, Zeichenneu

Loop Until EOF(1)

Close #1
Close #2

End Sub

Das Problem ist nun, dass auch alle anderen Buchstabe nun 2-stellig werden. Das heißt ein Leerzeichen wird eingefügt.
Ich weiß, dass es auch viele andere Möglichkeiten gibt, die Aufgabenstellung zu lösen. Aber das Programm sollte schon so in der Art aufgebaut sein.
Kann mir da vielleicht jemand helfen?

Danke schön schonmal!

Moin, eevaa,

warum nimmst Du nicht die Replace-Funktion?

Gruß Ralf

Ich weiß, dass es auch viele andere Möglichkeiten gibt, die
Aufgabenstellung zu lösen. Aber das Programm sollte schon so
in der Art aufgebaut sein.

Hallo Eva,

warum?
Das ganze einzelne Get und Put dauert doch viel zu lange.

Gruß
Reinhard

Wenn ich die replace-Funktion benutze, würde ich doch die erste Datei überschreiben. Es soll aber in eine neue Datei geschrieben werden.

Hallo,

mach doch danach einfach Speichern unter - alte Datei bleibt erhalten und neue wird als Kopie gespeichert.

Wenn ich die replace-Funktion benutze, würde ich doch die
erste Datei überschreiben. Es soll aber in eine neue Datei
geschrieben werden.

Gruß, Bernd

Und wie wende ich die Replace-Funktion dann an. Ich muss doch einen String angeben. Wie geht das dann mit der Text-Datei?

Hi eevaa,

die Replace-Funktion arbeitet nicht mit Dateien, somdern mit Strings. Du kannst doch einzelne Zeilen aus der 1. Datei in einen String einlesen und sie in die 2. Datei schreiben.

Gruß Ralf

Und wie wende ich die Replace-Funktion dann an. Ich muss doch
einen String angeben. Wie geht das dann mit der Text-Datei?

Hallo Grußlose,

zur Problemlösung hätte ich mehrere Ansätze. Aber Erfahrung macht klug, solange du verschlossen wie eine Auster bist und mir meine obige Frage nicht aussagekräftig beantwortest, mache ich erstmal garnix.

Und, es wird hier nicht nur gern gesehen sondern ist manchmal sehr wichtig. um welche Programmierspache geht es, Version?, ist sie in ein Programm eingebunden wie Vba, welche Version und namen hat das Programm?

Gruß
Reinhard

Hallo Reinhard,

ich habe VBA (wie die Rubrik hier verrät) als Vorlesung in der Uni. Und diese Aufgabe ist eben eine Übungsaufgabe. Und deshalb kann ich zur Beantwortung nur Stoff benutzen, den wir eben in der Vorlesung auch durchnehmen. Und anders, als ich das Programm oben aufgebaut habe geht es deswegen nicht. Wir haben halt nichts anderes gelernt.

Hallo Eva,

ich habe VBA

Jain, du hast eins von ca. 30 MS Programmen die Vba unterstützen.
Alle diese, sehr verschiedenen VBAs, beruhen auf einer an sich gleichen Teilmenge von VB-Befehlen, dazu kommen Programmspezifische Befehle.

(wie die Rubrik hier verrät)

Die Rubrik, das Brett verrät es geht um VB, VBA-Anfragen werden nur geduldet, VB und VBA sind zwei paar Schuh :smile:

als Vorlesung in der Uni. Und diese Aufgabe ist eben eine Übungsaufgabe.

Habe ich mir gedacht, wollts halt nur wissen, bzw. eher ob andere Gründe vorliegen.

Übrigens, hier bei w-w-w sind Hausaufgabenanfragen unerwünscht.
Naja, ich sehe das nicht so eng.

deshalb kann ich zur Beantwortung nur Stoff benutzen, den wir
eben in der Vorlesung auch durchnehmen. Und anders, als ich
das Programm oben aufgebaut habe geht es deswegen nicht. Wir
haben halt nichts anderes gelernt.

Okay, ich schaue mir jetzt mal deinen Code an und meld mich wieder.

Gruß
Reinhard

Und wie wende ich die Replace-Funktion dann an. Ich muss doch
einen String angeben. Wie geht das dann mit der Text-Datei?

Hallo Grußlose,

das Probem ist nicht das Problem an sich somdern deine Einshränkugen wenn du sagst du darfst nur benutzen was ihr gelernt habt, und das weiß ich ja nicht.

Ich würde die Datei als Ganzes auf einmal einlesen, dann mit Replace arbeiten, dann das Ergebnis in die neue Datei schreiben.

Bei deinen bisher bekannten Vorgaben, speziell Len=2 sehe ich da schwarz.
Sag mal an was du kennst, bzw. „erlaubt“ ist.

@Rainer, ersetze bitte
DNameget = Application.GetOpenFilename
DNameput = Application.GetSaveAsFilename
durch
DNameget = „C:\test\get.txt“
DNameput = „C:\test\put.txt“
dann kannste, wenn du willst, mit VB mitmischen :smile:

Gruß
Reinhard

Soooo viele Hausaufgaben…

M.

P.S.: Kannst Du russisch?

Njet :smile: Gruß o.w.T.

owT