Ich habe hier ein TP-Problem. Ich wollt es auch unter FP testen, aber wegen den ganzen genutzten Assembler-Befehlen war das nicht möglich.
Ich habe eine Funktion die Im Textmodus die Bilddaten ausliest und sie in einem Array ablegt.
Das Array habe mit folgendem in als Typ deklariert.
Code: Alles auswählen
Type
ScreenAreaArray = Array[0..159, 0..24] of UInt8;
Code: Alles auswählen
SA: ScreenAreaArray;
Code: Alles auswählen
For IndexY := 0 to (Height - 1) do
For IndexX := 0 to (Width - 1) do
begin
CursorPositionSet(Page, X + IndexX, Y + IndexY);
CharReadCurrent(Page, Char2Temp, ForegroundColor, BackgroundColor);
ScreenArray[XTemp, IndexY] := Asc(Char2Temp);
ScreenArray[XTemp+1, IndexY] := ForegroundColor + (BackgroundColor * 16);
Inc(XTemp, 2);
end;
Ich sehe absolut Grund, wieso dieser Fehler auftaucht.
Was mache ich falsch?
Gruß vom Nixsager
Nachtrag:
So wie ich jetzt heraus gefunden habe, scheint die Funktion zum zeichen der Daten auf dem Bildschirm dafür irgendwie mitverantwortlich zu sein.
In der Prozedur habe ich den Parameter der für den Array ist als Variabel deklariert.
Aber in der Prozedur lesen ich das Array nur aus.
Nehmen ich die Variabel-Deklaration weg, kriege ich Stack-Überlauf.
Hier der Code mit dem ich den Inhalt des Array auf dem Bildschirm zeichne.
Code: Alles auswählen
For IndexY := 0 to (Height - 1) do
For IndexX := 0 to (Width - 1) do
begin
CharTemp := ScreenArray[XTemp, IndexY];
CharColorPaint(Chr(CharTemp), 1, Page, IndexX + X, IndexY + Y,
(ScreenArray[XTemp+1, IndexY] DIV 16), (ScreenArray[XTemp+1, IndexY] MOD 16));
Inc(XTemp, 2);
end;