AGB  ·  Datenschutz  ·  Impressum  







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

Obekt-Erstellung funktioniert nicht

Ein Thema von zod1ac · begonnen am 4. Apr 2010 · letzter Beitrag vom 5. Apr 2010
Antwort Antwort
Seite 1 von 2  1 2      
zod1ac

Registriert seit: 5. Mär 2010
27 Beiträge
 
#1

Obekt-Erstellung funktioniert nicht

  Alt 4. Apr 2010, 23:12
Hallo liebe Delphi-Praxis Gemeinde,

ich habe ein kleines Problem mit den Objekten bei Delphi. Vor kurzem habe ich einen Einstieg in die Objektorientierung gemacht und wollte ein simples Programm schreiben.
Nach Betätigen des Buttons, werden drei zufällige Würfel generiert. Also Würfelaugen, die dann auf Panels ausgegeben werden.

Ich habe meinen kompletten Projektordner im Anhang, nach dem Compilen kommen keine Fehler, doch beim ButtonCLick kommt ein Fehler "Access violation....".

Ich hoffe ihr könnt mir helfen.


Danke schonmal im Voraus

mfg
Angehängte Dateien
Dateityp: rar wuerfel_513.rar (304,9 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#2

Re: Obekt-Erstellung funktioniert nicht

  Alt 4. Apr 2010, 23:23
Das Ereignis TForm1.OnCreate ist nicht zugewiesen. Beim Formular im Objektinspektor einfach noch einmal beim Eintrag für das Ereignis OnCreate doppelklicken.
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Obekt-Erstellung funktioniert nicht

  Alt 4. Apr 2010, 23:24
Bitte poste hier doch den relevanten Quellcode. Sich erst die Datei runterladen, das Archiv zu entpacken, die Datei zu öffnen, ist sehr umständlich. Da wird sich kaum einer die Mühe machen, dir helfen zu wollen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Obekt-Erstellung funktioniert nicht

  Alt 4. Apr 2010, 23:35
Zitat von Panthrax:
Das Ereignis TForm1.OnCreate ist nicht zugewiesen. Beim Formular im Objektinspektor einfach noch einmal beim Eintrag für das Ereignis OnCreate doppelklicken.
Dazu zusätzlich noch 2 Dinge: der Destruktor Destroy sollte immer überschrieben werden (Stichwort override). Und wenn Du schon eine Getter-Methode hast (getAugen) würde ich an Deiner Stelle gleich noch eine (ReadOnly-)Property Augen einführen.
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
zod1ac

Registriert seit: 5. Mär 2010
27 Beiträge
 
#5

Re: Obekt-Erstellung funktioniert nicht

  Alt 4. Apr 2010, 23:54
OnCreate hat super geklappt, und override hab ich nun auch dazugefügt. Danke Panthrax und DeddyH
Zur späten Stunde noch Hilfe erhalten--> TOP!

Danke nochmals, Gute Nacht.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Obekt-Erstellung funktioniert nicht

  Alt 4. Apr 2010, 23:57
Kein Problem, aber die Property scheinst Du nicht eingerichtet zu haben
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
zod1ac

Registriert seit: 5. Mär 2010
27 Beiträge
 
#7

Re: Obekt-Erstellung funktioniert nicht

  Alt 5. Apr 2010, 00:10
Ich muss zu meiner Schande gestehen, dass ich nicht ganz weiß, was das ist

Wenn du es mir erklären würdest, werde ich es selbstverständlich mit einbauen.

mfg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Obekt-Erstellung funktioniert nicht

  Alt 5. Apr 2010, 00:17
Alles, was Du z.B. im OI im "linken" Reiter sehen kannst, sind Properties(Eigenschaften). Eine solche zu erstellen ist ganz einfach. Für Deinen Fall:
Delphi-Quellcode:
type
  TWuerfel = class
  private
    FAugen: integer; //privates Feld
    function GetAugen: integer; //Zugriffsmethode zum Auslesen (Getter)
  public
    property Augen: integer read GetAugen; //ReadOnly-Property, da kein write vorhanden
  end;

...

function TWuerfel.GetAugen: integer;
begin
  Result := FAugen;
end;
Statt nun explizit GetAugen aufrufen zu müssen, kannst Du nun über TWuerfel.Augen direkt auf die Eigenschaft zugreifen, der Rest läuft intern ab.
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 himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#9

Re: Obekt-Erstellung funktioniert nicht

  Alt 5. Apr 2010, 06:17
Wozu erstellst du diese Augen dynamisch?

Erstelle schon alle Augen im OI und blende die Nichtbenötigten über .Visible (oder .Hide und .Show) aus/ein.


Achso, da gibt es ja noch garkeine Augen


PS: Das nächste Mal einfach erstmal schauen, ob und wann deine Prozeduren aufgerufen werden.

z.B. Haltepunkte in alle wichtige Prozeduren legen
und/oder eben auch mal im OI nachsehn.

Beim Debuggen von Button1Click hätte auch noch auffallen können, daß wuerfelo noch NIL ist und somit nie erstellt wurde. (Das geht hier ganz gut, daß Objektvariablen und globale Variablen, wie z.B. wuerfelo automatisch erstmal mit Nullen initialisiert werden)



wuerfelo solltest du uch besser in den Private-Abschnitt der Form verschieben.
> globale Variablen sind "böse"

Darum wird auch immer wieder im Forum darauf hingewiesen, daß Variablen am Besten so nah wie möglich da deklariert werden sollen, wo sie auch verwendet werden.

wuerfelo verwendest du nur innerhalb deiner Form und es wird dort auch erstellt und vernichtet, demnach gehört es quasi auch zur Form und paßt somit sehr gut in
Delphi-Quellcode:
TForm1 = class(TForm)
  ...
private
  { Private declarations }
  wuerfelo: TWuerfel;
public
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
zod1ac

Registriert seit: 5. Mär 2010
27 Beiträge
 
#10

Re: Obekt-Erstellung funktioniert nicht

  Alt 5. Apr 2010, 20:26
Vielen Dank,

so scheint es auch einfacher zu sein.

Aber nun noch eine kleine Frage. Bei mir im Programm wird die Eigenschaft "Visible" irgendwie falsch verstanden.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 repeat
  bank:=bank-1;
  panel5.Caption:=IntToStr(bank);
  if bank=0 then
  ShowMessage('Sie haben verloren'+ #13 + 'Starten Sie ein neues Spiel!');

 until bank>=0 ;
Wie kann ich es nun so einbauen. dass sobald Bank=0, der Button nicht mehr klickbar ist, also z.B. auch Visible:=false.

Wenn ich es unten in den Code schreibe, wird der Button sofort nach dem ersten Drücken nicht mehr sichtbar.

Was genau mache ich falsch?

Und nochmal ein ganz großes Lob an euch, sehr einsteigerfreundliches Board hier und nette COmmunity .
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:16 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