Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'fragenbeispiel:
- 'Do you even lift?;Ja;Nein;Vielleicht;Maybe;0
- 'Was ist die wichtigste Zahl?;0815;4711;42;7;2
- DIM wahl AS INTEGER, A AS Integer, B AS INTEGER, SUMME AS INTEGER, QUESTIONS AS STRING
- Declare Function StringSplit( _
- Liste As String, _ 'Liste enthält den String mit den Trennern
- Trenner As String, _ ' Trenner ist ein String mit den Trennzeichen
- SplitArray() As String, _ 'in diesem Array werden die Teilstrings zurückgegeben
- LeerZeilen As Byte=1 _ 'Leerzeilenfilter True=behalten, False=nicht übernehmen
- ) As Integer 'Rückgabewert ist die Anzahl der Zeilen-1
- cls
- SchleifenAusgang:
- 'Input "Was möchten Sie tun?"'
- wahl = 1
- WHILE ( wahl <> 0 )
- Print
- Print
- Print "Fragemodus"
- Color 6
- Print "1) Beantworten"
- print "2) Erstellen"
- print "0) Ende"
- print
- print
- INPUT "Deine Entscheidung (1, 2, 0): ", wahl 'Entscheidung abfragen
- if wahl = 1 then 'erste Möglichkeit'
- PRINT "Answer"
- 'ARRAY anlegen
- REDIM QUESTIONS(1) AS STRING
- 'Datei auslesen & verarbeiten
- DIM fileHandle AS INTEGER
- DIM lineBuffer AS STRING
- DIM lineCount AS INTEGER
- fileHandle = FREEFILE
- OPEN "C:\fragen.txt" FOR INPUT AS #fileHandle
- lineCount = -1
- DO
- DIM SingleQuestion(6) AS STRING
- lineCount = lineCount +1
- REDIM PRESERVE QUESTIONS(lineCount)
- ' LESE AKTUELLE ZEILE -> Speicher in lineBuffer
- LINE INPUT #fileHandle, lineBuffer
- QUESTIONS(lineCount) = lineBuffer
- LOOP UNTIL EOF(fileHandle)
- CLOSE #fileHandle
- 'Question-Array:
- '0 = Frage
- '1,2,3,4 = AntwortmöglichkeitenCount) = SingleQuestion
- '5 = Antwortindex (richtig)
- DIM upperlimit AS INTEGER
- upperlimit = 5
- IF ( upperlimit > UBOUND(QUESTIONS) ) THEN
- upperlimit = UBOUND(QUESTIONS)
- END IF
- FOR index AS INTEGER = 0 TO upperlimit'Anzahl der Fragen
- DIM SplitLine() AS STRING
- DIM antwort AS String
- DIM randomIndex AS INTEGER
- DIM randomQuestion AS STRING
- randomIndex = INT( RND * (UBOUND(QUESTIONS)+1))
- randomQuestion = Questions(randomIndex)
- StringSplit(randomQuestion, ";", SplitLine(), 0)
- Print (SplitLine(0))
- Print ("Antwort (0): " + SplitLine(1))
- Print ("Antwort (1): " + SplitLine(2))
- Print ("Antwort (2): " + SplitLine(3))
- Print ("Antwort (3): " + SplitLine(4))
- INPUT "Deine Antwort(0, 1, 2, 3): ", antwort 'Entscheidung abfragen
- IF ( antwort = SplitLine(5)) THEN
- Print ( "Antwort richtig!")
- ELSE
- Print ( "Antwort falsch!")
- END IF
- NEXT
- ELSE
- IF wahl = 2 THEN
- DIM newQuestion AS STRING
- DIM answerA AS STRING
- DIM answerB AS STRING
- DIM answerC AS STRING
- DIM answerD AS STRING
- DIM answerIndex AS STRING
- PRINT "CREATE"
- Input "Neue Frage eingeben:", newQuestion
- Input "Antwortmöglichkeit A:", answerA
- Input "Antwortmöglichkeit B:", answerB
- Input "Antwortmöglichkeit C:", answerC
- Input "Antwortmöglichkeit D:", answerD
- Input "Welches ist die richtige Antwort? (0-3)", answerIndex
- REDIM QUESTIONS(1) AS STRING
- 'Datei auslesen & verarbeiten
- DIM fileHandle AS INTEGER
- DIM lineBuffer AS STRING
- DIM lineCount AS INTEGER
- fileHandle = FREEFILE
- OPEN "C:\fragen.txt" FOR INPUT AS #fileHandle
- lineCount = -1
- DO
- DIM SingleQuestion(6) AS STRING
- lineCount = lineCount +1
- REDIM PRESERVE QUESTIONS(lineCount)
- ' LESE AKTUELLE ZEILE -> Speicher in lineBuffer
- LINE INPUT #fileHandle, lineBuffer
- QUESTIONS(lineCount) = lineBuffer
- LOOP UNTIL EOF(fileHandle)
- CLOSE #fileHandle
- REDIM PRESERVE QUESTIONS(lineCount+1)
- Questions(lineCount+1) = (newQuestion + ";" + answerA + ";" + answerB + ";" + answerC + ";" + answerD + ";" + answerIndex)
- OPEN "C:\fragen.txt" FOR OUTPUT AS #fileHandle
- FOR i AS INTEGER = 0 TO (lineCount+1)
- PRINT #fileHandle,Questions(i)
- NEXT
- CLOSE #fileHandle
- END IF
- END IF
- WEND
- 'ENTNOMMEN AUS http://www.freebasic-portal.de/code-beispiele/string-funktionen/stringsplit-83.html
- Function StringSplit( _
- Liste As String, _
- Trenner As String, _
- SplitArray() As String, _
- LeerZeilen As Byte=1 _
- ) As Integer
- Var Vorige=1, Gefunden=0, LenTren=Len(Trenner), Index=0, s="" ' der Var-Befehl funktioniert^^
- If Len(Liste)+LenTren=0 Then Return -1 'beide Längen=0? nix zu tun, fertig..
- Erase SplitArray 'alte Ergebnisse löschen
- Do While Instr(Vorige, Liste, Trenner) 'hier prüfen, kann ja sein, daß es Trenner nicht gibt
- Gefunden=Instr(Vorige, Liste, Trenner)
- ReDim Preserve SplitArray(Index) 'Preserve funktioniert mit 1-dimensionalen Arrays
- s=Mid(Liste, Vorige, Gefunden-Vorige) 'Teilstring von Vorige bis Gefunden..
- If s<>"" Then 'Keine Leerzeile?
- SplitArray(Index)=s 'Alles klar, übernehmen..
- Index+=1
- Else 'Ooops, Leerstring, weiterprüfen..
- If LeerZeilen Then 'Wenn False, werden leere Zeilen ausgefiltert
- SplitArray(Index)=s 'Also gut, Leerzeile übernehmen..
- Index+=1
- End If
- End If
- Vorige=Gefunden+LenTren 'Vorige auf nächste Position
- Loop
- ReDim Preserve SplitArray(Index) 'Wenigstens Platz für EIN Element machen
- If Index Then 'Stringrest in SplitArray speichern..
- SplitArray(Index)=Mid(Liste, Vorige, Gefunden-Vorige)
- Else 'nein, Trenner ist nicht in Liste..
- SplitArray(Index)=Liste ' Liste in SplitArray speichern(Vorsicht:Speicherplatz!!)
- EndIf
- Return Index 'UBound wäre hier ein unnötiger Funktionsaufruf..
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement