Fehler bei der Erstellung von Klasse [gelöst]

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Bernd72
Beiträge: 5
Registriert: So 31. Aug 2014, 21:05

Fehler bei der Erstellung von Klasse [gelöst]

Beitrag von Bernd72 »

Hallo ihr Lieben,

irgendwas mache ich falsch beim übertragen von Daten von einer Unit zu einer anderen Unit. Ich habe es mit einem Feldwert probiert und auch mit einer Eigenschaft. Ich habe den Verdacht, dass ich versuche auf einen Zeiger zuzugreifen. Das ist natürlich nicht in meinem Sinne.

Code: Alles auswählen

 
unit Data;
 
...
 
type  
TDrumClass = class //(TSequenceClass) soll später alle Eigenschaften von der SequenceClass erben
private
   //FDrumLevel : Integer;
 
public
  procedure SetDrumLevel(ADrumlevel : Integer);
  function GetDrumLevel : Integer;
  property DrumLevel:Integer read GetDrumLevel write SetDrumLevel;
  constructor Create;
  destructor Destroy; override;
 
end;
 
var
  Drum1 :TDrumClass;
  Drum2 :TDrumClass; 
 
implementation
 
constructor TDrumClass.Create;
begin
   inherited Create;
   DrumLevel:= 96;   //Standardwert
end;
 
destructor TDrumClass.Destroy;
begin
  inherited Destroy;
end;                 
 
procedure TDrumClass.SetDrumLevel(ADrumlevel : Integer);
begin
   Drumlevel:=ADrumlevel;
end;
 
function TDrumClass.GetDrumLevel: Integer;
begin
  Result:= Drumlevel;
end; 
 
Hier ist mal die zweite Unit, die aus einem Formular besteht.

Code: Alles auswählen

 
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Data;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Data.Drum1.Create;
  Data.Drum2.Create;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Data.Drum1.SetDrumLevel(127);
  Data.Drum2.SetDrumLevel(64);
  ShowMessage('Drum1: ' + IntToStr(Data.Drum1.GetDrumLevel));
  ShowMessage('Drum2: ' + IntToStr(Data.Drum2.GetDrumLevel));
end;
end.
 
Zuletzt geändert von Bernd72 am Do 4. Sep 2014, 16:57, insgesamt 1-mal geändert.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Fehler bei der Erstellung von Klasse oder Zugriffsfehler

Beitrag von m.fuchs »

Bernd72 hat geschrieben:

Code: Alles auswählen

Data.Drum1.Create;
  Data.Drum2.Create;
Da ist der Fehler, deine Instanzierung ist Murks. Wie es richtig geht, findest du in diesem Beispiel: http://de.wikibooks.org/wiki/Programmie ... ner_Aufbau
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Bernd72
Beiträge: 5
Registriert: So 31. Aug 2014, 21:05

Re: Fehler bei der Erstellung von Klasse oder Zugriffsfehler

Beitrag von Bernd72 »

m.fuchs hat geschrieben: Da ist der Fehler, deine Instanzierung ist Murks. Wie es richtig geht, findest du in diesem Beispiel: http://de.wikibooks.org/wiki/Programmie ... ner_Aufbau
Hallo Michael,

ich danke Dir, dass Du Dir die Zeit genommen hast. Das die Zuweisung fehlte, ist ein peinlicher Fehler.

Grüße Bernd

Antworten