AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Seltsame Probleme mit TForm.Canvas

Ein Thema von implementation · begonnen am 23. Jan 2009 · letzter Beitrag vom 23. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: Seltsame Probleme mit TForm.Canvas

  Alt 23. Jan 2009, 12:07
Wozu der Zeigertyp auf ein Objekt? Ist das Objekt überhaupt instanziiert worden?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

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

Re: Seltsame Probleme mit TForm.Canvas

  Alt 23. Jan 2009, 12:20
ja, Consscreen wurde instanziert, mit New(Consscreen)
Marvin
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

Re: Seltsame Probleme mit TForm.Canvas

  Alt 23. Jan 2009, 12:24
Damit hast Du einen Zeiger allokiert, aber worauf?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

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

Re: Seltsame Probleme mit TForm.Canvas

  Alt 23. Jan 2009, 12:26
auf ein TConsscreen im Heap
Marvin
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

Re: Seltsame Probleme mit TForm.Canvas

  Alt 23. Jan 2009, 12:30
Und dieser TConsscreen ist instanziiert? Das war ja meine Ursprungsfrage.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Seltsame Probleme mit TForm.Canvas

  Alt 23. Jan 2009, 12:36
Zeig einfach mal etwas mehr Code, sonst fragen wir uns noch zu Tode. Weil eventuell denkst du ja auch, du hättest, aber du hast gar nicht, weil du einen Fehler gemacht hast, von dem du dachtest, du hättest nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

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

Re: Seltsame Probleme mit TForm.Canvas

  Alt 23. Jan 2009, 12:58
DeddyH: ich habe bereits gesagt, dass Consscreen instanziert ist, mit New
der zeiger ist garantiert nicht das problem, das hab ich in dem prog
schonmal so gemacht

Eigentlich hab ich schon alles geschrieben, was damit zusammenhängt
Marvin
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

Re: Seltsame Probleme mit TForm.Canvas

  Alt 23. Jan 2009, 13:01
Ich glaube, wir reden aneinander vorbei. Du hast Dir (wieso auch immer) einen Zeiger auf eine Klasse definiert. Diese Klasse muss mitKlasse := TKlasse.Create; instanziiert werden, wobei Klasse ja dann bereits ein Zeiger ist. Machst Du das nicht, muss es beimKlassenzeiger^.irgendwas ja knallen, da das referenzierte Objekt ja gar nicht existiert.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Seltsame Probleme mit TForm.Canvas

  Alt 23. Jan 2009, 13:14
Er hat keine Klasse, sondern einen Record:
Delphi-Quellcode:
type
  TConsProps = record
    Fontname: string;
    Fontsize: Integer;
    Text, Textbackground: TColor;
    Fontstyle: TFontstyles;
    PenLine: Word;
    PenPos: Word;
  end;
  TConsScreen = type TForm;
  PConsScreen = ^TConsScreen;
Und mit einem Record geht es so:
Delphi-Quellcode:
var
  cs: PConsScreen;
begin
  cs = new(PConsScreen);
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz