Texthintergrund

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
guennid
Beiträge: 59
Registriert: Sa 9. Aug 2008, 10:19

Texthintergrund

Beitrag von guennid »

In TP/BP kann ich (ein wenig tricky) für die Textfarben reservierte Farben auch für den Texthintergund verwenden, z.B. so:

Code: Alles auswählen

PROCEDURE txtFuerHg(onOff:BOOLEAN);
VAR regs : REGISTERS;
 
BEGIN
regs.ax := $1003;
IF onOff = false THEN regs.bl := 1 ELSE regs.bl := 0;
INTR($10,regs);
END;
MIt freepascal funktioniert diese (nicht auf meinem Mist gewachsene) Routine bisher nicht. Geht das nicht oder brauche ich eine andere Lösung.

Grüße, guennid
Zuletzt geändert von guennid am Mi 17. Aug 2011, 08:34, insgesamt 2-mal geändert.

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Texthintergrund

Beitrag von MAC »

Hallo.
Wie genau meinst du das ?
In einerm konsolenProgramm oder wo willst du den TextHintergrund ändern ?
Wenn ja dann kann ich dir nicht helfen.
Wenn es um ein TCanvas gibt
müsste das mit der Eigenschaft gehen

Code: Alles auswählen

TCanvas.Brush.Color := clred;
TCanvas.Brush.Style:=bsSolid;     
TCanvas.TextOut(10,20,'Hello World');

Code: Alles auswählen

Signatur := nil;

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Texthintergrund

Beitrag von DiBo33 »

http://www.tutorials.at/pascal/03-ea-dr ... rmatierung" onclick="window.open(this.href);return false;

guennid
Beiträge: 59
Registriert: Sa 9. Aug 2008, 10:19

Re: Texthintergrund

Beitrag von guennid »

@MAC
Ja, Konsolenprogramm.

@DiBo33
den link hatte ich vorher schon besucht: Für mein Vorhaben irrelevant. Anfänger in TP/BP bin ich nicht.
Grüße, guennid
Zuletzt geändert von guennid am So 14. Aug 2011, 22:52, insgesamt 1-mal geändert.

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Texthintergrund

Beitrag von DiBo33 »

Wieso irrelevant?

Du willst in einer Konsolenapp die Hintergrundfarbe ändern, eben das geht mit TextBackground.

guennid
Beiträge: 59
Registriert: Sa 9. Aug 2008, 10:19

Re: Texthintergrund

Beitrag von guennid »

Ich will die Textfarben auch für den Hintergrund verwenden. Ein Test mit yellow ist gescheitert, was zu erwarten war.

Ich fürchte der Autor des Tutorials weiß gar nicht, dass das zwei paar Schuhe sind, jedenfalls geht er mit keinem Wort darauf ein. Wäre schön, wenn es unter freepascal so einfach wäre, aber dem scheint nicht so zu sein.
Grüße, guennid

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Texthintergrund

Beitrag von DiBo33 »

guennid hat geschrieben:Ein Test mit yellow ist gescheitert, was zu erwarten war.
Naja, bei mir gehts.
Dateianhänge
FP-IDE
FP-IDE
Gelber Hintergrund
Gelber Hintergrund

guennid
Beiträge: 59
Registriert: Sa 9. Aug 2008, 10:19

Re: Texthintergrund

Beitrag von guennid »

Ich hab's also nochmal probiert: Sowohl im terminal als auch auf der konsole kriege ich zwar Farben, aber kein Gelb. Im Terminal war's ein gelbliches Grün, auf der konsole würde ich die schwer definierbare Farbe eher als braun bezeichnen.

Gut, mag an meinem System (debian-linux, lenny) und nicht am fp-Programm liegen.

Ist das definitiv, dass freepascal nicht wie TP/BP einen Unterschied zwischen Text- und Hintergrundfarben macht?

Grüße Günther

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Texthintergrund

Beitrag von DiBo33 »

guennid hat geschrieben:Ist das definitiv, dass freepascal nicht wie TP/BP einen Unterschied zwischen Text- und Hintergrundfarben macht?
Bei mir wars Arch-Linux mit Gnome-Terminal, aber gerade mal getestet:
Sowohl TextColor als auch TextBackground auf Yellow gesetzt, ergibt als Textcolor eher ein sehr helles Gelb (fast schon weis), dürfte in dem Fall am Ansi-Treiber liegen, diesen Nutzt die Unit Crt.

Sorry, war wohl ich auf dem Holzweg!

Fiele mir nur noch ein Test mit direkter Zuweisung des Bildschirmspeichers ein, ob Linux jetzt auch den Interrupt $10 für die Bildschirmausgabe verwendet kann ich auch nicht sagen.

guennid
Beiträge: 59
Registriert: Sa 9. Aug 2008, 10:19

Re: Texthintergrund

Beitrag von guennid »

DiBo33 hat geschrieben:Fiele mir nur noch ein Test mit direkter Zuweisung des Bildschirmspeichers ein
. Das wird's wohl sein, aber das geht dann doch über meine Fähigkeiten. Meinen eingangs zitierten code für BP habe ich auch nur übernommen, nicht wirklich kapiert.
Der fp-compiler (2.4.2) akzepiert ihn gar nicht auf einer amd64-Maschine, auf i386 tut er's, aber auch da sind die Farben falsch.
Wäre prima, wenn jemand raustüfteln könnte, wie man den Speicher manipulieren könnte.

Grüße, guennid

[edit] bei meinem System habe ich mich leicht vertan, ich fahre auf beiden Maschinen squeeze, nicht lenny.

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Texthintergrund

Beitrag von DiBo33 »

guennid hat geschrieben:... nicht wirklich kapiert.
Setzt eigentlich nur das Blinkenattribut ausser Kraft: siehe Unterfunktion 03h
http://de.wikibooks.org/wiki/Interrupts ... A.2FVGA.29" onclick="window.open(this.href);return false;
guennid hat geschrieben:Der fp-compiler (2.4.2) akzepiert ihn gar nicht auf einer amd64-Maschine,
Klar, weil hier andere Register angesprochen werden müssen.
guennid hat geschrieben:auf i386 tut er's, aber auch da sind die Farben falsch.
Auch direkt auf der Konsole?
Im Terminal funkt dir wahrscheinlich der Ansi-Treiber dazwischen.
guennid hat geschrieben:[edit] bei meinem System habe ich mich leicht vertan, ich fahre auf beiden Maschinen squeeze, nicht lenny.
Das ist für den Code egal.

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Texthintergrund

Beitrag von DiBo33 »

Du musst noch HighVideo ausführen, funktioniert allerdings nur auf der Konsole nicht im Terminal.

Code: Alles auswählen

uses crt;
 
begin
    TextColor(Black);
    TextBackground(Yellow);
    writeln('Schwarz auf Gelb');
    TextColor(Yellow);
    writeln('Fastweis auf Gelb');
    HighVideo;
    writeln('Nu ists Gelb auf Gelb');
end.

guennid
Beiträge: 59
Registriert: Sa 9. Aug 2008, 10:19

Re: Texthintergrund

Beitrag von guennid »

DiBo33 hat geschrieben:'Nu ists Gelb auf Gelb'
Das ist zwar ziemlich sinnfrei :mrgreen: , aber du hast recht, ich krieg jetzt einen gelben Hintergrund hin. Danke sehr'!!!

Bei mir übrigens auch im Terminal (WM: openbox, Terminal: urxvt). 8)

Das heißt dann offenbar definitv, dass man im Unterschied zu BP bei freepascal nicht das Blinken des Cursors ausschalten muss, um die Textfarben für den Hintergrund verwenden zu können?

Grüße, guennid

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Texthintergrund (gelöst)

Beitrag von DiBo33 »

Das heißt dann offenbar definitv, dass man im Unterschied zu BP bei freepascal nicht das Blinken des Cursors ausschalten muss, um die Textfarben für den Hintergrund verwenden zu können?
Nicht das Blinken des Cursors wird ausgeschaltet, sondern des Textes und nichts anderes macht HighVideo, LowVideo schaltet das Blinken wieder ein.

guennid
Beiträge: 59
Registriert: Sa 9. Aug 2008, 10:19

Re: Texthintergrund (gelöst)

Beitrag von guennid »

Es funktioniert doch noch nicht, jedenfalls nicht auf der sehr alten i386-Maschine (PII). Dort bleibt der Hintergrund auch mit highvideo braun (textbackground(yellow)) im Unterschied zum Text, den ich in deutlich unterscheidbarem gelb bekomme (textcolor(yellow)).

Kann es damit zusammenhängen, dass auf beiden Maschinen zwar svgalib1 installiert ist, weil sich ein freepascal-Programm auf der alten Maschine ohne gar nicht ausführen lässt. Aber während ich auf der neueren (amd64, core2duo) das Programm als user (sowohl auf der console als auch im Terminal, s.o.) ausführen kann (keine Ahnung, ob svgalib1 benutzt wird), geht es auf der alten (via svgalib) nur als root und auch nur auf der console?



Grüße, guennid

Antworten