AGB  ·  Datenschutz  ·  Impressum  







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

Delphi zählt falsch

Ein Thema von Coder · begonnen am 16. Jan 2005 · letzter Beitrag vom 17. Jan 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 17:55
@Hansa: Man sollte aber nicht alles in Protected packen sondern nur das was für abgeleitete Klassen wirklich nötig ist. Wenn man zum beispiel einen grafischen Button als Komponente programmiert so braucht man in aller regel nur die Canvas unter Protected lassen (was ja glaub ich schon von je her so ist). Alles andere braucht nicht mehr angerührt werden. Naja, warum schreib ich das überhaupt, so wie sich dein Post anhört bist du einer der wenigen die das Konzept der OOP richtig verstanden haben und auch umsetzen (ich bin leider einer der nicht so ganz konsquenten - ich änder dann wenn ich abgeleitet habe erst die Basisklassen um wenn ich mitbekomme das ich doch auf irgend eine private-variable/methode zugreifen muss)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 18:21
Zitat von Hansa:
Dann wäre ich aber ein ganz seltener Ideologe.
Ich schrieb von Felder/Attribute und nicht von Eigenschaften (property)

Sowas wie
Delphi-Quellcode:
protected
  FMyField: TMyType;
end;
meinte ich.


Delphi-Quellcode:
protected
  property MyField: TMyType read FMyField;
end;
ist natürlich erlaubt
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 18:55
[OFF-Topic]

Zitat von jbg:
Zitat von Coder:
warum darf ich nicht Application.terminate nehmen?
Weil Application.Terminate einige Events auslässt, weil es mehr für einen abrupten Programmabbruch gedacht ist.
Was durchaus beabsichtigt sein kann. Von einer verbotenen Nutzung im Sinne von "nicht dürfen" kann also keine Rede sein. Allerdings sollte man sich dann auch nicht wundern, wenn z.B. die Form.OnClose-Routine nicht abgearbeitet wird.

[/OFF-Topic]
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 21:12
Zitat von jbg:
Ich schrieb von Felder/Attribute und nicht von Eigenschaften (property)

Sowas wie
Delphi-Quellcode:
protected
  FMyField: TMyType;
end;
meinte ich.
Was soll den damit sein ?

Konkretes Beispiel :

Delphi-Quellcode:
  protected
    ArtNr : string;
    ArtGef : boolean;
    VonArtNr,
    BisArtNr : integer;
...
    KommaCols : set of byte;
...
Das ist bei weitem nicht alles. Ungefähr so sieht die class aus, die ich verwende, um einen Artikel zu erfassen. Ob das sich jetzt um den Lagerbestand oder eine Rechnungsposition handelt, das ist völlig egal. Der Artikel muß nur da sein.

Es ist doch wohl schon mal grundlegend, zu wissen, ob ein Artikel vorhanden ist. Ist das nicht der Fall so kann ich eben keinen Lagerbestand usw. abspeichern. Und anderes auch nicht. Die Variable "ArtGef" muß also auch dem Lagerbestand zugänglich sein. Ansonsten müßte sie neu definiert und ausgewertet werden, was die vorhandene Form aber so oder so schon macht. Ergo : Rad neu erfinden und zig-fach verwalten. Es ist schon erschreckend, zu sehen, daß das OOP Konzept so gut wie nirgends berücksichtigt und offensichtlich auch ncht gelehrt wird.

Und wie so was mit private gehen soll, das soll mir erst mal einer sagen.
Gruß
Hansa
  Mit Zitat antworten Zitat
moritz

Registriert seit: 18. Apr 2003
1.037 Beiträge
 
#15

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 21:27
So, hier mal mein Kommentar dazu:
1) Was ist an dem Programm so toll, dass man es mit einem Passwort schützen muss?
2) Du pack's JPEG-Dateien... Das ist in etwa so sinnvoll, wie eine ZIP-Datei zweimal zu packen
3) Der Code sollte etwas formatiert sein, sonst kann man da nichts lesen
4) Was soll das Programm machen?
"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#16

Re: Delphi zählt falsch

  Alt 17. Jan 2005, 00:48
Zitat von Hansa:
Und wie so was mit private gehen soll, das soll mir erst mal einer sagen.
Die vielen Felder in protected sind die "Tippfaule" Variante, die ich zugegebenermaßen auch manchmal verwendet. Man tippt eben nicht gerne viel.

Die (reine) Theorie der Kapselung würde das aber lieber so sehen.
Delphi-Quellcode:
private
    FArtNr : string;
    FArtGef : boolean;
    FVonArtNr,
    FBisArtNr : integer;
...
    FKommaCols : TByteSet;
  protected
    property ArtNr: string read FArtNr write FArtNr;
    property ArtGef: Boolean read FArtGef write FArtGef;
...
Dadurch wäre es nämlich möglich, die Datenstruktur neu zu organisieren, ohne das nach außen etwas verändert wird. (Tritt aber bei End-Anwendungen nicht so häufig auf. Bei Komponentenbibliotheken hingegen sehr oft).

Wobei Leute, die keine Ahnung von Delphi haben, sich hierbei auch Fragen würden, ob das denn wirklich gekapselt ist, da man doch
MyInstance.ArtNr := '1234'; schreiben kann und nicht wie in Java ein
Code:
MyInstance.setArtNr("1234");
nutzt. (habe ich erst kürzlich gehört).
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#17

Re: Delphi zählt falsch

  Alt 17. Jan 2005, 01:23
Zitat von Hansa:
Was soll den damit sein ?

Konkretes Beispiel :

Delphi-Quellcode:
  protected
    ArtNr : string;
    ArtGef : boolean;
    VonArtNr,
    BisArtNr : integer;
...
    KommaCols : set of byte;
...
Das ist bei weitem nicht alles. Ungefähr so sieht die class aus, die ich verwende, um einen Artikel zu erfassen. Ob das sich jetzt um den Lagerbestand oder eine Rechnungsposition handelt, das ist völlig egal. Der Artikel muß nur da sein.
Gutes Beispiel wie es nicht gehen sollte.
Warum haben die Nachfahren von Artikel schreibenden Zugriff auf die Artikelnummer?
Im allgemeinen lasse ich Nachfahren nur dann auf Felder zugreifen, wenn ich es für konsistent halte. (Wobei ich auch dann höchsten den Setter als virtual deklariere )
Denn hast du auf einmal einen falschen Schlüssel geht die Sucherei los. Haben die Nachfahren keinen schriebenden Zugriff, kann er nur beim Erzeugen der Instanz oder in TArticle zersägt worden sein.


Zitat von Hansa:
Die Variable "ArtGef" muß also auch dem Lagerbestand zugänglich sein. Ansonsten müßte sie neu definiert und ausgewertet werden, was die vorhandene Form aber so oder so schon macht. Ergo : Rad neu erfinden und zig-fach verwalten.
Wie du unten siehst stellt es kein Problem dar.
Zitat von Hansa:
Es ist schon erschreckend, zu sehen, daß das OOP Konzept so gut wie nirgends berücksichtigt und offensichtlich auch ncht gelehrt wird.
Finde ich auch.
Zitat von Hansa:
Und wie so was mit private gehen soll, das soll mir erst mal einer sagen.
Bitte schön:
Delphi-Quellcode:
type TArticle = class
private
  fArtNr : string;
...
published
  property ArtNr :string read fArtNr;
...
public constructor Create(const aArtNNr :string);
end;

type TSomeDescendant = class(TArticle)
...
public constructor Create(const: aArtNr: string; aSomeProperty :TSomeType);
...
end;
implementation

constructor TArticle.Create(const: aArtNr: string);
begin
  inherited Create();
  fArtNr := aArtNr;
end;

constructor TSomeDescendant.Create(const: aArtNr: string; aSomeProperty :TSomeType);
begin
  inherited Create(aArtNr);
  fSomeProperty := aSomeProperty;
end;
Wobei published properties nur Sinn machen, wenn man auf RTTI-Funktionen zurückgreifen möchte oder das Delphi-Streaming-System verwendet. (zum Beispiel in der Kombi TReader/TWriter & TCollection oder als persistente Einstellungen im OI).
Im Normalfall sollte public reichen. (Oder halt protected, wenn es nur die Nachfahren sehen sollen)

Zitat:
Wobei Leute, die keine Ahnung von Delphi haben, sich hierbei auch Fragen würden, ob das denn wirklich gekapselt ist, da man doch MyInstance.ArtNr := '1234'; schreiben kann und nicht wie in Java ein
Zitat:
MyInstance.setArtNr("1234");
nutzt. (habe ich erst kürzlich gehört).
Hihi Java und seine expliziten Properties. Ohne die wäre Java eine recht hübsche Sache.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18

Re: Delphi zählt falsch

  Alt 17. Jan 2005, 03:05
@jbg : verstehe jetzt, was du meinst. 8) Und das in der Tat etwas Ideologie. Ich mache die Felder gleich protected und Du machst sie private, aber brauchst noch zusätzliche protected Zugriffsprozeduren. Bei Komponenten siehts auch wieder anders aus. Ich habe allerdings nur ca. 10 eigene. Zumindest sind soviele da, in eigenem Registerreiter. Die habe ich auch in diesem Stil gemacht. Allerdings kommt das eher von den Beispielen, die ich als Anregung genutzt habe. Und das ist auch wieder ein anderes Thema. Wenn z.B. nur die DCU, oder überhaupt etwas weitergegeben wird, was ableitbar sein soll, dann siehts total anders aus. Bei mir ist das aber egal, weil sowieso nur die EXE raus geht.

Zitat von Robert_G:
Gutes Beispiel wie es nicht gehen sollte.
Du hast gerade noch gefehlt. Tja, was nicht gehen sollte, das geht aber trotzdem. Manchmal hat die Praxis eben schon ihre Vorzüge vor der Theorie. Und die protected Felder aufzusplitten in private Felder und protected Property-Prozeduren bringt keinen Zusatznutzen. Ich befürchte fast, die Wahrscheinlichkeit ist sogar höher, daß sich ein bloßer Tipfehler schlimmer auswirkt und schlechter ausfindig zu machen ist. Produktiver ist es wohl kaum.

Im Zusammenhang ist auch wieder die Objektablage interressant. Meine protected Felder liegen nämlich auf der Form. Und eine davon abstammende führt eventuell noch was neues ein, muß es aber nicht. Der Rest stammt vom Vorgänger. Wenn das Ganze nun sorgfältig hierarchisch aufgebaut ist, dann sehe ich kein Problem.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#19

Re: Delphi zählt falsch

  Alt 17. Jan 2005, 11:19
1) ich verschlüssel prinzipiell, wenn ich Daten woanders ablege. s.o. 7zip
2) das Zip hatte nur die Aufgabe alle Dateien zusammenzuhalten.
Du möchtest doch nicht jede Datei einzeln herunterladen, oder?
daß jpg schon maximal komprimiert ist (ok, bis auf 1-2% die da noch rauszuholen sind)
3) ich weiß.. ich hatte es aber nicht verändern wollen
3) es erstellt einen String aus dem nachher ein Bild [punkte,farbe] berechnet wird.
  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 08:12 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