AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi "Unbekannter Bezeichner" bei Eigenschaft eines Objektes
Thema durchsuchen
Ansicht
Themen-Optionen

"Unbekannter Bezeichner" bei Eigenschaft eines Objektes

Ein Thema von BillieJoe90 · begonnen am 14. Okt 2006 · letzter Beitrag vom 14. Okt 2006
Antwort Antwort
Seite 2 von 3     12 3      
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: "Unbekannter Bezeichner" bei Eigenschaft eines

  Alt 14. Okt 2006, 12:19
Nein, das geht so nicht. Du solltset dich mal mit den Grundlagen der OOP beschäftigen, dann wirst du dessen Vorteile schnell zu schätzen wissen.
Markus Kinzler
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#12

Re: "Unbekannter Bezeichner" bei Eigenschaft eines

  Alt 14. Okt 2006, 12:19
Hallo,
Zitat von BillieJoe90:
Mir ist grad eine Idee gekommen, aber ich bezweifle, dass das um zu setzen ist:
Gibt es in Delphi die Möglichkeit, einen "Link" zu setzen.
Das geht durchaus. Nennt sich Pointer. Jedes Objekt ist eigentlich ein Pointer.
Zitat von BillieJoe90:
Jetzt mal ein Beispiel:
Delphi-Quellcode:
procedure Irgendwas();
  var
    Feld:Array[1..41] of Link; //oder wie es halt heißt...
    Feld1:TGrundstueck;
    Feld2:TWasAnderes;
begin
  Feld[1] := Feld1;
  Feld[1].methodeVonTGrundstueck();
end;
Versteht ihr, was ich meine?
Das Problem ist, dass Du dann (wenn Du Link durch Pointer ersetzt) wieder nur einen untypisierten Pointer hast. Du musst also das Array so deklarieren:
Feld:Array[1..41] of TGrundstueck; Denn da Delphi keine Interpretersprache ist, gibt es auch niemanden, der zur Laufzeit den Typ ermitteln kann.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von BillieJoe90
BillieJoe90

Registriert seit: 29. Sep 2006
Ort: Bovenden
122 Beiträge
 
#13

Re: "Unbekannter Bezeichner" bei Eigenschaft eines

  Alt 14. Okt 2006, 12:21
Ich krieg die Krise...
Aber danke trotzdem für die Antworten!

Sprich, mein Problem ist "unlösbar"?
Johannes
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: "Unbekannter Bezeichner" bei Eigenschaft eines

  Alt 14. Okt 2006, 12:28
Zitat:
Sprich, mein Problem ist "unlösbar"? Sad
Dein Problem ist nicht wirklich ein Problem.

Das Prinzip der OOP ist, daß abgeleitetet Klassen, sich wie ihre Superklassen verhalten können und nicht umgekehrt.

Du könntest höchstens alle Eigenschaften der (abgeleiteten) Klassen in die Superklasse packen :

Statt
TSuperKlasse
-allg. Eigenschaften
-allg. Methoden
-> TSpezKlasse1
-Eigenschaften Spez1
-Methoden Spez1
-> TSpezKlasse2
-Eigenschaften Spez2
-Methoden Spez2

also
TIchScheissAufOOP_Klasse
-allg. Eigenschaften
-allg. Methoden
-Eigenschaften Spez1
-Methoden Spez1
-Eigenschaften Spez2
-Methoden Spez2
Markus Kinzler
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#15

Re: "Unbekannter Bezeichner" bei Eigenschaft eines

  Alt 14. Okt 2006, 12:29
Hallo,
Zitat von BillieJoe90:
Ich krieg die Krise...
Immer locker bleiben
Zitat von BillieJoe90:
Sprich, mein Problem ist "unlösbar"?
Ich weiß nicht. Was ist denn Dein Problem?

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#16

Re: "Unbekannter Bezeichner" bei Eigenschaft eines

  Alt 14. Okt 2006, 12:31
Zitat von BillieJoe90:
Aber ehrlich gesagt möchte ich das nicht immer so schreiben
Tja... was soll man dazu sagen??

Was greifst Du auch auf ein Feld zu, das TFeld nicht besitzt? Das ist soundso schon nicht sehr objektorientiert. Vielleicht ist es am besten, wenn Du einfach prozedural programmierst - Objektorientierung sieht nämlich komplett anders aus als Dein Code.
  Mit Zitat antworten Zitat
Benutzerbild von BillieJoe90
BillieJoe90

Registriert seit: 29. Sep 2006
Ort: Bovenden
122 Beiträge
 
#17

Re: "Unbekannter Bezeichner" bei Eigenschaft eines

  Alt 14. Okt 2006, 12:39
Zitat von xaromz:
Hallo,
Zitat von BillieJoe90:
Ich krieg die Krise...
Immer locker bleiben
Zitat von BillieJoe90:
Sprich, mein Problem ist "unlösbar"?
Ich weiß nicht. Was ist denn Dein Problem?

Gruß
xaromz
Mein Problem ist, dass ich Monopoly programmiere und für jeden Typ von Feld eine eigene Klasse haben möchte, trotzdem die Felder aber per Feld[i] anwählen können möchte.
Wenn mir keiner helfen kann, mache ich es so, dass eine Klasse für alle da ist und je nachdem, was für einen Typ die Instanz hat, reagieren die Methoden... Nicht sonderlich elegant, aber es wird nicht anders gehen...
Johannes
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: "Unbekannter Bezeichner" bei Eigenschaft eines

  Alt 14. Okt 2006, 12:42
Zitat:
Mein Problem ist, dass ich Monopoly programmiere und für jeden Typ von Feld eine eigene Klasse haben möchte, trotzdem die Felder aber per Feld[i] anwählen können möchte.
das kannst du doch problemlos, nur wenn du spezielle Eigenschaften bzw. Methoden der speziellen Klasse verwenden willst, mußt du dem Compiler halt sagen, daß er die Instanz als solche betrachten soll. Woher soll er es denn sonst wissen?
Markus Kinzler
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#19

Re: "Unbekannter Bezeichner" bei Eigenschaft eines

  Alt 14. Okt 2006, 12:46
Zitat von BillieJoe90:
Mein Problem ist, dass ich Monopoly programmiere und für jeden Typ von Feld eine eigene Klasse haben möchte, trotzdem die Felder aber per Feld[i] anwählen können möchte.
Wenn mir keiner helfen kann, mache ich es so, dass eine Klasse für alle da ist und je nachdem, was für einen Typ die Instanz hat, reagieren die Methoden... Nicht sonderlich elegant, aber es wird nicht anders gehen...
Na, grundsätzlich kann man das so machen, man muss aber die Arbeit DELEGIEREN! Das heißt:

NICHT je nach Typ dies oder das tun

SONDERN unabhängig vom Typ immer das gleiche tun - das ist aber bei jedem Typ anders deklariert.

Dies machst Du mit virtuellen Methoden:

Delphi-Quellcode:
type
  TPerson = class
  private
    FName: string;
  public
    property Name: string read FName write FName;
  end;

  TCommonField = class
  private
    ...
  public
    procedure Enter(APerson: TPerson); virtual; abstract;
  end;

  TNorthStation = class(TCommonField)
  private
    ...
  public
    procedure Enter(APerson: TPerson); override;
  end;

  TKnast = class(TCommonField)
  private
    ...
  public
    procedure Enter(APerson: TPerson); override;
  end;

...

procedure TNorthStation.Enter(APerson: TPerson);
begin
  ShowMessage(APerson.Name + ' auf Nordbahnhof');
end;

procedure TKnast.Enter(APerson: TPerson);
begin
  ShowMessage(APerson.Name + ' im Knast');
end;

var
  Person1: TPerson;
  Knast: TKnast;
  Nordbahnhof: TNorthStation;
  Feld: TCommonField;
begin
  Person1 := TPerson.Create;
  Person1.Name := 'Billy Joe';
  Knast := TKnast.Create;
  Nordbahnhof := TNorthStation.Create;

  Feld := Knast;
  Feld.Enter(Person1);
  
  Feld := Nordbahnhof;
  Feld.Enter(APerson);
end;
Die beiden Enter-Methoden sind jeweils anders implementiert. In deiner Prozedur bekommst Du ein Field: TCommonField und rufst lediglich Field.Enter(APerson) auf. Fertig.
  Mit Zitat antworten Zitat
Benutzerbild von BillieJoe90
BillieJoe90

Registriert seit: 29. Sep 2006
Ort: Bovenden
122 Beiträge
 
#20

Re: "Unbekannter Bezeichner" bei Eigenschaft eines

  Alt 14. Okt 2006, 13:10
An bttb930:
Das sieht gut aus
Aber folgende Fehlermeldungen:

Undefinierter Bezeichner 'ShowMessage'
Undefinierter Bezeichner 'ShowMessage'
Johannes
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 08:44 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