AGB  ·  Datenschutz  ·  Impressum  







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

Überkreuzender Bezug 2er Units :(

Ein Thema von Spiderpig_GER_15 · begonnen am 7. Mai 2008 · letzter Beitrag vom 8. Mai 2008
Antwort Antwort
Seite 2 von 2     12   
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Überkreuzender Bezug 2er Units :(

  Alt 7. Mai 2008, 16:49
Hi, ich glaube du machst einen elementaren Fehler mit Objekten, auch wenn dein akutes Problem jetzt gelöst scheint.

Zitat von Spiderpig_GER_15:
[...]
ABER, ich kann nur von meiner Main Unit auf meinen Mario zugreifen(Wenn ich einen Punkt mache erscheint dieses Menü) und wenn ich In Meiner TMyMario Unit "MyMario.*Punkt*" eingebe, kommt Fehler in Quelltext.
[...]
Aus welchem Grunde solltest du in der TMyMario - Unit auf (das interpretiere ich jetzt einfach mal so) das Objekt MyMario welches du in der Main erstellst, zugreifen?

Du solltest doch alles was du mit der Klasse machen willst innerhalb der Klasse zur Verfügung haben/durch Funktionen an die Klasse übergeben.

um mkinzler zu zitieren
Zitat:
prüfe mal dein Objektdesign!
(Ich hoffe du sprichst grad auch von OOP )

[edit]fehlerteufel[/edit]
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#12

Re: Überkreuzender Bezug 2er Units :(

  Alt 7. Mai 2008, 17:12
also das ist soweit correct interpretiert, aber ich bin mir keiner Schuld bewusst,
denn ich habe meine Methoden(MyMario.GoRight) von MyMario in der Unit TMyMario.
Und dafür muss ich wohl oder übel folgendes eingeben:

Delphi-Quellcode:

//In der Unit TMyMario

procedure TMario.GoRight;
begin
MyMario.X:=MyMario.X+5;
end;
und so wie es im Moment ist funktioniert es!

und was soll denn da falsch sein?

MfG Spiderpig
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#13

Re: Überkreuzender Bezug 2er Units :(

  Alt 7. Mai 2008, 17:15
Zitat von Spiderpig_GER_15:
Delphi-Quellcode:
//In der Unit TMyMario
procedure TMario.GoRight;
begin
MyMario.X:=MyMario.X+5; // hier ist was FALSCH!
end;
Also wenn Du das so machst, wunder dich später mal nicht über Exceptions!

Da gehört folgendes hin:
Delphi-Quellcode:
//In der Unit TMyMario
procedure TMario.GoRight;
begin
 X := X + 5; // hier ist was richtig!
end;
Gruß Assertor

Edit: Und überleg mal genau, warum. Was ist eine Klasse?
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#14

Re: Überkreuzender Bezug 2er Units :(

  Alt 7. Mai 2008, 17:37
Zitat von Assertor:
Edit: Und überleg mal genau, warum. Was ist eine Klasse?
ähm was denn? Warum ist das denn jetzt richtiger?, was sind exceptions und warum funktioniert es dann trotzdem?

MFG

Spiderpig

Habe das jetzt geändert, und die Unit Main aus Unit TMyMario wieder ausgebunden(Das sollte ich ja tun?!), die Stelle mit dem X funktioniert, jetzt kann ich aber nicht mehr auf MyImageList zugreifen, und das geht nur dann wieder, wenn ich die Unit wieder einbinde
Also muss ich die Unit Main doch drinnen lassen?!
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#15

Re: Überkreuzender Bezug 2er Units :(

  Alt 8. Mai 2008, 11:30
Zitat von Spiderpig_GER_15:
Warum ist das denn jetzt richtiger?
Weil Du dich innerhalb einer Klasse, auf eine einzelne Klasseninstanz beziehst. Das kann nur Probleme machen. Bei Dir geht es diesmal gut, weil es die Instanz gibt. Wenn diese Instanz mal anders heißt, wirft der Compiler eine Fehlermeldung, wenn Sie aber da ist, jedoch noch nicht Erzeugt, gibt es eine Exception.

Kurze Analogie:
- Klasse: Grüne Autos
- Klasseninstanz: Ein (bestimmtes) grünes Auto

Zitat von Spiderpig_GER_15:
was sind exceptions und warum funktioniert es dann trotzdem?
Exceptions sing grob vereinfacht Fehlermeldungen:
http://www.delphi-treff.de/tutorials...shkurs/page/9/

Zitat von Spiderpig_GER_15:
...jetzt kann ich aber nicht mehr auf MyImageList zugreifen, und das geht nur dann wieder, wenn ich die Unit wieder einbinde. Also muss ich die Unit Main doch drinnen lassen?!
Ich habe keine Anhang, wo Deine "MyImageList" deklariert ist *Glaskugel such*

Ansonsten mal grob die Empfehlung für ein günstiges Anfängerbuch:
Amazon Delphi Einsteiger Buch

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Überkreuzender Bezug 2er Units :(

  Alt 8. Mai 2008, 11:38
Zitat von Spiderpig_GER_15:
Zitat von Assertor:
Edit: Und überleg mal genau, warum. Was ist eine Klasse?
ähm was denn? Warum ist das denn jetzt richtiger?, was sind exceptions und warum funktioniert es dann trotzdem?
Geh mal davon aus du willst 2 TMyMario-Objekte erzeugen, dann haste im Main MyMario und MyMario2. Wenn du das nach der korrekten Methode wie durch Assertor beschrieben machst, kannst du wunderbar mit beiden MyMarios arbeiten. Was würde denn bei deinem Source passieren, wenn nur MyMario2 schon erzeugt ist, und du dann auf deine GoRight Funktion zugreifst. Genau!: Eine Exception (Ausnahmefehler) würde auftreten.

Befasse dich nochmal mit den Grundlagen der objektorientierten Programmierung. Dann wird dir einiges klarer sein.

Zitat:

MFG

Spiderpig

Habe das jetzt geändert, und die Unit Main aus Unit TMyMario wieder ausgebunden(Das sollte ich ja tun?!), die Stelle mit dem X funktioniert, jetzt kann ich aber nicht mehr auf MyImageList zugreifen, und das geht nur dann wieder, wenn ich die Unit wieder einbinde
Also muss ich die Unit Main doch drinnen lassen?!
Wenn du innerhalb der Klasse ein Imagelist benötigst, warum übergibst du die imagelist nicht an die Klasse?

Grobes BeispieL:
Delphi-Quellcode:
  TMyMario = class(TObject);
private
FMyImgList: TImageList;
public
property MyImgList: TImageList read FMyImgList write FMyImgList;
[...]
end;
Ansgar
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:59 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