Einzelnen Beitrag anzeigen

barf00s
(Gast)

n/a Beiträge
 
#5

Re: Accessviolation in Klassen-Prozedur

  Alt 19. Jul 2005, 14:53
1. beim compilen bekommst nen EAccessViolation? das halt ich fürn gerücht eher bei der ausführung deines codes
2. hat dir mammi nich erklärt in klassen ein/ausgabe methoden von den reinen datenverarbeitenden methoden zu trennen?
3. klassenprozedur wäre was anderes "class procedure" - war etwas verwirrt beim öffnen dieses dingsens hier
4. wie man objekt orientiert programmiert - http://www.delphibasics.co.uk/Article.asp?Name=OO - das solltest dir eventuell mal zu gemüte führen
5.

Delphi-Quellcode:
type
  TGraph = class{(TObject)}
  private
    FXLength: integer;
    FYLength: integer;
    FCenter: TPoint;
    FCanvas: TCanvas;
    procedure SetXLength(const Value: integer);
    procedure SetYLength(const Value: integer);
    procedure SetCenter(const Value: TPoint);
  public
    constructor Create(ACanvas: TCanvas);
    procedure DrawAxes;
    procedure DrawHorzMarkers(Left: TPoint; Len: integer);
    procedure DrawVertMarkers(Top: TPoint; Len: integer);
    property XLength: integer read FXLength write SetXLength;
    property yLength: integer read FYLength write SetYLength;
    property Center: TPoint read FPoint write SetPoint;
    property Canvas: FCanvas write FCanvas;
  end;

implementation

constructor TGraph.Create(ACanvas: TCanvas);
begin
  inherited Create;
  FCanvas := ACanvas;
end;

procedure TGraph.SetXLength;
begin
  if FXLength <> Value then
    FXLength := Value;
end;

procedure TGraph.SetYLength;
begin
  if FYLength <> Value then
    FYLength := Value;
end;

procedure TGraph.SetCenter;
begin
  if (FCenter.X <> Value.X) or (FCenter.Y <> Value.Y) then
    FCenter := Value;
end;

procedure TGraph.DrawAxes;
begin
  if not Assigned(FCanvas) then
    Exit;
  with FCanvas do begin
    // hier der malkrams
  end;
end;

// bei den andern Draw* isses dann dasselbe, und du greifst auf FXLength, FYLength & FCenter zurück -
  Mit Zitat antworten Zitat