BPS #25: Lesbar Laden - Auswertung
Übersicht

![]() |
XeresModeratorBetreff: BPS #25: Lesbar Laden - Auswertung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das war die Aufgabe
Postet hier eure Ergebnisse, Codes, Gedanken. Lernt von den anderen, seht euch deren Quelltext an und versucht euren eigenen zu verbessern. Diskussion Postet zu euren Codes stets eine kurze Erklärung mit euren Gedanken in denen ihr simpel gesagt die Frage "Wieso habe ich XY auf diese Art gelöst?" beantwortet. Beiträge, die nur den Code enthalten werden wir aus dem Thread entfernen. Nächste Aufgabe In einer Woche wird die Musterlösung nach editiert und in 2 die nächste Aufgabe eingestellt. Viel Spaß & viel Erfolg! Musterlösung: BlitzBasic: ;* Variablen mit Standardwerten: |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
- Zuletzt bearbeitet von Xeres am So, Dez 23, 2012 12:45, insgesamt 2-mal bearbeitet
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lernt vom Profi! *Hust*
Code: ;Betreff: BPS #25: Lesbar Laden - Sep 30, 2012
;SpionAtom ;Sämtliche Daten werden in die BlitzArrays strings und ints gelesen ;je nachdem ob es sich um Zeichenketten (Strings) oder Ganzzahlen (Integers) ;handelt. Global strings$[10], ints[10] ;Für die Lesbarkeit bekommen die einzelnen Indizes individuelle Bezeichnungen Const USERNAME = 0 Const GRAPHICS_WIDTH = 0, GRAPHICS_HEIGHT = 1, VOLUME = 2 ;Es folgt die übliche Routine um eine Datei zeilenweise auszulesen: ; - Dateistream öffnen im Lese-Modus -> ReadFile ; - Eine Schleife, die solange Zeilen einer Datei ausliest, bis das Dateiende ; erreicht wurde -> While Not Eof(datei) ; - für jede eingelesene Zeile rufe eine Function auf, die die ; Werte in die BlitzArrays schreibt -> liesWertEin() Local dateiname$ = "bps25.txt" Local datei = ReadFile(dateiname) Local zeile$ While Not Eof(datei) zeile = ReadLine(datei) liesWertEin(zeile) Wend ;Ausgabe der eingelesenen Daten Print "UserName: " + Chr(34) + strings[USERNAME] + Chr(34) Print "Auflösung: " + ints[GRAPHICS_WIDTH] + " x " + ints[GRAPHICS_HEIGHT] Print "Volume: " + ints[VOLUME] WaitKey End ;Prüft, ob ein Text mit einer bestimmten Zeichenfolge beginnt ;und gibt dementsprechend true oder false zurück. Function beginntMit(txt$, beginn$) Local laenge = Len(beginn) Return Left(txt, laenge) = beginn End Function ;Interpretiert eine Zeile, und weist den BlitzArrays (strings, ints) ;entsprechende Werte zu Function liesWertEin(zeile$) ;Alle Zeilen, die eine Zuweisung beinhalten, beinhalten auch ein ;Gleichheitszeichen. Anhand der Position des Gleichheitszeichen lässt ;sich der Teil hinter dem Gleichheitszeichen ermitteln. Die Position ;des Gleichheitszeichen lässt sich mit Instr() ermitteln, die Teil- ;Zeichenkette dahinter erhält man mit Mid() Local werte$, gleichheitszeichen gleichheitszeichen = Instr(zeile, "=") If gleichheitszeichen Then werte = Mid(zeile, gleichheitszeichen + 1) ;Hier verzweigt das Programm je nach Zeilenbeginn in einen anderen Block, ;da die Werte unterschiedlich ermittelt werden müssen. ;Um den Text von UserName zu ermitteln, benötigt man die Positionen der ;umschließenden Anführungszeichen und kann so wieder mit Mid den eigentlichen ;Text ermitteln. If beginntMit(zeile, "UserName") Then anfang = Instr(werte, Chr(34)) + 1 ende = Instr(werte, Chr(34), anfang) strings[USERNAME] = Mid(werte, anfang, ende - anfang) ;Um die beiden Werte der Auflösung zu erhalten, benötigt man die Position ;des Kommas, der diese beiden Werte trennt. Else If beginntMit(zeile, "Graphics") Then komma = Instr(werte, ",") ints[GRAPHICS_WIDTH] = Left(werte, komma - 1) ints[GRAPHICS_HEIGHT] = Mid(werte, komma + 1) ;Um den Wert des Volumens zu erhalten wird keine weitere Arbeit benötigt, es ;ist identisch mit dem schon ermittelten Wert hinter dem Gleichheitszeichen. Else If beginntMit(zeile, "Volume") Then ints[VOLUME] = werte End If End Function |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
jaja du Profi ![]() ich hätte es mit BlitzBasic: Select Casein der LiesWertEin gemacht, aber sonst elegant ^^ |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group