Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 12.04.2008, 22:32 Titel: Frage zu Color |
|
|
Hallo,
Ich habe mal eine Frage:
Wie kann man abfragen welche Farbe gerade ausgewählt ist, also welche Farbe man bei der letzen COLOR-Anweisung genommen hat?
Also ungefähr so:
Code: | If Color = 1 then .... |
Danke schon mal im vorraus... |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 12.04.2008, 22:46 Titel: |
|
|
Ok danke
Kann man das auch aus dem Speicher (also mit peek) oder so lesen, ohne SUB?? |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 12.04.2008, 22:58 Titel: |
|
|
geht auch ohne... der code gibt immer die farbe an der aktuellen cursorposition zurück.
Code: | PRINT SCREEN(POS(0), CSRLIN, 1) |
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 13.04.2008, 11:27 Titel: |
|
|
Ich wollte eigentlich ein SUB machen womit man Texte mit INTERRUPT ausgeben kann...
Und damit ich nicht immer die Farbe als Parameter schreiben muss, wollte ich die Farbe die zuletzt gewählt wurde benutzen.
Code: | CALL PRINTTEXT (Text$, Farbe) |
Das mit CSRLIN und POS(0) weiß ich auch.
Code: |
Declare Sub PRINTTEXT (Text$, Farbe%)
'$Include: 'Qb.Bi'
Dim Shared Regs as RegTypeX
SUB PRINTTEXT (Text$, Farbe%)
X% = Pos(0)
Y% = CSRLIN
For I% = 1 To Len(Text$)
Regs.Ax = &H900 + Asc(Mid$(Text$, I%, 1)) 'Zeichen
Regs.Bx = Farbe% 'Farbe
Regs.Cx = 1 'Anzahl
Locate Y%, X%
Call InterruptX (&H10, Regs, Regs)
X% = X% + 1
Next
End Sub
|
Und Ich wollte halt den Parameter "Farbe" nicht mit Übergeben... |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 13.04.2008, 11:31 Titel: |
|
|
Hallo,
dann deklariere doch eine Variable wie Farbe% shared, sodass du nur bei einer Änderung der Farbe irgendwas angeben musst:
Code: | Declare Sub MeinPrint (Text$)
Dim Shared Farbe%
Farbe%=10
MeinPrint "Hallo"
MeinPrint "Zeile 2"
Farbe%=12
MeinPrint "Test. Test."
SLEEP
SUB MeinPrint (Text$)
COLOR Farbe% 'Interruptaufruf statt der
PRINT Text$ 'Standard-Befehle einsetzen
END SUB |
_________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 13.04.2008, 16:43 Titel: |
|
|
Zum ursprünglichen Post: Du sprichst hier eine nicht unwichtige Lücke im Befehlssatz von QB an: Im Gegensatz zum beispielsweise bereits 1985 herausgekommenen Commodore Amiga, wo es in der dortigen graphics.library analog zu SetAPen() und SetBPen() auch ein GetAPen() und GetBPen() gegeben hat, haben sowohl IBM bei ihrem Grafikkarten-BIOS als auch Microsoft bei ihrem Befehlssatz eine entsprechende COLOR() (und auch PALETTE())-Funktion komplett vergessen, so dass eine COLOR-Ersatz-SUB-Prozedur wie von Sebastian gezeigt, welche den eingestellten Wert in einer globalen Variable speichert, der einzige "Temporary Workaround" darstellt. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|