Einzelnen Beitrag anzeigen

Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#1

Seltsame Probleme mit TForm.Canvas

  Alt 23. Jan 2009, 12:03
Beim folgenden Quelltext bricht das Programm einfach ab.
Es gibt nicht einmal eine Fehlermeldung.
Delphi-Quellcode:
procedure WriteOnScreen(Text: string = ''; Linefeeds: Word = 0);
var i:Byte;
begin
  with Consscreen^ do begin
    Canvas.Font.Color := Consprops.Text;
    Canvas.Font.Name := Consprops.Fontname;
    Canvas.Font.Size := Consprops.Fontsize;
    Canvas.Font.Style := Consprops.Fontstyle;
    Canvas.Brush.Color := Consprops.Textbackground;
    Canvas.TextOut(Consprops.PenLine*(Consprops.Fontsize+3),Consprops.PenPos,Text);
    for i := 0 to Linefeeds do begin
      Consprops.PenPos := 0;
      Inc(Consprops.PenLine);
    end;
  end;
end;
Es sei noch folgendes gesagt:
Delphi-Quellcode:
type
  TConsProps = record
    Fontname: string;
    Fontsize: Integer;
    Text, Textbackground: TColor;
    Fontstyle: TFontstyles;
    PenLine: Word;
    PenPos: Word;
  end;
  TConsScreen = type TForm;
  PConsScreen = ^TConsScreen;

var ConsProps: TConsProps;
var ConsScreen: PConsScreen;
Consscreen wurde längst mit New(Consscreen) erstellt.
Der Aufruf:
1. WriteOnScreen(Text);
2. WriteOnScreen('',1);

Ergebnis der Haltepunkte:
- das Programm läuft ... bis zum ersten Vorkommen von Consscreen^.Canvas
- wenn man alles mit Consprops^.Canvas in Kommentare setzt, bricht das Programm nicht ab.

Wo könnte das Problem liegen
Marvin
  Mit Zitat antworten Zitat