Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

bin kein Programmierer, aber weil man es in der Ausbildung auch lernen muss, versuche ich gerade den Anfang eines Programmes, dass wir in der Schule auch programmieren zu meistern. 1-2-3 Streichholz, wer es kennt.

Meine Klasse:

Type TStreichholz = Class(TObject)

private

Bitmap: TBitmap;

Anzahl:Byte;

public

constructor Create();

destructor Destroy;

procedure Anzeigen(x,y: integer; Ausgabe: TPaintbox);

function Zahlenwert: integer;

end;

Der Constructor:

constructor TStreichholz.Create();

var filename: string;

begin

inherited create;

bitmap:= TBitmap.Create;

filename:= 'Streichholz.bmp';

bitmap.LoadFromFile(filename);

Randomize;

Anzahl:=17+random(13);

end;

Wenn ich jetzt im Testprogramm die Variable Anzahl aufrufen will, kommt der Fehler:[Fehler] Unit1.pas(43): Undefinierter Bezeichner: 'Anzahl'

So sieht die Prozedur des Button Klicks aus:

procedure TForm1.Button1Click(Sender: TObject);

begin

PaintBox1.Refresh;

posX := 0;

Label1.Caption:='Anzahl: ';

Streichholz:=TStreichholz.Create;

for i:=1 to Anzahl do

begin

Streichholz.Anzeigen(posX,posY,PaintBox1);

posX := posX + 15;

end;

Label1.Caption:= Label1.Caption + InttoStr(Anzahl);

end;

Davor habe ich natürlich noch deklariert:

Streichholz:TStreichholz;

posX,posY:Integer;

i:integer;

Kann mir bitte jemand helfen?

Geschrieben

Anzahl ist ein Attribut der Klassen TStreichholz. Du brauchst also ein Streichholz-Objekt, um auf dessen Anzahl-Attribut zugreifen zu können.

Du musst also Streichholz.Anzahl schreiben.

Deine Klasse ist aber vom Designstandpunkt eher unglücklich. Eigentlich ist die Klasse nur ein Hilfscontainer für eine Variable und ein paar Methoden, und repräsentiert kein wirkliches Objekt. Ein Streichholz stellt die Klasse (trotz ihres Namens) sicher nicht dar, denn ein einzelnes Streichholz hätte kein Anzahl-Attribut.

Geschrieben

streichholz.anzahl geht auch nicht.

Ich habe jetzt der Funktion "zahlenwert" den Wert "Anzahl" zugewiesen, jetzt habe ich aber das Problem beim subtrahieren, also wenn ich den Wert "Anzahl" kleiner machen will.

case RadioGroup1.ItemIndex of

0: Streichholz.Zahlenwert:= Streichholz.Zahlenwert- 1;

Es kommt die Fehlermeldung:[Fehler] Unit1.pas(59): Der linken Seite kann nichts zugewiesen werden

wie kann ich jetzt was von Anzahl abziehen?

Geschrieben

private = von außen nicht zugreifbar, oder?

Ich habe es jetzt aber der Funktion (public) Zahlenwert zugewiesen. Oder ist dann immer noch von außen nicht zugreifbar.

Er sagt ja jetzt:

[Fehler] Unit1.pas(59): Der linken Seite kann nichts zugewiesen werden

Geschrieben
private = von außen nicht zugreifbar, oder?
Richtig.

Ich habe es jetzt aber der Funktion (public) Zahlenwert zugewiesen.
Du kannst einer Funktion nichts zuweisen. Allenfalls kannst du sie aufrufen. Deine Funktion hat aber keine Parameter.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...