Frage wegen Auslesen einer Datei bzw. eines Arrays

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

sheldon

Betreff: Frage wegen Auslesen einer Datei bzw. eines Arrays

BeitragMo, Sep 22, 2008 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich habe einen "Bildschirmschoner" mit BB gebastelt und wie es ja beim Einstellen eines neuen "Bildschirmschoners" unter Windows üblich ist, auch Einstellungen einstellen zu können etc. Also habe ich mit Visual Basic ein Programm geschrieben, welches die Optionen dann in einer Textdatei speichert. Dann lese ich es in BB mit
Code: [AUSKLAPPEN]
Global file = ReadFile("C:\scrsettings.txt")
For i = 1 To 7
   settings$(i) = ReadLine$(file)
Next

aus. Ich musste auf "ReadLine$" zurückgreifen, da mein Visual Basic-Programm anstatt "1" " 1 " schreibt (vor und hinter der 1 noch ein Leerzeichen) und es mit ReadString $und ReadByte nicht ging.
Im Mainloop habe ich dann geschrieben:
Code: [AUSKLAPPEN]
If settings$(1) = "1" then führe_aktion_1_aus
If settings$(2) = "1" then führe_aktion_2_aus

und so weiter.
Das flimmert allerdings...
Jetzt habe ich zwei Fragen.

1. Gibt es intelligentere oder bessere Wege die Optionen zu speichern?
2. Wie kriege ich es hin, dass es nicht mehr flimmert?

Wäre sehr nett, wenn ihr mir helfen könntet.

MfG,
sheldon

Xeres

Moderator

BeitragMo, Sep 22, 2008 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn es flimmert, verwendest du evtl. keine 2 Buffer oder hast cls/Flip an der falschen Stelle oder machst was doll rechenintensives zwischendurch. Die Optionen lädst du nur beim Programmstart einmal ein?
Ansonsten musst du mehr Code posten um das Problem zu lokalisieren...
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
  • Zuletzt bearbeitet von Xeres am Mo, Sep 22, 2008 21:26, insgesamt einmal bearbeitet

Eingeproggt

BeitragMo, Sep 22, 2008 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Das funktioniert mit dem Auslesen überhaupt?
Wenn man " 1 " mit ReadLine ausliest und als String behandelt, wird die Abfrage auf "1" wohl False ergeben?
Eine einfache Lösung wäre Trim.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Xeres

Moderator

BeitragMo, Sep 22, 2008 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Trim scheint bereits bei 'ner Konvertierung aufgerufen zu werden, jedenfalls kann man einen String der keine Buchstaben/Sonderzeichen vor der Zahl enthält, problemlos zu einer machen...
Code: [AUSKLAPPEN]
Local s$ = "  167.66  ABC"
Local z# = s
Print s
Print z
WaitKey()

Eingebautes Feature von BB. (Trotzdem würde z# = float(s) bzw. int sauberer aussehen)
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

sheldon

BeitragMo, Sep 22, 2008 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Und ich habe wirklich Double Buffering vergessen...
Vergesslich, wie ich bin. Wink

Edit:
Quatsch, doch Double Buffering drin Embarassed
Naja also mein Code macht eigentlich nur das oben beschriebene, das ganze in einem Timer, wenn es 1 entspricht, mache Aktion 1, bla, bla, bla. (Also um genau zu sein, ich zeichne Rects, Ovale, Linien, Bilder) und dann ein "Flip" . Aber wo kommt dann das CLS hin? Die Rects (etc.) werden ja dann immer gelöscht.

Edit2:
Mit FrontBuffer allein klappts einwandfrei...

xaerox

BeitragDi, Sep 23, 2008 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
also wie den aufbau normal benutzen:

Code: [AUSKLAPPEN]

Graphics ?, ?, ?, ?
SetBuffer Backbuffer()
;alle variablen und functionen und etc. aufschreiben

;dann alles was im hauptteil läuft in der while wend-schleife:

While
;machewasmachwas

Flip
Cls   ;<--entweder ganz am ende in der while/wendschleife oder ganz am anfang
Wend

Ich hoffe du hast was gelernt

mfg
Biker sind wahre Helden.
Auch Musiker.

sheldon

BeitragDi, Sep 23, 2008 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja genau das, was ich gemeint habe, die rects werden "gelöscht".

Ich glaube man müsste CreateImage benutzen und in der Schleife den Imagebuffer einsetzen... Weiß allerdings nicht, ob das so gut ist...

Nova

BeitragDi, Sep 23, 2008 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich werden die rects gelöscht. Mal sie doch einfach normal!
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit

sheldon

BeitragDi, Sep 23, 2008 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach ich doch^^
Sry, wenn ich mich so verwirrend ausdrücke...

The_Nici

BeitragDi, Sep 23, 2008 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Cls nach Flip oder vor dem Zeichnen. Flip zeigt dir den BackBuffer an und schiebt den Frontbuffer sozusagen nach hinten.
Code: [AUSKLAPPEN]

Graphics 800,600,0,2
SetBuffer BackBuffer()

mx% = 0
my% = 0
text2 = False   ;Eine Variable um einen anderen Text anzuzeigen. :o

While Not KeyHit(1)
   mx = MouseX()
   my = MouseY()
   
   If KeyHit(57) Then
      text2 = True
   EndIf
   
   If text2 = False
      Text mx,my,"Ich folge der Maus!"
      Text 0,0, "Leertaste um Text umzuschalten!"
   Else
      Text mx,my,"Ich stinke nach Fleischkäse!"
      Rect 0,0,32,32,1
   EndIf
   Flip
   Cls
Wend
End

sheldon

BeitragDi, Sep 23, 2008 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, aber ich zeichne ja zufällige Rects und Ovale.

Xeres

Moderator

BeitragDi, Sep 23, 2008 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Objekte müssen dann 1x zufällige werte erhalten und werden dann immer mit diesen gezeichnet... wie immer am besten mit Types Wink
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

The_Nici

BeitragMi, Sep 24, 2008 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
SeedRnd MilliSecs()   ;Zufallszahlen neu setzen
Type T_rect
   Field x%   ;X-Koordinate
   Field y%   ;Y-Koordinate
   Field w%   ;Breite
   Field h%   ;Höhe
   Field r%,g%,b%   ;Rot Grün Blau
End Type

Graphics 800,600,32,2

While Not KeyHit(1)
   If KeyHit(57) Then
      r.T_rect = New T_rect   ;Neuer Typeeintrag
      r\w% = Rand(0,600)   ;Breite zufällig bestimmen
      r\h% = Rand(0,400)    ;Höhe zufällig bestimmen
      r\x% = Rand(0,800 - r\w)   ;800 - Breite damit es nicht über den Bildschirm hinausgeht.
      r\y% = Rand(0,600 - r\h)
      r\r% = Rand(0,255); \
      r\g% = Rand(0,255);--}Farben
      r\b% = Rand(0,255); /
   EndIf
   DrawMyRandomRects()
   Text 0,0,"Drücke die Leertaste um cooler zu sein!"
   Flip
   Cls
Wend
End

Function DrawMyRandomRects()
   For r.T_rect = Each T_rect   ;Alle Typeeinträge durchgehen
      Color r\r, r\g, r\b      ;Farbe setzen
      Rect r\x, r\y, r\w, r\h, 1   ;Rect zeichnen
   Next   ;Ende For-Schleife
   Color 255,255,255   ;Farbe wieder auf Weiss machen
End Function


In etwa so.

MfG

sheldon

BeitragMi, Sep 24, 2008 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann bräuchte ich 7 Types und das wäre mir deutlich zu viel. So wie ich es jetzt habe, klappt es doch.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group