Hardware Reference
In-Depth Information
Zuweisung eines bestimmten Zahlenwertes - ist fast nicht mehr zu erken-
nen. Eine unübersichtliche Beschreibung enthält erfahrungsgemäß Fehler, die
schwer zu finden sind. Spätestens beim Debuggen wird offensichtlich, dass die
Programmierung eines Packages zur übersichtlichen Entwurfsstrukturierung,
auch wenn das einige Arbeitstage in Anspruch nimmt, eine gute Investition
ist.
Texte variabler Länge
Der Datentyp string kann nur Zeichenketten konstanter Länge darstellen,
aber keine Ausgabetexte, deren Länge variabel ist. Ein Typ für Texte varia-
bler Länge ist im einfachsten Fall ein Verbund aus einer ausreichend langen
Zeichenkette und einem Zeiger auf die erste freie Position:
constant Zeilenlaenge:positive:= 120 ;
type tString is record
str:string( 1 to Zeilenlaenge); -- Zeichenkette
ptr:positive;
-- erste freie Position
end record ;
Die wichtigsten Textverarbeitungsfunktionen sind die Zuweisung einer Zei-
chenkette, das Anhängen einer Zeichenkette und die Rückumwandlung in ei-
ne Zeichenkette. Beim Anhängen wird die übergebene Zeichenkette, solange
noch Platz ist, Zeichen für Zeichen an das Textende kopiert und der Zeiger
erhöht. Wenn das Textobjekt voll ist, geht der Rest der Zeichen verloren:
procedure append(x: inout tString; s:string) is
begin
for idx in s'range loop
if x.prt>x.zk'high then exit ;
else
x.zk(x.ptr) := s(idx); x.ptr := x.ptr+ 1 ;
end if ;
end loop ;
end procedure ;
) WEB-Projekt:Tuc/Ausgabe.vhdl
Zum Beschreiben mit einem neuen Wert wird das Textobjekt zuerst durch
Rücksetzen des Zeigers geleert. Dann wird die übergebene Zeichenkette ange-
hängt:
procedure assign(x: inout tString; s:string) is
begin
x.ptr := 1 ;
append(x, s);
end procedure ;
) WEB-Projekt:Tuc/Ausgabe.vhdl
Zur Rückumwandlung in eine Zeichenkette wird der Zeichenketteninhalt bis
zur letzten mit einem Zeichen gefüllten Position (Zeigerwert minus eins) zu-
rückgegeben:
 
Search WWH ::




Custom Search