Schriftart ändert sich nur, wenn sie auch geöffnet wurde?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

M0rgenstern

Betreff: Schriftart ändert sich nur, wenn sie auch geöffnet wurde?

BeitragDi, Sep 01, 2009 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo an alle.

Ich habe hier gerade ein Problem, das mich sehr verwundert.

Mein Programmtext sieht so aus, an der Stelle an der die Schriftart geladen wird:

Code: [AUSKLAPPEN]
Global SchriftArt = LoadFont("gfx\Final Frontier.ttf", 20) ;Hier wird eine beigefügte Schriftart geladen, damit das Programm schöner aussieht.
SetFont SchriftArt ;Die Schriftart wird hier ausgewählt, damit sie auch benutzt wird.


(Der Code ist nur so deutlich kommentiert, da ich ihn weitergeben werde.)

Graphics wird schon DAVOR gesetzt und ich benutze Print.

Erst dachte ich, ich hätte den falschen Namen angegeben, aber es stimmt alles.
Er hat mir sogar schon mit der SChriftart geschrieben.
Dann hab ich das Programm beendet, und ohne was zu ändern, wieder gestartet, da hat ers auf einmal nicht in der eingestellten SChirftart geschrieben.
Nach einigem hin und her ist mir dann durch Zufall folgendes aufgefallen:

WEnn ich die .ttf Datei selbst offen habe (Doppelklick drauf) dann schreibt mein Programm auch alles in der SChirftart.
Ich habs grade noch einige male ausprobiert.
Wenn die SChriftart geöffnet ist und ich das Programm starte, dann kann ich die SChriftart wieder schließen und er schreibt weiter alles in dieser Schriftart. Sie muss also nur beim Start des Programmes geöffnet sein.

Aber das ist ja auch keine Lösung. Was mich vor allem wundert: WARUM ist das so?


Wenn es doch noch jemand braucht, hier ist der komplette Text:

Code: [AUSKLAPPEN]
AppTitle "Zahlendreher 1.0" ;Der Fenstername des Programmes
Graphics 800, 600, 16, 2 ;Graphikmodus initalisieren, damit der Text auch ganz angezeigt wird. Auflösung: 800*600 Pixel

Global FTimer = CreateTimer(40) ;Der Framtimer wird hier erstellt damit das Programm nicht zu schnell arbeitet (hohe CPU Auslastung)

Global Eingabe$ ;Der String in dem die eingegebene Zimmernummer gespeichert wird.
Global Eins ;Rückgabe Variable ob eine Eins vorhanden ist.
Global Drei ;Rückgabe Variable ob eine Drei vorhanden ist.
Global Vier ;Rückgabe Variable ob eine Vier vorhanden ist.
Global Sieben ;Rückgabe Variable ob eine Sieben vorhanden ist.
Global klein$ ;WEnn das eingegebene ein Wort ist, werden alle Buchstaben auf Kleinbuchstaben gestellt und in dieser Variable gespeichert.
Global Laenge ;In dieser Variable wird die Länge des Strings gespeichert.
Global Ende = 0 ;Variable zum beenden des Programmes.
Dim Einsen(20)
Global NichtEins = 0

Global SchriftArt = LoadFont("gfx\Final Frontier.ttf", 20) ;Hier wird eine beigefügte Schriftart geladen, damit das Programm schöner aussieht.
SetFont SchriftArt ;Die Schriftart wird hier ausgewählt, damit sie auch benutzt wird.





;############~Hauptschleife~############


Repeat
WaitTimer FTimer
Cls
   Locate 0,0
   Print ""
   Print ""
   Print "Bitte geben Sie die Zimmernummer ein. 'exit' eingeben um das Programm zu beenden:"
   
   Eingabe$ = Input$()
   
   Print ""
   Print "Sie haben " + Eingabe + " eingegeben."
   Print ""
   
   klein$ = Lower(Eingabe$)
   
   Laenge = Len(Eingabe$)
   Print Laenge
   
   For i = 1 To Laenge
   
      Eins = Instr(Eingabe$, "1", i)
      If Eins <> 0 Then
         Einsen(i) = 1
      EndIf   
      Drei = Instr(Eingabe$, "3")
      Vier = Instr(Eingabe$, "4")
      Sieben = Instr(Eingabe$, "7")
   
   Next
   
   For i = 0 To Laenge   
         If Einsen(i) <> 1 Then
            NichtEins = 1
         EndIf
   Next
   
   If Drei <> 0 Or Vier <> 0 Or Sieben <> 0 Then
      Print ""
      Print ""
      Print "Bei diesem Schluessel besteht keine Verwechslungsgefahr, da er eine 3, 4 oder 7 enthaelt."
      If Drei <> 0 Then
         Print "Der Schluessel enthaelt eine Drei"
      EndIf
      
      If Vier <> 0 Then
         Print "Der Schluessel enthaelt eine Vier"
      EndIf
      
      If Sieben <> 0 Then
         Print "Der Schluessel enthaelt eine Sieben"
      EndIf
      
   If NichtEins = 0 Then
      Print ""
      Print ""
      Print "Bei diesem Schluessel besteht keine Verwchslungsgefahr, da er nur aus Einsen besteht."
   EndIf
   
   Else Print "Bei diesem Schluessel besteht Verwechslungsgefahr, da er keine 3, 4 oder 7 enthaelt."
      
   EndIf
   
      
   
   
   If klein$ = "exit" Then
      
      Print "Sicher, dass die beenden moechten? J/N"
      Eingabe$ = Input$()
      klein$ = Upper(Eingabe$)
      
      If klein$ = "J" Then
         Ende = 1   
      EndIf
      
   EndIf

   If Ende <> 1 Then
      Print ""
      Print "Beliebige Taste zum Fortfahren druecken."
      WaitKey
   EndIf
   
   NichtEins = 0
Flip 0
Until Ende = 1







End



Danke schonmal im Voraus,

Lg, M0rgenstern
 

Meik

BeitragDi, Sep 01, 2009 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie ich das sehe hast du nach deiner Hauptschleife nicht FreeFont( font ) gemacht um den Font wieder freizugeben. Keine Ahnung ob es daran liegt aber man kann es ja mal probieren ^^.

Xeres

Moderator

BeitragDi, Sep 01, 2009 23:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist der Dateiname des Fonts "Final Frontier.ttf" oder heißt so der Font?
Wie bei LoadFont zu lesen ist, muss man den Fontnamen angeben, wenn er nicht im Schriftarten-Verzeichnis von Windows ist.
Womöglich wird er temporär geladen wenn du die Schirftart öffnest?
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)

Nicdel

BeitragMi, Sep 02, 2009 8:22
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/foru...hp?t=28585
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

M0rgenstern

BeitragMi, Sep 02, 2009 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicdel, sorry, aber der Beitrag bringt mich nicht wirklich weiter, da er am Ende auf das Ergebnis: "EInmal reicht" kommt.


@ Meik... Ich sehe keinen Zusammenhang zwischen dem FreeFont Befehl und der Tatsache, dass er die Schriftart WÄHREND der Hauptschlefie nicht anzeigt.

@ Xeres

Die Font heißt "Final Frontier (TrueType)"
Also siehst du, dass ich den Fontnamen angebe (oder muss das TrueType auch dazu?)

Wenn er es temporär laden würde... Dann würde ich trotzdem nicht verstehen, warum BB selbst die Schriftart nicht läd.

Lg, M0rgenstern

Nicdel

BeitragMi, Sep 02, 2009 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir hat es mit 2x laden immer funktioniert, auch wenn einmal nicht ging. Man könnte es wenigstens versuchen.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

M0rgenstern

BeitragMi, Sep 02, 2009 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry. HAst Recht.
Ein Versuch wars wert.
Hat aber trotzdem nicht geholfen.
Trotzdem danke^^

lg, M0rgenstern

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group