AGB  ·  Datenschutz  ·  Impressum  







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

OOP: Property Problem

Ein Thema von Antigo · begonnen am 10. Apr 2005 · letzter Beitrag vom 10. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#1

OOP: Property Problem

  Alt 10. Apr 2005, 11:57
HI,
Ich arbeite jetzt zum ersten mal richtig mit Properties. Mir ist zwar nicht ganz klar wo die Vorteile gegenüber dem direkten Ansprechen von Feldern sind, aber ich wollte das ganze mal richtig OO programmieren.

So mein Problem ist das ich 2 Klassen haben, die beide eine Array haben. Die zweite Klasse hat ein Array eines records.

so ungefähr siehts aus:

Delphi-Quellcode:
type Teins = record
  name: String;
  ...
end;

type Tzwei = class
  myarray: array [1..10] of Teins;
end;

type Tdrei = class
  my2ndarray = array of Tzwei;
end;
So und nun weiss ich nicht wirklich wie ich am besten auf diese Felder zugreife. Ich muss auf alles read und write Zugriff haben. Möchte aber nicht per
property blub[index: Integer]:Tzwei read getblub write setblub; das ganze machen da ich dann ja immer alles verändern muss. Möchte aber gern ganz normal wie bei einem simplen record auf die Felder zugreifen. Quasi so:
Delphi-Quellcode:
var myVar: Tdrei;

begin
  myvar:=Tdrei.create;
  myvar.my2ndarray[5].myarray[6].name:='Bla';
end;
Ich weiss das ist sehr diffus erklärt aber irgendwie bin ich sehr verwirrt und weiss nicht wie ich das lösen soll. Ich bitte um Hilfe.


schonmal danke im vorraus
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#2

Re: OOP: Property Problem

  Alt 10. Apr 2005, 12:08
Ich habe das jetzt nicht probiert, aber so wie du es hier geschrieben hast, müsste es doch gehen?!

Oder möchtest du das Lesen und Schreiben überwachen? Wenn nicht, kannst du den Code so lassen, es sind dann keine Properties, sondern Variablen. Natürlich musst du sie dann auch so verwalten (SetLength(...) usw.)
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: OOP: Property Problem

  Alt 10. Apr 2005, 12:11
Hi,

du könntest das versuchen:
Delphi-Quellcode:
TEinsArray = array[1..10] of TEins;

// ...
type
  TZwei = class
  private
    FEins: TEinsArray;
  public
    property MyArray: TEinsArray read FEins {write FEins}; // ggf. ist schreibzugriff erforderlich
end;
Du könnttest aber auch TList bzw. TObjectList statt dyn. Arrays verwenden, ist vllt. einfacher.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#4

Re: OOP: Property Problem

  Alt 10. Apr 2005, 12:18
ahh gut dann war das ein Verständnis Problem auf meiner Seite. Danke für die Tipps
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#5

Re: OOP: Property Problem

  Alt 10. Apr 2005, 16:45
also ich hab das jetzt genau so gelöst. Aber wenn ich dann auf eine Eigenschaft, egal ob read oder write zugreifen will bekomme ich folgenden Fehler:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project2.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0045A343 in Modul 'Project2.exe'. Lesen von Adresse 00000004'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
fällt einem da zufällig etwas ein. Ich hab absolut keine Ahnung mehr.

edit: bin mal die einzelanweisungen durchgegangen. Es muss daran liegen. Ich mache folgendes:

label.caption:=instanz.myArray[0].name;

und genau dabei hängt er sich auf
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#6

Re: OOP: Property Problem

  Alt 10. Apr 2005, 16:53
Bist du sicher das du jede einzelne klasse auch mit create kreierst? (da du ja ein array von einer klasse hast)
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#7

Re: OOP: Property Problem

  Alt 10. Apr 2005, 16:56
oh man. weisst du wielange ich dadran jetzt gesessen habe. Ich danke dir
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: OOP: Property Problem

  Alt 10. Apr 2005, 16:56
Du lagst mit der Array Property schon fast richtig.
Dein Problem werden wohl die Records sein. (Oder die Tatsache, dass du das erste Array nicht mit Instanzen füllst)
Ein Record wird ja kopiert wenn du ihn zuweist. Somit ist das Ergebnis des Getters eine KOPIE des Records, den du ausgeben willst.
Änderst du jetzt ein Feld des Records landet es NICHT in dem Record, den du vorher ausgespuckt hast.

Nehme statt den Records Klassen und es sollte prima klappen. Außerdem solltest du die Arrays ersetzen.
Weder Records noch Arrays haben viel mit OO Programierung zu tun.
Ein Array-like Ersatz für ein Array wäre TList (verwendet das Array intern).
Wobei ich in 90% aller Fälle zu einer richtigen Liste greifen würde. (Dazu sollte es in der DP auch genug Beispiele geben. )
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#9

Re: OOP: Property Problem

  Alt 10. Apr 2005, 17:02
ich hab bis jetzt erst einmal mit einer TObjectList gearbeitet, und das war schon komfortabel. Aber wo liegt jetzt der Unterschiede zu einer"richtigen" Liste?

Würd mich über ein paar mehr Infos sehr freuen
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#10

Re: OOP: Property Problem

  Alt 10. Apr 2005, 17:03
Kein Problem.

Übnrigens um mal darauf:

Zitat:
Mir ist zwar nicht ganz klar wo die Vorteile gegenüber dem direkten Ansprechen von Feldern sind
zurückzukommen:

Es gibt Felder die über Properties nur gelesen werden sollten. Sagen wir mal Du hast eine ClientSocket Komponente geschrieben die das flag "FConnected"(Boolean) hat. Wenn du hier keine Property benutzt, könnten Klassen die von dieser Klasse erben (sofern FConnected im protected-Bereich ist), diese variable beschreiben. Da FConnected aber in der Hauptklasse bei Verbindung/Trennung beschrieben wird, hat eine Nachfolger-Klasse daran nichtsmehr zu ändern. D.h sie sollte nur mit read gelesen werden.

Das war jetzt nur ein Beispiel, aber es gibt noch andere dafür :]
Mario
MSN: cyanide@ccode.de
  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 20: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