Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Prism Anfänger-Frage: Wie erstellt man Objektinstanzen (https://www.delphipraxis.net/92236-anfaenger-frage-wie-erstellt-man-objektinstanzen.html)

Dhonkas 16. Mai 2007 16:34


Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Hi!!

Ich habe folgendes Problem: Ich muss für meinen Informatikkurs ein Spiel schreiben und dabei wollte ich ein Männchen rumlaufen lassen das mit einem Mausklick Pfeile verschießt. Die Pfeile wären TImages.

Nun stellen sich 2 Probleme:
Das erste (und eigentlich unwichtigere) ist, dass ich nun dauernd die Meldung "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt" kriege, nachdem ich klicke und das Programm schließe (aber das liegt wahrscheinlich daran, dass ich momentan den einen Pfeil immer wieder verschießen lasse und die Schleife die ich für die Bewegung des Pfeils programmiert habe dafür nicht geeignet ist).
Das zweite Problem (welches wahrscheinlich das erste auch löst) ist, dass ich gerne mehrere Pfeile auf dem Bildschirm hätte, da momentan das TImage immer nur verschoben wird, und da habe ich mir gedacht, dass man das doch mit Instanzen des TImages machen könnte... leider weiß ich nicht, wie man Objektinstanzen erstellt und ich habe auch nichts hilfreiches im Inet gefunden.

Ich wäre daher für jede Hilfe sehr dankbar!!

MfG Dhonkas

mkinzler 16. Mai 2007 16:36

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Delphi-Quellcode:
<objekt> := <Klasse>.Create(<Owner>);

Khabarakh 16. Mai 2007 17:00

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Zitat:

Zitat von Dhonkas
"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt"

Die Meldung deckt sich zwar mit der Angabe der Sprache, aber dass du VCL.Net verwendest, spricht wiederum ziemlich dagegen. Deshalb eine Frage zur Sicherheit: Bist du dir bewusst, dass du nicht mit dem "normalen" Delphi, sondern mit Delphi.Net programmierst?

Dhonkas 16. Mai 2007 21:08

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Zitat:

Zitat von Khabarakh
Zitat:

Zitat von Dhonkas
"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt"

Die Meldung deckt sich zwar mit der Angabe der Sprache, aber dass du VCL.Net verwendest, spricht wiederum ziemlich dagegen. Deshalb eine Frage zur Sicherheit: Bist du dir bewusst, dass du nicht mit dem "normalen" Delphi, sondern mit Delphi.Net programmierst?

Ehm... Was macht das denn genau für einen Unterschied (ich würde ohnehin keine .net Komponenten verwenden...)?


Zitat:

Zitat von mkinzler
Delphi-Quellcode:
<objekt> := &lt;Klasse&gt;.Create(&lt;Owner&gt;);

Danke dazu, aber leider bin ich ein zu großer Anfänger um diese Theorieform in die Praxis umzusetzen, wie also würde denn ein Beispielcode für so etwas aussehen?

mkinzler 16. Mai 2007 21:14

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Am Beispiel eine s Images:

Delphi-Quellcode:
var
    img: TImage;
...
begin
    img := TImage.Create( Self);
    img.Parent := Self;
    img.Top := ...;
...

Khabarakh 16. Mai 2007 21:22

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Zitat:

Zitat von Dhonkas
Ehm... Was macht das denn genau für einen Unterschied (ich würde ohnehin keine .net Komponenten verwenden...)?

Genau das ist das Problem: Nach den ersten paar Zeilen wirst du keinen Unterschied bemerken, aber insgesamt sind es zwei verschiedene Welten (Plattformen), die Unterschiede sind riesig.

Dhonkas 16. Mai 2007 21:24

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Ahhh, ich glaub ich habs verstanden!!

Thx @ lot :D

MfG Dhonkas

Dhonkas 17. Mai 2007 12:00

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Ich hab jetzt doch noch eine Frage:

Wie kann ich die TImage Instanzen automatisch nummerieren lassen (also z.B. TImage1, TImage2 usw.)?

Apollonius 17. Mai 2007 12:07

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Nimm am besten ein Array von TImages oder eine TObjectlist in der Unit contnrs. Jedes Image ist ja sonst eine Variable, und der Zugriff wird extrem lästig.

Dhonkas 17. Mai 2007 12:16

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Zitat:

Zitat von Apollonius
Nimm am besten ein Array von TImages oder eine TObjectlist in der Unit contnrs. Jedes Image ist ja sonst eine Variable, und der Zugriff wird extrem lästig.

Und wie mach ich so was konkret?

Apollonius 17. Mai 2007 12:26

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Wenn du ein dynamisches Array nehmen willst:
Delphi-Quellcode:
var meineBilder: array of TImage;
begin
setlength(meineBilder,1 {<--so viele Bilder möchte ich haben});
meineBilder[0]:=TImage.create(meinFormular); //Achtung, der erste Index von meineBilder ist 0!
//alle möglichen Sachen machen
//und am Schluss
meineBilder[0].free;
end;
Für die Objectlist must du dich irgendwo einlesen, die Hilfe kann da auch ganz nützlich sein.
Hoffe geholfen zu haben
Apollonius

Jelly 17. Mai 2007 12:26

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Zitat:

Zitat von Dhonkas
Und wie mach ich so was konkret?

Indem du die Suchfunktion im Forum nutzt und Dir mal die Grundlagen von Programmierung mit Delphi reinziehst.
Aber mal kurz ne Einleitung:
TObjectList ist eine Klasse unter Delphi, wie jede andere auch. Und Du hast doch mittlerweilen gelernt, dass man eine Klasse instanzieren muss, um damit zu arbeiten. Also genauso bei TObjectList. Übrigens, beim Instanzieren wird ein constructor der Klasse aufgerufen. Die nötigen Parameter im Constructor hängen dabei von der Implemtierung ab (TImage hat z.B. einen Owner gebraucht, der im obigen Beispiel einfach mit Self angegeben wurde).

Delphi-Quellcode:
var
  MyList : TObjectList ;
begin
   MyList := TObjectList.Create ;
end ;
Jetzt ist MyList eine TObjectList Instanz, mit der du machen kannst, was dir diese Klasse bietet. Schlag in der Delphi Hilfe nach, was TObjectList an Methoden (Prozeduren und Funktionen) bietet, und du verstehst was du damit machen kannst: sie kann nämlich beliebe andere Objekte als Liste verwalten. Dafür gibt es dann bequeme Methode zum Hinzufügen neuer Objekte (Add), zum Löschen von Elementen (Delete), zum Sortieren der Liste (Sort), und einige Eigenschaften wie z.B. Anzahl der Elemente (Count).

Das ist doch schon mal ein Anfang, oder? Jetzt lies dich bitte in irgendwelche Quellen ein, um das Ganze bischen tiefer zu verstehen. Das Forum ist nicht dafür da, um dir eine Schulung in Delphi zu geben, sondern um konkrete Fragen zu beantworten. Wenn aber die Basis fehlt, so wird das etwas schwierig, dir in 3 Absätzen das Gesamtpaket Delphi beizubringen.

Dhonkas 17. Mai 2007 12:33

Re: Anfänger-Frage: Wie erstellt man Objektinstanzen
 
Thx euch beiden, jetzt müsste eigentlich auch alles passen, was davor nicht gepasst hat... das heißt auch keine weiteren stupiden Fragen...

MfG Dhonkas


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz