zweiten, dritten usw. Wert auslesen aus Datei
Übersicht

RaptorBetreff: zweiten, dritten usw. Wert auslesen aus Datei |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi, hab ein Problem, und zwar habe ich in einer Datei in jeder zeile verschiedene Werte stehen, die jeweils mit verschiedenen Zeichen von einander getrennt sind. Die Datei sieht so aus:
_________________________________________ Name#Vorname/Strasse\Hausnummer+PLZ*Ort __________________________________________ Mit folgendem Code lese ich den ersten Wert aus: wert1$ = Left(Name,Instr(Name,"#")) ;funktioniert, Name# Mit dem nächsten Code lese ich den letzten Wert aus: wert2$ = Right(wert,Len(wert) - Instr(wert,"*")) ;funktioniert, Ort Soweit so gut, aber wie lese ich jetzt den zweiten Wert aus, sodas er mir nur den zweiten Wert also zwischen # und / ausgibt ? Das gleiche dann für den Dritten,vierten und fünften Wert ? Hat vielleicht jemand nen Code ? Ich dachte da schon an Mid, aber hier muss er ja die Startposition wissen ? Grüsse |
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Probiers mit Mid$() --> Onlinehilfe!!
mit Instr() die Anfangsposition herausfinden, ebenfalls mit Instr() die EndPosition herausfinden und mit Mid$(Anfangsposition,Endposition-Anfangsposition) in eine Variable speichern - fertig ![]() |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schneid doch erst das raus mit left
Name#Vorname und dann gehste mit right dran und holst dir den Vornamen ungefähr so...Code: [AUSKLAPPEN] Dummy$ =left(Wert,instr(Wert,"/")-1)
Wert2$ =right(Dummy,len(dummy) - Instr(Dummy,"#")) mit mid gehts natürlich auch! |
||
[BB2D | BB3D | BB+]
|
Raptor |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke so funktioniert es. Jetzt gibt er mir z.b. nur PLZ aus, gibt aber noch ne Fehlermeldung und zwar "Parameter must be Positiv" ??? | ||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja der kann bei Mid$() und Instr$() auftreten. Die Startposition mus auf jeden Fall positiv sein und bei 1 Anfangen. 1 steht also fürs erste Zeichen im String, nicht 0. Daher gibt es auch probleme wenn die Startposition kleiner ist.
Die länge kann auch den Wert -1 annehmen. Dann wird alles bis zum Ende kopiert ![]() Guck noch mal in deinen Berechnungen ob du nicht irgendwann einen Startwert unter 0 kriegst... |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm, belese dich mal über Datei Header, Speichermethoden, Die Möglichkeiten von BB, Integer zu speichern.
damit bekommst du deine Dateien Sauberer hin. |
||
between angels and insects |
Raptor |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, habe das Problem mit Replace gelöst.
Code: Dummy$ =Left(Wert,Instr(Wert,"/"));-1) Wert2$ =Right(Dummy,Len(dummy) - Instr(Dummy,"#")) wert2V$=Replace(wert2$,"/","") ;/ versteckt If wert1$>0 Then AddGadgetItem Titellistbox, Wert2V$ ----------------------------------------------------------------------------- Jetzt habe ich noch eine Frage, und zwar sage ich jetzt: Code: wert1$ =Left(wert,Instr(wert,"Name#")) Dummy$ =Left(Wert,Instr(Wert,"/"));-1) ; Vorname ausgeben Wert2$ =Right(Dummy,Len(dummy) - Instr(Dummy,"#")) wert2V$=Replace(wert2$,"/","") ;/ versteckt If wert1$>0 Then AddGadgetItem Titellistbox, Wert2V$ Select WaitEvent() Case $401 If EventSource()=Titellistbox Then selected=SelectedGadgetItem(listbox) ClearGadgetItems infolistbox ;-Box leeren Dummy$ =Left(Wert,Instr(Wert,"\"));-1) Wert3$ =Right(Dummy,Len(dummy) - Instr(Dummy,"/")) wert3V$=Replace(wert3$,"\","") ;\ versteckt If selected>=0 Then AddGadgetItem infolistbox,"Laufzeit :"+Wert3V$ Dummy$ =Left(Wert,Instr(Wert,"+"));-1) Wert4$ =Right(Dummy,Len(dummy) - Instr(Dummy,"\")) wert4V$=Replace(wert4$,"+","") ;+ versteckt If selected>=0 Then AddGadgetItem infolistbox,"FSK :"+Wert4V$ wert5$ = Right(wert,Len(wert) - Instr(wert,"+")) If selected>=0 Then AddGadgetItem infolistbox,"Schauspieler :"+Wert5$ EndIf End Select ;Forever Wend CloseFile daten --------------------------------------------------------------------------- Was ich hiermit erreichen will, er soll wenn ich in der Listbox den Namen anlicke, die er mir ja ausgibt in der Listbox, alle anderen Daten in einer zweiten Listbox ausgeben. Problem: Bsp die Datei sieht so aus: ------------------------------------------------- Müller#Franz/Teststrasse\23*1234+Testhausen Meier#Simon/Strassexyz\45+4567+Erde Müller#Alfred/Dorfstrasse\67+7890+Venus ---------------------------------------------------- mit diesem Code sage ich ihm das er nur die ausgeben soll wo vorne Müller steht: wert1$ =Left(wert,Instr(wert,"Name#")) Dummy$ =Left(Wert,Instr(Wert,"/"));-1) ; Vorname ausgeben Wert2$ =Right(Dummy,Len(dummy) - Instr(Dummy,"#")) wert2V$=Replace(wert2$,"/","") ;/ versteckt If wert1$>0 Then AddGadgetItem Titellistbox, Wert2V$ funktioniert auch, wenn ich aber jetzt diesen Namen anklicke gibt er mir zwar die Daten aus (Franz/Teststrasse\23*1234+Testhausen), klicke ich ihn nochmal an gibt er mit die nächsten daten aus(Alfred/Dorfstrasse\67+7890+Venus). Ich hoffe das Problem habe ich so geschildert das jemand was damit anfangen kann, vielleicht nen Code ? Das ich wenn ich einen Eintrag in LB1 anklicke auch nur die Daten von diesem bekomme und nicht von den anderen. grüsse |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur mal ne blöde Frage ,
haste die Datei jetzt selber erzeugt oder nicht ? Weil Name#Vorname/Strasse\Hausnummer+PLZ*Ort denkt sich kein normaler Mensch aus , also das mit den verschiedenen Trennzeichen meine ich !? ![]() |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wieso diese unschöne Zeilenlösung mit den Einträgen?
warum machst du es nicht ganz einfach mit einem TYPE ? Jeder Film wäre ein Type-Objekt und hätte solche Felder wie: Titel Länge Land Schauspieler Genre etc dann ultra einfach mit write (read) String Feld für Feld schreiben (lesen). Wenn du dann alle Action-Filme auflisten lassen willst, gehst du die ganze Type-Objekte durch und wenn Genre = Action ist dann zeigst du den Titel dazu an. |
||
Raptor |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, daran hatte ich auch schon gedacht. Habe es auch mal versucht, aber irgendwie funtzt das nicht so recht. Ich müsste ihm also sagen das wenn ich einen neuen Eintrag speichern will, er erst mal ein neuen Type mit den Feldern erstellen soll. Aber Wie ?Wenn das möglich ist, kann ich ihm ja sagen, das Type= Titel ist, Field=Genre...usw.
Vielleicht hat ja jemand nen Code ? |
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Type Eintrag
Field Titel Field Land Field Schauspieler Field Genre End Type Function ErstelleEintrag(Titel,Land,Schauspieler,Genre) Local e.Eintrag e = New Eintrag e\Titel e\Land e\Schauspieler e\Genre End Function ... ... .... so in etwa? |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Setzt aber ein Global e.Eintrag vorraus ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
bruZard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, wenn man dem Funktionsnamen den Typenamen hinten anstellt (getrennt durch einen Punkt) ist der Funktion das Type bekannt.
Beispiel: Code: [AUSKLAPPEN] Type tVector Field x#,y#,z# End Type Function AddVector.tVector(x#=0.0 , y#=0.0 , z#=0.0) vec.tVector=New tVector vec\x#=x# vec\y#=y# vec\z#=z# End Function Function ShowVector.tVector() For vec.tVector=Each tVector Debuglog vec\x#+" , "+vec\y#+" , "+vec\z# Next End Function So funktioniert es auch ohne globale Type Instanzen. |
||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Cool! Man lernt nie aus ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group