AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Erläuterungen zu einem Delphi Programm ..
Thema durchsuchen
Ansicht
Themen-Optionen

Erläuterungen zu einem Delphi Programm ..

Ein Thema von Luemmler · begonnen am 19. Apr 2009 · letzter Beitrag vom 12. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Luemmler

Registriert seit: 19. Apr 2009
13 Beiträge
 
#1

Erläuterungen zu einem Delphi Programm ..

  Alt 19. Apr 2009, 15:11
Hey Leute,

ich bin ein absoluter Informatik Neuling und möchte mir so einige Grundsachen selbst beibringen. Momentan versuche ich mit Delphi 2005 (Turbo Pascal) und UML zu arbeiten. Von einem Freund habe ich mir einige seiner teilweise unvollständigen Programme zuschicken lassen, die ich dann nach und nach selbst vervollständige. Allerdings blicke ich bei folgendem Programm absolut nicht durch und weiß nicht was zu tun ist...


Delphi-Quellcode:
UNIT Literaturliste;

interface

//-------------------- ggf Uses-Liste anpassen ! --------------------
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
     Forms, Dialogs, StdCtrls, mTLiteratur, mListe, msum,
     mTLiteraturliste;
//uses mTForm ??

type
  TForm1 = class(TForm)

  // published Attribute
    BtnHinzufuegen : TButton;
    EdAutor : TEdit;
    EdISBN : TEdit;
    EdJahr : TEdit;
    EdOrt : TEdit;
    EdTitel : TEdit;
    EdVerlag : TEdit;
    Label1 : TLabel;
    Label2 : TLabel;
    Label3 : TLabel;
    Label4 : TLabel;
    Label5 : TLabel;
    Label6 : TLabel;
    Memo1 : TMemo;
    procedure FormActivate(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  // published Methoden
    procedure BtnHinzufuegenClick (Sender: TObject); // nicht überschreibbar

  private //Attribute
    hatBuch : TLiteratur;
    hatLiteraturliste : TLiteraturliste;

     //Objektbeziehungen:
        // hatTLiteraturliste : TLiteraturliste;

   end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

//+---------------------------------------------------------------------
//| TForm1: Methodendefinition
//+---------------------------------------------------------------------

//-------- BtnHinzufuegenClick (published) --------------------------------
procedure TForm1.BtnHinzufuegenClick (Sender: TObject);
begin
hatBuch:=TLiteratur.init(edAutor.Text,edTitel.Text,edVerlag.Text,edOrt.Text,edISBN.Text,edJahr.Text);
hatLiteraturliste.ZumEnde;
hatLiteraturliste.haengeAn(hatBuch);
edOrt.Clear;
edAutor.Clear;
edJahr.Clear;
edISBN.Clear;
edTitel.Clear;
edVerlag.Clear;
hatLiteraturliste.anzeigen;
end;

//-------- FormActivate (published) ---------------------------------------
procedure TForm1.FormActivate(Sender: TObject);
begin
      hatLiteraturliste:=TLiteraturliste.init;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
hatLiteraturliste.gibFrei;
end;


end.




-----------------------------

if self.istLeer
    then
      begin
            kenntMemoAnzeige.Lines.Add('-- leer --')
      end
        else
         begin
           while not self.istLeer do begin

              kenntMemoAnzeige.Lines.Add(self.MemoAlsLiteratur.autor+' '+self.MemoAlsLiteratur.titel+' '+self.MemoAlsLiteratur.Ort+' '+self.MemoAlsLiteratur.Jahr+' '+self.MemoAlsLiteratur.isbn+' '+self.MemoAlsLiteratur.verlag+' ') ;//(self.KopfAlsPatient.Name + ' '
              lListe.haengeAn(self.MemoAlslIteratur);
              lLISTE.haengeAn(self.memoalsliteratur);
              self.entferneaktuelles
          end;

        while not lLiSTE.istLeer do
           begin
              self.haengeAn(lListe.MemoAlsLiteratur);
                   lListe.entferneAKTUELLES ;
           end;

              lListe.gibfrei;

              end;

          end;


//-------- lerneMemoKennen (public) ------------------------------------
procedure TLiteraturliste.lerneMemoKennen (pMemo: TMemo);
begin
  kenntMemoAnzeige:= pMemo;
end;



//-------- MemoAlsLiteratur (public) -----------------------------------
function TLiteraturliste.MemoAlsLiteratur : TLiteratur;
begin
   self.zumAnfang;
  result:=TLiteratur(self.aktuelles);
end;

end.

--------------------------

UNIT mTLiteratur;

interface

//-------------------- ggf Uses-Liste einfügen ! --------------------
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;

type
  TLiteratur = class

  private //Attribute
    zAutor : String;
    zISBN : String;
    zJahr : String;
    zOrt : String;
    zTitel : String;
    zVerlag : String;

  public //Methoden
    constructor init (pTitel: String; pAutor: String; pVerlag: String; pJahr: String; pOrt: String; pISBN: String); virtual;
    procedure gibFrei; virtual;
    function autor : String; virtual;
    function isbn : String; virtual;
    function jahr : String; virtual;
    function ort : String; virtual;
    function titel : String; virtual;
    function verlag : String; virtual;

   end;

implementation

//+---------------------------------------------------------------------
//| TLiteratur: Methodendefinition
//+---------------------------------------------------------------------

//-------- init (public) -----------------------------------------------
constructor TLiteratur.init (pTitel: String; pAutor: String; pVerlag: String; pJahr: String; pOrt: String; pISBN: String);
begin
  zAutor:= pAutor;
  zTitel:= pTitel;
  zVerlag:= pVerlag;
  zJahr:= pJahr;
  zOrt:= pOrt;
  zISBN:= pISBN;
end;

//-------- gibFrei (public) --------------------------------------------
procedure TLiteratur.gibFrei;
begin

end;

//-------- autor (public) ----------------------------------------------
function TLiteratur.autor : String;
begin
  autor:= zAutor;
end;

//-------- isbn (public) -----------------------------------------------
function TLiteratur.isbn : String;
begin
  isbn:= zISBN;
end;

//-------- jahr (public) -----------------------------------------------
function TLiteratur.jahr : String;
begin
  jahr:= zJahr;
end;

//-------- ort (public) ------------------------------------------------
function TLiteratur.ort : String;
begin
  ort:= zOrt
end;

//-------- titel (public) ----------------------------------------------
function TLiteratur.titel : String;
begin
  titel:= zTitel;
end;

//-------- verlag (public) ---------------------------------------------
function TLiteratur.verlag : String;
begin
  verlag:= zVerlag;
end;

end.


---------------------------

UNIT mTListe;

interface

//-------------------- ggf Uses-Liste einfügen ! --------------------
//uses ....;

type
  TListe = class

   end;

implementation

//+---------------------------------------------------------------------
//| TListe: Methodendefinition
//+---------------------------------------------------------------------

end.
ich hoffe ihr bringt ein wenig licht in diese Sache


mfg

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Erläuterungen zu einem Delphi Programm ..

  Alt 19. Apr 2009, 15:15
Vielleicht wäre es besser dich zuerst etwas mit den Grundlagen (Theorie) zu beschäftigen
Markus Kinzler
  Mit Zitat antworten Zitat
Luemmler

Registriert seit: 19. Apr 2009
13 Beiträge
 
#3

Re: Erläuterungen zu einem Delphi Programm ..

  Alt 19. Apr 2009, 15:26
ja also einiges habe ich schon über die OOP gelesen und gelernt...hier möchte ich eigentlich nur wissen wie dieses Programm abläuft und was ggf fehlt oder falsch ist.

oder sag doch einfach mal was dir zu diesem Programm relevantes einfällt
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Erläuterungen zu einem Delphi Programm ..

  Alt 19. Apr 2009, 15:38
Zitat von Luemmler:
ja also einiges habe ich schon über die OOP gelesen und gelernt...hier möchte ich eigentlich nur wissen wie dieses Programm abläuft und was ggf fehlt oder falsch ist.

oder sag doch einfach mal was dir zu diesem Programm relevantes einfällt
Mir fällt die grauenhafte Formatierung auf, die es sogar jedem erfahrenen Programmierer äußerst schwer macht den Sinn des Programms zu erkennen.

Sag deinem Freund er soll mal seinen Code anständig formatieren. Und lern selber deinen eigenen Code schön zu formatieren. Dann blickt man viel schneller durch.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Luemmler

Registriert seit: 19. Apr 2009
13 Beiträge
 
#5

Re: Erläuterungen zu einem Delphi Programm ..

  Alt 19. Apr 2009, 15:44
Ehrlich gesagt habe ich das so durcheinander gebracht , weil das Programm mehrere Klassen (so heißt das doch oder ) besitzt und ich nicht wußte wie ich sonst hätte alle zeigen sollen. sorry
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Erläuterungen zu einem Delphi Programm ..

  Alt 19. Apr 2009, 15:51
Es geht nicht darum, dass du 2 Units auf einmal gepostet hast...

Delphi-Quellcode:
if istLeer then
  kenntMemoAnzeige.Lines.Add('-- leer --')
else
begin
   while not self.istLeer do
   begin
     kenntMemoAnzeige.Lines.Add(MemoAlsLiteratur.autor + ' ' + MemoAlsLiteratur.titel + ' ' +
                                MemoAlsLiteratur.Ort + ' ' + MemoAlsLiteratur.Jahr + ' ' +
                                MemoAlsLiteratur.isbn + ' ' + MemoAlsLiteratur.verlag + ' ');
     lListe.haengeAn(MemoAlslIteratur);
     lLISTE.haengeAn(memoalsliteratur);
     entferneaktuelles
   end;

   while not lLiSTE.istLeer do
   begin
     haengeAn(lListe.MemoAlsLiteratur);
     lListe.entferneAKTUELLES;
   end;

   lListe.gibfrei;
end
Dieser Quelltext ist formatiert. Auch wenn es noch ein paar andere Regeln gibt. Z.B. ist es (normalerweise) nicht üblich deutsche Bezeichner für Variablen und Methoden zu nehmen. Und "entferneAKTUELLES" würde man auch eher "EntferneAktuelles" nennen bzw schreiben. Oder eben "RemoveCurrent" oder so.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Luemmler

Registriert seit: 19. Apr 2009
13 Beiträge
 
#7

Re: Erläuterungen zu einem Delphi Programm ..

  Alt 19. Apr 2009, 15:54
ja ok verstehe ....aber abgesehen davon was verstehst du denn überhaupt schon von dem programm?

also ich habe den Programmsinn darin gesehen,dass in einem Memofeld mehrere Eigenschaften nebeneinander angezeigt werden sollen oder? Ginge sowas nicht auch einfacher ?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Erläuterungen zu einem Delphi Programm ..

  Alt 19. Apr 2009, 16:02
Hi,

Es gibt die Klasse TLiteratur. Darin werden Bücher gespeichert. Der Benutzer kann Dann in Edits alle Eigenschaften eines Buches eingeben und dieses Buch dann zu einer "Literaturliste" hinzufügen. Die Literaturliste kann dann soweit ich das sehe in einem Memo ausgegeben werden.

Aber eventuell sollte dein Freund selbst mal ein paar Grundlagen lernen.

Delphi-Quellcode:
public
   constructor init (pTitel: String; pAutor: String; pVerlag: String; pJahr: String; pOrt: String; pISBN: String); virtual;
   procedure gibFrei; virtual;
   function autor : String; virtual;
   function isbn : String; virtual;
   function jahr : String; virtual;
   function ort : String; virtual;
   function titel : String; virtual;
   function verlag : String; virtual;
end;
Man nennt Construktoren "Create". Alles andere ist mehr als Unüblich. Was "virtual" bedeutet weiß dein Freund wahrscheinlich auch nicht, weil er einfach so damit rumwirft hab ich das Gefühl. Ich glaube jedenfalls nicht, dass virtual in diesem Programm und gebraucht wird, da es keine Vererbung gibt.

Abgesehen davon würde man Properties benutzen. Und zwar in der Art hier:

Delphi-Quellcode:
private
  FAutor: String;
public
  property Autor: String read FAutor write FAutor;
  // etc
end;
Den Sinn von "gibFrei" habe ich auch nicht verstanden. 1. Tut diese Methode nichts und selbts wenn du sie noch ausfüllen sollst so ist sie mehr als unnötig..
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#9

Re: Erläuterungen zu einem Delphi Programm ..

  Alt 19. Apr 2009, 16:08
eventuell ist diese Funktion mal so gedacht gewesen?
Aber dann hätt man sie besser Clear nennen sollen.
Delphi-Quellcode:
procedure TLiteratur.gibFrei;
begin
  zAutor := '';
  zTitel := '';
  zVerlag := '';
  zJahr := '';
  zOrt := '';
  zISBN := '';
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Luemmler

Registriert seit: 19. Apr 2009
13 Beiträge
 
#10

Re: Erläuterungen zu einem Delphi Programm ..

  Alt 19. Apr 2009, 16:33
könnte es sein , dass virtual durch den delphi export durch uml automatisch entsteht?

Könntest du noch einig genauen Einzelheiten zu diesem Programm nennen oder gar verbesserungsvorschläge geben, denn ich möchte es nämlich möglichst effizient und einfach lernen und verstehen
  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 05:49 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