 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 19.07.2011, 19:44 Titel: Auslesen bis zu einem Zeichen(Instr, Mid) |
|
|
Hey
Ich habe eine Datei geöffnet, in dem verschiedene Sachen gespeichert sind. Die Datei sieht so aus:
Code: | Person1 wohnland, wohnort
Person2 wohnland, wohnort
... |
Nun möchte ich natürlich in meinem Programm "wohnland" und "wohnort" auslesen. Ich muss also erstmal bis zum Komma auslesen um "wohnland" herauszubekommen. Aber wie? Habe das so versucht:
Code: | Var ff=Freefile
Dim Shared As String lin
Open "test.txt" For Input As #ff
Do Until Eof(ff)
Line Input #ff,lin
If Instr(Ucase(lin),person1.title) Then
person1.wohnland=Mid(lin,5)
person1.wohnort=MID(lin,6+Len(person1.wohnland))
Print person1.title+" lebt in "+person1.wohnland+" , "+person1.wohnort
End If
Sleep 1
Loop
Close #ff |
Funktioniert leider nicht.  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 19.07.2011, 19:57 Titel: |
|
|
Was ist person1.title? Wenn du das Komma suchst, hätte ich INSTR(lin, ",") verwendet.
Code: | komma = INSTR(lin, ",")
ersterTeil = left(lin, komma-1)
zweiterTeil = mid(lin, komma+1) |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 19.07.2011, 20:14 Titel: |
|
|
Hallo,
man könnte das z. B. ungefähr so machen:
Beispieldaten personen.txt
Code: | BaerbelBasic DE, Musterhausen
GiselaGit CH, Reposi
PeterProbe DE, Trollingen
hallo welt
test,,,,
Fehler Zeile Hier
OskarOverflow DE, Buggingen
FridaFloat AT, Gleitkombach |
Code: | 'Achtung: Quick'n'dirty Code!
'Annahme: Personenbezeichnungen enthalten keine Leerzeichen.
'Ansonsten muesste man es ein bisschen anders machen.
Dim As Integer f = FreeFile, ErstesLeerzeichen, Komma
Dim As String Zeile, Gesucht, PersonenName, Land, Wohnort
Input "Wer wird gesucht? (z.B. PeterProbe) ", Gesucht
Open "personen.txt" For Input As #f
Do Until Eof(f)
Line Input #f, Zeile
If Zeile = "" Then Continue Do 'Leerzeile. Also direkt zur naechsten Zeile!
ErstesLeerzeichen = INSTR(Zeile, " ")
If ErstesLeerzeichen < 1 Then Continue Do 'Fehler. Also auf zur naechsten Zeile!
PersonenName = LEFT(Zeile, ErstesLeerzeichen-1)
Komma = INSTR(ErstesLeerzeichen, Zeile, ",")
If Komma < 1 Then Continue Do 'Fehler. Also auf zur naechsten Zeile!
Land = TRIM(MID(Zeile, ErstesLeerzeichen + 1, Komma - ErstesLeerzeichen - 1))
Wohnort = TRIM(MID(Zeile, Komma + 1))
If PersonenName = Gesucht Then Color 12
Print chr(34); PersonenName; chr(34); " "; chr(34);
Print Land; chr(34); " "; chr(34); Wohnort; chr(34)
If PersonenName = Gesucht Then Color 7
Loop
Close #f
sleep
End |
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 19.07.2011, 20:53 Titel: |
|
|
Aww, zu nett. Danke euch beiden.  |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 20.07.2011, 18:51 Titel: |
|
|
wenn das so weitergeht, solltest du dir wirklich irgendeine reg-exp-library holen. reg-exps schauen zwar gruselig aus, machen dir aber das leben definitiv einfacher
da könntest du zum beispiel mit "\([^ ]*\) \([^,]\), *\(.*\)" suchen und dir \1, \2 und \3 (wenn einer, der wirklich was von regexps was versteht das sieht: ich kenne die teile nur von sed. kA ob sed seinen eigenen "slang" hat) holen. ich weiß, es sieht _abartig_ aus, tippt sich aber relativ fix, und ist einfacher als mit instr zu hantieren (ich kenne das noch: "hmm, muss bei dem MID(... jetzt bei der länge ein -1, ein +1 oder garnix hin..?") _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 20.07.2011, 19:09 Titel: |
|
|
mag vieleicht einfacher sein, aber meienr meinung nach doch viel zu overblowt für eine einfache instr ersetzung mit etwas chekup.
reg-exp macht auf mich immer den eindruck einer A-Bombe die eien mücke killen soll.
Viel zu leistungsstark für kleine aufgaben.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|