Archiv verlassen und diese Seite im Standarddesign anzeigen : Bildschirmspeicher?
Hab nur mal eine Frage:
Kann ich wenn ich ein Array hab und damit den Bildschirm speicherverwalte,das irgendwie ausgeben.Das ich wenn ich
die EXE-Datei mit dem paramerter >output.txt starte das was im Bildschirmspeicher ist auch in der TXT-DAtei steht?
danke schonmal
Felix Kaiser
25.06.2002, 21:15
In einer Textdatei nützt das dir nur recht wenig, da ein normaler Textbildschirm 80x25 Zeichen aus 80x25x2 Bytes besteht, wobei das erste Byte das Zeichen ist und das zweite Byte die Farbe. Über den StdOut würde ich es nicht machen, versuchs mal mit ParamStr(1) um auf Parameter (nicht > dateiname!) zu reagieren und in einer FOR Schleife könntest du nun den Inhalt des Bildschirms in einer Datei speichern, eine Schleife deshalb, um nur den Zeicheninhalt in die Datei zu schreiben, keine Farbcodes.
Aber in meiner Aufgabe steht das es möglich sein soll mit ">output.txt" als Parameter die Ausgabe umzuleiten.
Da ich ein Koordinatensystem mit einem Polynom 4ten Grades ausgeben soll.Dachte ich das ich das mit dem Bildschirmspeicher
mach.Wenn man das Program normal startet sieht man das Koordinatensystem auch,nur beim umleiten nicht.
Nun meine Frage ist es möglich das ich mit ">output.txt" den Bildschirm speicher in die Datei schreib?
mfg
Felix Kaiser
26.06.2002, 22:07
Oi oi, mit den Prozeduren Write und Writeln kannst du ins StdOut schreiben, sprich in die durch > angegebene Datei, machs doch nicht so kompliziert mit Bildschirmspeicher, da bei StdOut kein Bildschirmspeicher existiert im Fall StdOut != CON.
Diogenes
29.06.2002, 13:15
@adsf: Ich habe die selbe Frage von Dir in einem anderen Board gesehen und werde hier antworten (das CB ist mir lieber):
Verwende folgenden Typ:
type
TSimScreen: array[ 0 .. 23] of string[ 79];
Initialisiert wird das ganze mitFillChar( SimScreen, SizeOf( TSimScreen), #032)wobei SimScreen vom Typ TSimScreen ist.
Stell' Dir die einzelnen Zeilen zusammen: 1 Zeile in Element 0 usw.
Laß Platz (sagen wir: 2 Zeilen) für den Kopf. Dann hast Du einen Bereich von 22 Zeilen für den Y-Bereich und 79 Spaleten für den X-Berecih.
Warum ich 1 Zeile und 1 Spalte weniger definiert habe? Wegen des Zeilensprunges und des Scrollings, der sich bei WriteLn ergibt, wenn es an ein Zeilenende (Sprung) oder das Bildschirmende (Scrolling) gelangt.
Zur Ausgabe dient folgende Routine:
uses CRT;
...
procedure WriteSimScreen( var SimScreen: TSimScreen; TextName: string);
var
Line: Byte;
Out: Text;
begin
if TextName <> ''
then Assign( Out, TextName)
else AssignCRT( Out); {Wenn ein Dateiname vorhanden ist, dann wird in diese Datei ausgegeben, ansonsten auf dem Bildschirm}
for I := 0 to 23 do
WriteLn( Out, SimScreen( I);
Close( Out)
end.
So. ich hoffe, das hift weiter.
hat sich schon erledigt,danke!
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.