Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit Pointer von TForm (https://www.delphipraxis.net/66856-problem-mit-pointer-von-tform.html)

Flare 5. Apr 2006 13:35


Problem mit Pointer von TForm
 
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

Bernhard Geyer 5. Apr 2006 13:40

Re: Problem mit Pointer von TForm
 
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;

Flare 5. Apr 2006 13:44

Re: Problem mit Pointer von TForm
 
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.
:dp:


Flare


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz