AGB  ·  Datenschutz  ·  Impressum  







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

OOP-Delphi-Anfänger

Ein Thema von hotkey · begonnen am 11. Jan 2012 · letzter Beitrag vom 11. Jan 2012
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von implementation
implementation

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

AW: OOP-Delphi-Anfänger

  Alt 11. Jan 2012, 18:07
Also Zeichne:TRechteck funzt nicht.

Aber ich muss ihm doch sagen , dass diese procedure die Variablem Xpos etc aus der Klasse entnehmen soll.

Da verstehe ich nicht , warum Zeichne:TRechteck nicht geht..
Einmal angucken bitte:
Delphi-Quellcode:
TRechteck = class // ein Rechteck im 2-dimensionalen Raum
private
   { Private-Deklarationen }
public
  { Public-Deklarationen }
  procedure Zeichne(canvas:TCanvas);
  XPos:integer;
  YPos:integer;
  Hoehe:integer;
  Breite:integer;
end;

procedure TRechteck.Zeichne(canvas:TCanvas);
begin
  canvas.Pen.Color := clBlack;
  // 1. Linie
  canvas.MoveTo(XPos, YPos);
  canvas.MoveTo(XPos, YPos+breite);
  // 2. Linie
  canvas.MoveTo(XPos+Hoehe, YPos+breite);
  // 3. und 4. Linie ist dein Job :-)
end;
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#12

AW: OOP-Delphi-Anfänger

  Alt 11. Jan 2012, 18:14
Ich komm echt nicht drauf


Was mir einfällt :

Code:

TRechteck = class // ein Rechteck im 2-dimensionalen Raum
private
   { Private-Deklarationen }
public
  { Public-Deklarationen }
  XPos:integer;
  YPos:integer;                                // Hier im Public-Teil werden ja die Variablen deklariert , das verstehe ich noch , hab die procedure aus dem public-teil entfernt.
  Hoehe:integer;
  Breite:integer;
end;

procedure TRechteck.Zeichne(canvas:TCanvas);    // Diese procedure reicht doch oder nciht ? Zeichne gehört zu TRechteck und entnimmt von dort die Variablen und kann
begin                                            // ganz normal zeichnen ,oder nciht ? 
  canvas.Pen.Color := clBlack;
  // 1. Linie
  canvas.MoveTo(XPos, YPos);
  canvas.MoveTo(XPos, YPos+breite);
  // 2. Linie
  canvas.MoveTo(XPos+Hoehe, YPos+breite);
  // 3. und 4. Linie ist dein Job :-)
end;
Felix
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#13

AW: OOP-Delphi-Anfänger

  Alt 11. Jan 2012, 18:16
Es ist doch sinnlos, wenn du mit der Materie nicht vertraut bist.
Ich meins nicht böse, aber du ersparst allen - auch dir selbst - viel Mühe, wenn du zuerst die Grundlagen lernst.

Zu deiner Frage - das eine ist ein Apfel, das andere ne Birne!
Du versuchst, eine Variable zu definieren; gemeint war aber eine Methode!
Methoden sind entweder Prozeduren/Funktionen, die sich in einer Klasse befinden!

Edit:
"Diese procedure reicht doch oder nciht ? Zeichne gehört zu TRechteck und entnimmt von dort die Variablen und kann (..)"
Nein, eben nicht.
Diese Procedure weiß ja nicht, wo sie hingehört, da der Klasse TRechteck nicht mitgeteilt wurde, dass sie ihr gehört (sozusagen)

Du kannst dich ja auch nicht in ein Auto setzen, das keinen Sitz hat.
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (11. Jan 2012 um 18:19 Uhr)
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#14

AW: OOP-Delphi-Anfänger

  Alt 11. Jan 2012, 18:18
Es ist doch sinnlos, wenn du mit der Materie nicht vertraut bist.
Ich meins nicht böse, aber du ersparst allen - auch dir selbst - viel Mühe, wenn du zuerst die Grundlagen lernst.

Zu deiner Frage - das eine ist ein Apfel, das andere ne Birne!
Du versuchst, eine Variable zu definieren; gemeint war aber eine Methode!
Methoden sind entweder Prozeduren/Funktionen, die sich in einer Klasse befinden!


Das ist das Prblem.

Unser Lehrer hat gesagt wir sollen die Methoden im implementation-Teil reinprogrammieren.
Die Delphi-Syntax ist mir ja klar , hatte ja vorher Records und so aber bei den Klassen muss ich mich noch an paar Sachen gewöhnen , bitte nciht böse sein.

Aber ich muss das hinkriegen.

EDIT : HAT GEFUNZT :
Ich muss ads nur noch mit einem Button verknüpfen , mnelde mich bei Problemen.
VIELEN DANK AN ALLE

ja man
Felix

Geändert von hotkey (11. Jan 2012 um 18:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#15

AW: OOP-Delphi-Anfänger

  Alt 11. Jan 2012, 18:21
Ok, also entweder hat dein Lehrer euch das falsch erklärt, oder du hast es falsch in Erinnerung.

Es muss, genauso wie die Variable in der Klasse deklariert wurden, auch in der Klasse deklariert sein.
Verwechsle es nicht mit Variablendeklaration.
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: OOP-Delphi-Anfänger

  Alt 11. Jan 2012, 18:21
Eine Methode gehört zu einer Klasse. Es darf daher nicht heißen:
function Zeichne: TRechteck; sondern
procedure TRechteck.Zeichne;
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 Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#17

AW: OOP-Delphi-Anfänger

  Alt 11. Jan 2012, 18:23
Das wird ihn eventuell verwirren, da er die Implementation der Methode eh richtig hatte.
Jetzt wird er bei der Definition sicher einen Fehler begehen
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: OOP-Delphi-Anfänger

  Alt 11. Jan 2012, 18:26
Wieso? Ich habe ja nur noch einmal auf den Unterschied zwischen Methode und "regulärer" Funktion hingewiesen.
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
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#19

AW: OOP-Delphi-Anfänger

  Alt 11. Jan 2012, 18:29
Also mein Code sieht jetzt so aus

Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    RechteckBTN: TButton;
    LoeschBTN: TButton;
    EndeBTN: TButton;
    PaintBox1: TPaintBox;
    procedure RechteckBTNClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  TRechteck = class


    private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
     XPos:integer;
    YPos:integer;
    Hoehe:integer;
    Breite:integer;
   procedure Zeichne(canvas:TCanvas);

    end;





var
  Form1: TForm1;
  Rechteck: TRechteck;
  Zeichne:TRechteck;

implementation

 procedure TRechteck.Zeichne(canvas:TCanvas);
begin
  canvas.Pen.Color:= clBlack;
  // 1. Linie
  canvas.MoveTo(XPos, YPos);
  canvas.MoveTo(XPos, YPos+breite);
  // 2. Linie
  canvas.MoveTo(XPos+Hoehe, YPos+breite);
  // 3. und 4. Linie ist dein Job :-)
end;






{$R *.dfm}

begin
TRechteck.Zeichne

procedure TForm1.RechteckBTNClick(Sender: TObject); // Das hier ist der Button , wenn ich auf den klicke , soll die Prozedur                                            
                                                      // TRechteck.Zeichne aufgerufen werden , aber der Button " an sich " ist ja eine Procedure
                                                      // Ich weiß , wenn ich mit TRechteck.Zeichne arbeiten will die Parameter eingeben muss aber
                                                      // ich kann ja jetzt einfach unter Button-Procedu TRechteck.Zeichne(20,20) oder so eingeben
begin

end;

end.
Felix
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

AW: OOP-Delphi-Anfänger

  Alt 11. Jan 2012, 18:42
Es wäre schön, wenn du für Delphi-Code auch die Delphi-Tags benutzen würdest (das ist der Knopf mit dem Helm direkt neben dem Code-Knopf)

Hier mal ein Beispiel-Code wie das dann funktionieren kann. Nicht wirklich fertig, aber davon solltest du den Rest ableiten können, bzw. etwas konkretere Fragen stellen können.
(Manchmal muss man in die richtige Richtung gedreht werden )
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class( TForm )
    The_PaintBox : TPaintBox;
    btn_Rechteck : TButton;
    // Im Object-Inspector das Ereignis "OnClick" von "btn_Rechteck" mit "btn_RechteckClick" verbinden
    procedure btn_RechteckClick( Sender : TObject );
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  TRechteck = class
    hoehe, breite : Integer;
    // Zeichnet relativ zur aktuellen Stiftposition auf "aCanvas" das Rechteck
    procedure ZeichneAuf( aCanvas : TCanvas );
  end;

var
  Form1 : TForm1;

implementation

{$R *.dfm}
{ TRechteck }

procedure TRechteck.ZeichneAuf( aCanvas : TCanvas );
begin
  // Jedes Zeichnen mit "LineTo" setzt auch die Stiftposition "PenPos"
  aCanvas.LineTo( aCanvas.PenPos.X + Self.breite, aCanvas.PenPos.y ); // Linie nach rechts
  aCanvas.LineTo( aCanvas.PenPos.X, aCanvas.PenPos.y + Self.hoehe ); // Linie nach unten
  aCanvas.LineTo( aCanvas.PenPos.X - Self.breite, aCanvas.PenPos.y ); // Linie nach links
  aCanvas.LineTo( aCanvas.PenPos.X, aCanvas.PenPos.y - Self.hoehe ); // Linie nach oben
end;

{ TForm1 }

procedure TForm1.btn_RechteckClick( Sender : TObject );
var
  MyRechteck : TRechteck;
begin
  // Diese Methode soll aufgerufen werden, wenn der Button "btn_Rechteck" gedrückt wurde

  // Die Stiftposition in der PaintBox setzen
  The_PaintBox.Canvas.MoveTo( 50, 40 );

  // Instanz vom Rechteck erzeugen
  MyRechteck := TRechteck.Create;

  // Werte zuweisen
  MyRechteck.hoehe := 50;
  MyRechteck.breite := 80;

  // Zeichen-Methode aufrufen
  MyRechteck.ZeichneAuf( The_PaintBox.Canvas );

  // Instanz wieder freigeben
  MyRechteck.Free;
end;

end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 12:46 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