AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Pointer von TForm

Ein Thema von Flare · begonnen am 5. Apr 2006 · letzter Beitrag vom 5. Apr 2006
Antwort Antwort
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#1

Problem mit Pointer von TForm

  Alt 5. Apr 2006, 14:35
Hey ho!

Ich habe gerade meine Grund-Klasse fertiggestellt als mir aufgefallen ist, dass man auch eine allgemeine Zeichnen-Funktion programmieren könnte, die nicht in dem Projekt liegt, sondern in der unit meiner Klasse.
Dazu möchte ich einen Pointer von der aktuellen Form beim erzeugen der Klasse übergeben, mit der dann meine Klasse weiß, auf welcher Form sie zeichnen muss.

Nur irgendwie scheint dies nicht ganz so zu klappen wie ich es mir vorstelle.
Delphi-Quellcode:
type
TFahrzeug = class(TObject)
private
  FForm: ^TForm;
  procedure SetForm(var Value: TForm);
  {...}
end;

implementation

procedure TFahrzeug.refresh();
begin
  FForm^.Refresh;
end;

procedure TFahrzeug.draw();
begin
  FForm^.Canvas.Pixels[round(position.X), round(position.Y)] := clBlack;
end;
Wenn ich dies so starten möchte, dann bringt der Compiler mir eine Meldung (großer Fehler ^^), dass eine Exception aufgetreten ist:
Zitat:
Access violation at address 0044C777 in module 'Fahrzeugtest.exe'. Read of address 00000000. Process stopped.
Könnt ihr mir sagen woran das liegt, bzw. was ich ändern müsste dass es klappt?
Oder geht es sowieso nicht wie ich es mir vorgestellt habe?


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Problem mit Pointer von TForm

  Alt 5. Apr 2006, 14:40
Wieso nochmal "Verpointern". TForm ist doch eine Referenz und damit ein Zeiger

Delphi-Quellcode:
type
TFahrzeug = class(TObject)
private
  FForm: TForm;
  procedure SetForm(var Value: TForm);
  {...}
end;

implementation

procedure TFahrzeug.refresh();
begin
  FForm.Refresh;
end;

procedure TFahrzeug.draw();
begin
  FForm.Canvas.Pixels[round(position.X), round(position.Y)] := clBlack;
end;
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#3

Re: Problem mit Pointer von TForm

  Alt 5. Apr 2006, 14:44
Hey danke!
Das klappt!

Obwohl ich es gerade auch mit Pointern hinbekommen habe...ist aber egal da ich es übersichtlicher finde wenn ich nicht andauernd referenzieren und dereferenzieren muss.



Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:42 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