Übersetzung Werte im File

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Stefen

Betreff: Übersetzung Werte im File

BeitragDo, Feb 14, 2008 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,
ich habe mal ein Frage !

Ich habe ein Spiel was nach jeder Spielrunde eine Spiel Historie als Textfile auf der Platte speichert.
Einige Leute kennen solche Histories vielleicht vom Online Pokern, es hat mit diesem Spiel aber nichts zu tun.
Dort sind die Daten der letzten Spielrunde wie Spieltischdaten, Spielernamen, Ergebnisse usw. in Englisch gespeichert.

Nun möchte ich gerne ein Programm erstellen, was die Files automatisch nach jeder Runde einliest, die Begriffe ins Deutsche umwandelt und wieder abspeichert.
In jedem File sind etwa 50 standardisierte Begriffe enthalten, diese möchte ich in die jeweilige Sprache für ein weiteres Programm umwandeln.


BEISPIEL : Original
Code: [AUSKLAPPEN]

Game ID #342434
Level : 3
Time : 12.12.08 - 12.12
..
Player 1 : MisterX
..
Seat 1 : MisterX
...
Points Player 1 : 4000

USW...



BEISPIEL : Neu
Code: [AUSKLAPPEN]

Spiel Nr. :  #342434
Spielrunde : 3
Zeit : 12.12.08 - 12.12
..
Spieler 1 : MisterX
..
Sitzplatz 1 : MisterX
...
Punkte Spieler 1 : 4000


Wichtig ist auch das die Formatierung der Daten nicht verloren gehen, da das File wieder von einem anderen Programm eingelesen und verarbeitet wird.
Sollte man das ganze File in ein Array einlesen und dann eine komplette Vergleichssuche machen, oder lieber Zeile für Zeile?
Auch das automatische auslesen und übersetzen nach jeder Runde sollte sehr schnell gehen.
Sollte man das mit einem reinen Timer machen, oder ermitteln ob ein neues File im Verzeichnis vorhanden ist.

Vielleicht könnte mir jemand einen Denkanstoss geben, wie man an die Sache am besten rangehen könnte !
Eventuell gibt es auch schon etwas ähnliches in dieser Art.

Danke für eure zahlreichen Tips
 

Tpro

BeitragSa, Feb 16, 2008 0:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst sie ja einfach hintereinander mit Readline einlesen und dan die Schlüsselwörter ersetzen. (Der Befehl müsste replace oder so heißen!)
Der Optimist: "Das Glas ist halb voll"
Der Pessimist: "Das Glas ist halb leer"
Der Ingenieur: "Das Glas ist doppelt so groß wie es sein müsste"
 

Stefen

BeitragSa, Feb 16, 2008 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, ich hatte mir auch schon sowas in die Richtung gedacht !

Code: [AUSKLAPPEN]

englisch$="Seat"
deutsch$="Platz"

Datei$="C:\text.txt"
DateiID = ReadFile(Datei$)
While Not Eof(DateiID)
content$=ReadLine$(DateiID)
Text$=Replace$(content$, englisch$, deutsch$)
Print Text$
Wend


Nur wie mache ich es jetzt aber mit mehreren Worten in einem File die ich übersetzen möchte.
Soll ich das mit Data, Dim oder die Übersetzung besser in Types ablegen.

Vielleicht kann mir jemand mit einem kleinen Quellcode auf die Sprünge helfen.

Danke für eure Mühe.

The_Nici

BeitragSa, Feb 16, 2008 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Schreibs in ein neues File?
 

Stefen

BeitragSa, Feb 16, 2008 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Später möchte ich das Ergebnis auch in einer Datei speichern, es geht mir aber jetzt darum wie ich die Suche definiere !
Soll ich das mit Dims machen und in eine Schleife durchlaufen lassen, oder wie ?
Im oberen Beispiel kann ich immer nur ein Wort pro Durchlauf übersetzen, wie mache ich das mit dem kompletten File wo auch mehrere betreffende Wörter in einer Zeile stehen. Ich habe da ein bischen Probleme mit der Routine die alle Deutsch/Englischen Wörter enthält.
Aber vielleicht kann mir ja doch noch jemand helden.

Dim deutsch$(10)
Dim englisch$(10)

englisch$(0) = "Game ID"
englisch$(1) = "Level"
englisch$(2) = "Player"

deutsch$(0) = "Spiel Nr"
deutsch$(1) = "Spielrunde"
deutsch$(2) = "Spieler"

Danke für die Hilfe
 

Tpro

BeitragSo, Feb 17, 2008 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
also das aller einfachste ist wenn du alle Zeilen deiner File jewails mit einem Zeilen Ende Zeichen (also eigentlich carriagereturn: in C "\n", ich würd in BB "µ" (altgr + m)nehmen ) dazwischen in einen string reinschreibst.
Und dann alle deine Wörter die du übersetzen möchtest mit hilfe von Replace austauschen.

z.B.

Code: [AUSKLAPPEN]


tex$=""

file=readfile("blblb")

While not eof(file)
    tex$=tex+Readline(file)+"µ"
Wend

Replace(tex, "Game ID","Spiel Nr")
Replace(tex, "Level","Spielrunde")
.
.
.

closefile file




Du müsstest nocheinmal nachschauen welche Parameter du genau an Replace übergeben musst.

Die Zeilen Ende Zeichen wirst du dan brauchen wenn du das ganze entweder auf dem Bildschirm oder in eine Datei zurückgeben willst!
Der Optimist: "Das Glas ist halb voll"
Der Pessimist: "Das Glas ist halb leer"
Der Ingenieur: "Das Glas ist doppelt so groß wie es sein müsste"
 

Stefen

BeitragSo, Feb 17, 2008 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, ich hatte es auch schon so in etwa gelöst !
Ich habe dabei rausgefunden, das es bei sehr grossen Files besser ist direkt die "Replace" Anweisungen untereinander zu schreiben.

Es sieht zwar nicht so schön aus wenn da 100 gleiche Anweisungen stehen, es aber viel schneller ist als wenn ich das in einer Schleife durchlaufen lasse.

Ob ich die Wörter aus einem File hole, werde ich noch ausprobieren.


Code: [AUSKLAPPEN]

Dim englisch$(50), deutsch$(50)

englisch$(0)="Player" deutsch$(0)="Spieler"
englisch$(1)="Game ID" deutsch$(1)="Spiel Nr"
englisch$(2)="Level" deutsch$(2)="Spielrunde"
..
..

Dateischreibe$="C:\2.txt"
Dateilese$="C:\1.txt"

Dateilese = ReadFile(Dateilese$)
Dateischreibe = WriteFile(Dateischreibe$)

While Not Eof(Dateilese)
Content$=ReadLine$(Dateilese)

Content$=Replace$(Content$, englisch$(0), deutsch$(0))
Content$=Replace$(Content$, englisch$(1), deutsch$(1))
Content$=Replace$(Content$, englisch$(2), deutsch$(2))
..
..
..
WriteLine Dateischreibe, Content$
Wend
CloseFile Dateischreibe

Who

BeitragSo, Feb 17, 2008 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Code: [AUSKLAPPEN]
Dim englisch$(50), deutsch$(50)

englisch$(0)="Player" deutsch$(0)="Spieler"
englisch$(1)="Game ID" deutsch$(1)="Spiel Nr"
englisch$(2)="Level" deutsch$(2)="Spielrunde"

Dateischreibe$="C:\2.txt"
Dateilese$="C:\1.txt"

Dateilese = ReadFile(Dateilese$)
Dateischreibe = WriteFile(Dateischreibe$)

While Not Eof(Dateilese)
    Content$=ReadLine$(Dateilese)
    For I = 0 to 50   ; <--- einzige Veränderung in den 3 Zeilen
        Content$=Replace$(Content$, englisch$(I), deutsch$(I))
    Next

    WriteLine Dateischreibe, Content$
Wend
CloseFile Dateischreibe

Alles wunderbar, nur die Tipparbeit musst du dir echt nicht machen Wink

MFG
 

Stefen

BeitragSo, Feb 17, 2008 23:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für Deine Mühe, nur leider funktioniert das so nicht mit der Schleife an der Stelle.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group