Mehrere angaben in einer TXT

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Mehrere angaben in einer TXT

Beitrag 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
-.-"
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

???

Beitrag 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:
-.-"
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag 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
Constant not found: #vk_shit
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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$
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Cool

Beitrag 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
-.-"
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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.
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Es geht

Beitrag 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
-.-"
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Repeat Until vs. While Wend

Beitrag 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
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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)
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Antworten