Seite 1 von 2

Mehrere angaben in einer TXT

Verfasst: 27.04.2005 12:49
von Green Snake
hallo

wie kan ich mehrere zeichen bzw strings und/oder zahlen aus der gleichen txt auslesen?

also zb:

Code: Alles auswählen

[1] "Hallo"
[2] "Du"
[3] "Wie"
[4] "Gehts"
[5] "Dir?"
jetzt will/möchte ich, das die variable A = dem string der linie 1 ist,
B = der string der linie 2
C = linie 3
usw usw

wie kann ich das machen?
habe mal ein programm von diesem vorum angeschaut. (bei feedback - anwendungen) war das glaube ich, dort hatte der programierer auch so etwas angewendet.

ps. die zahlen in den [] sind nicht nötig, jedoch würde es durch sie übersichtlicher, gibt es auch eine möglichkeit, das pb nur den text in den "" anschaut?

danke im voraus

Snake

Verfasst: 27.04.2005 13:25
von Laurin
Mit ReadString() liest man zeilenweise eine Datei aus. Das, was gelesen wird, kannst du in eine LinkedList packen (oder einem Array, wenn du die genaue Zeilenzahl weißt).

Code: Alles auswählen

NewList TxTInhalt.s()
IF OpenFile(#Datei, Datei$)
  Repeat
    AddElement(TxtInhalt())
    TxtInhalt() = ReadString()
  Until Eof(#Datei)
  CloseFile(#Datei)
Endif
Keine Garantie, dass der Code so läuft, wie er hier steht.

Um innerhalb eines Strings Stellen zu finden, die mit bestimmten Zeichen markiert sind (zB " [ ] ( ) etc.) schau mal in der Hilfe nach FindString().

Greetz Laurin

???

Verfasst: 27.04.2005 13:37
von Green Snake
Hallo

könntest du/Ihr das mir genauer erläutern?

vielleicht an einem beispiel mit messagerequestern?
also der
1 requester = line 1
2 requester = line 2
3 requester = line 3

usw.

währe wirklich nett.
habs eben mit dateien bzw speicher und öffnen noch nicht so am hut :allright:

Verfasst: 27.04.2005 13:56
von MLK
#File_ID nur als verdeutlichung. kannst auch immer 0 nehmen, ist bei files nicht so wild. der code debugt jede zeile die in der datei steht.

Code: Alles auswählen

#FILE_ID = 0

Files$ = "?"
If ReadFile(#FILE_ID, Files$) = #False : Debug "kann die Datei " + Files$ + " nicht öffnen!" : Else
  Repeat
    Debug ReadString()
  Until Eof(#FILE_ID)
EndIf

Verfasst: 27.04.2005 14:32
von zigapeda
Das wo du als erstes angesprochen hast benutze ich immer weil es ist unabhänig davon ob in dem string ein zeilenumbruch ist oder nicht dabei würde die textdatei so aussehen:

Code: Alles auswählen

[1]Hallo[/1][2]Du[/2][3]Wie[/3][4]Gehts[/4][5]Dir?[/5]
ich zeig dir mal ein beispiel aber nicht mit einer textdatei sondern mit einer variablen:

Code: Alles auswählen

zeile$ = "[1]Hallo[/1][2]Du[/2][3]Wie[/3][4]Gehts[/4][5]Dir?[/5]"
For a = 1 To 5
  pos1 = FindString(zeile$,"[" + Str(a) + "]",0)+ 3
  pos2 = FindString(zeile$,"[/" + Str(a) + "]",0)
  lange = pos2 - pos1
  Debug Mid(zeile$,pos1,lange)
Next a
Ist zwar länger als die anderen codes aber dafür kann man auslesen was man will z.B. kann man eine prozedur schreiben die schaut was zwischen [5] und [/5] steht.
Was jetzt noch zur textdatei fehlt ist das öffnen der textdatei und das auslesen des textes und speichern in die variable zeile$

Cool

Verfasst: 27.04.2005 15:31
von Green Snake
hallo

habe den code getestet, und finde ihn cool
aber er bringt noch ein paar fragen mit.
das mit dem öffnen der datei habe ich geschaft.
das klapp auch reibungslos.
aber jetzt zu den fragen.

1. es geht nur, wen die [] auf der gleichen linie sind, also so

Code: Alles auswählen

[1]Hallo[/1][2]Du[/2][3]Wie[/3][4]Gehts[/4][5]Dir?[/5]
geht ds aber auch so?

Code: Alles auswählen

[1]Hallo[/1]
[2]Du[/2]
[3]Wie[/3]
[4]Gehts[/4]
[5]Dir?[/5]
2. frage

wie kan ich die einzelnen werte auf verschiedene variabeln verteilen?
habe es oben schon angesprochen:

Code: Alles auswählen

A = [1]
B = [2]

usw.
geht das auch?
________________________________________________________

danke dir und euch andern, für diese tollen codes

Verfasst: 27.04.2005 15:44
von zigapeda
also wenn du das:

Code: Alles auswählen

OpenFile(0,"test.txt")
  Repeat
    zeile$ = ReadString()
  Until eof=0
CloseFile(0)
vor den ersten code schreibst und in dem ordner wo die datei gespeichert ist eine textdatei mit dem inhalt:

Code: Alles auswählen

[1]Hallo[/1]
[2]Du[/2]
[3]Wie[/3]
[4]Gehts[/4]
[5]Dir?[/5]
und dem namen test.txt ist funktioniert es auch. Das mit werten einer variable zuweißen funktioniert glaub ich nicht weil bei meinem beispiel wird der wert zwischen [zahl] und [/zahl] ausgelesen, ähnlich wie html.

Es geht

Verfasst: 27.04.2005 15:54
von Green Snake
hallo

danke, es funzt.
aber wie kan man dan den code sinvoll verwenden, wen man nicht jede libie einer variable zuteilen kann? :(
klar kan man für jede variable eine datei anlegen, aber in meine fall, währen das dan etwa um die 100 für eine sprache.
(will eben ein multi sprach programm machen.)

wie würdest du oder ihr das machen?

ps, danke für deine hilfe zigapeda

Repeat Until vs. While Wend

Verfasst: 27.04.2005 15:55
von Kiffi
Hallo,

ich sehe hier des öfteren Code zum Auslesen von Dateien in der Art und
Weise:

Code: Alles auswählen

OpenFile(0,"test.txt")
  Repeat
    zeile$ = ReadString()
  Until eof=0
CloseFile(0)
Meines Erachtens ist es sauberer mit While-Wend zu arbeiten. Denn wenn
die auszulesende Datei leer ist, soll die Schleife erst gar nicht betreten
werden.

Code: Alles auswählen

OpenFile(0,"test.txt")
 While Eof(0) = 0
   zeile$ = ReadString()
 Wend
CloseFile(0)
Grüße ... Kiffi

Verfasst: 27.04.2005 16:17
von zigapeda
@kiffi danke kenn mich mit den schleifen noch nicht so gut aus

@greensnake du kannst ja für jedes wort das du brauchst extra ein feld anlegen (feld = [bla]feld[/bla] mir ist nix besseres eingefallen) also z.B. einen button auf dem abbrechen steht

Code: Alles auswählen

[abbr,deu]Abbrechen[/abbr,deu]
oder für ganze texte

Code: Alles auswählen

[begr,deu]Herzlich wilkommen bei ...[/begr,deu]
und dann hald für die andere sprache z.B. englisch

Code: Alles auswählen

[abbr,deu]Cancel[/abbr,deu]
[begr,deu]Cordially welcome by...[/begr,deu]
(sollte die gramatik falsch sein oder ein englisches wort falsch geschrieben sein etc. ich bin kein englisch übersetzer von beruf also darf ich das)