AGB  ·  Datenschutz  ·  Impressum  







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

Deklarationen? Logik?

Ein Thema von Satyr · begonnen am 5. Jan 2013 · letzter Beitrag vom 6. Jan 2013
Antwort Antwort
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#1

Deklarationen? Logik?

  Alt 5. Jan 2013, 13:53
Ich hoffe ich bin mit meinem Anliegen im richtigen Unterforum.

Ich verstehe nicht so recht die Logik, warum man mit Variablen unterschiedlich umgeht.

Als Beispiel:

Delphi-Quellcode:
var
 s:String;
 i:Integer;
 P:TPoint;
begin
[..]
Die 3 Variablen kann ich dann einfach so nutzen.
Anders aber zum Beispiel bei einer TStringList:

Delphi-Quellcode:
var
 liste:TStringList;
begin
 liste := TStringList.Create;
[..]
Da verstehe ich irgendwie nicht, warum ein Unterschied gemacht wird und ich erst noch das Create brauche. Oder habe ich etwas falsch verstanden?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Deklarationen? Logik?

  Alt 5. Jan 2013, 14:06
Im ersten Beispiel handelt es sich um einfache Typen. Im 2. Codeschnipsel um eine Klasse. Bei der deklarierten Variable handelt es sich nur um eine Referenz (Zeiger), welche auf eine Instanz der Klasse weist. Ein Objekt ( Instanz) wird durch den Aufruf dessen konstruktors erzeugt.
Markus Kinzler
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Deklarationen? Logik?

  Alt 5. Jan 2013, 14:13
Mh... ist das auch der Grund weshalb ich mit liste.irgendwas dann mehr "hilfe" habe, statt alles per Hand machen zu müssen, wie bei normalen Variablen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Deklarationen? Logik?

  Alt 5. Jan 2013, 14:17
Variablen einfacher Typen beinhalten "nur" daten. Klassen enthalten auch Logik ( Methoden). Ich vermute mal, dass meinst du.
Markus Kinzler
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Deklarationen? Logik?

  Alt 5. Jan 2013, 14:22
Ah ok, ich glaube so versteh ich es. Danke .
Aber eine andere kleine Frage schwirrt mir im Kopf rum.

Was ist der Unterschied zwischen
Button1.Click; und

Button1Click(nil); Der Effekt sieht für mich irgendwie gleich aus...
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: Deklarationen? Logik?

  Alt 5. Jan 2013, 14:23
Um das was mkinzler sagte etwas plumper auszudrücken, Pascal ist von Hause aus keine OOP Sprache. s und i sind normale variablen, eben String und Integer, also können sie einfach deklariert werden. Objekte wie liste sind dagegen ein kleines Problem. Entweder bleibt es Pascal oder man erfindet einen neue Sprache. So wie es ist, ist es eigentlich noch fast Pascal (wurde ich sagen). liste ist nur eine Adresse auf das Objekt, letztendlich ein Integer. Somit wird keine Regel verletzt. Und später in Code wird das Objekt erstellt.

Zugegeben, doppelt gemoppelt, aber als Pascal erfunden wurde, da hat man OOP vergessen. Das kam erst später dazu. Also hat man ein Kompromiss gefunden.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Deklarationen? Logik?

  Alt 5. Jan 2013, 14:35
Ah ok, ich glaube so versteh ich es. Danke .
Aber eine andere kleine Frage schwirrt mir im Kopf rum.

Was ist der Unterschied zwischen
Button1.Click; und

Button1Click(nil); Der Effekt sieht für mich irgendwie gleich aus...
Im ersten Fall rufst du die für den Klickevent deklarierte Methode auf ( auf die die Property verweist). Im 2. Fall rufst du die Methode direkt auf. Ändert man nachträglich die Property auf eine andere Methode wird trotzdem die alte aufgerufen. zudem macht dies so Pronleme, wenn mehrere Buttons oder andere Komponenten die selbe Methode benutzen, da du den Sender ja nicht mitgibst.

Zitat:
Zugegeben, doppelt gemoppelt, aber als Pascal erfunden wurde, da hat man OOP vergessen. Das kam erst später dazu. Also hat man ein Kompromiss gefunden.
Man hat es nicht vergessen, sondern OOP war damals unbekannt. Wirth hat mit Pascal eine Sprache entwickelt, welche damals als erste strukturierte Programmierung einsetzte. das obektorientierte Paradigma lam erst viel später. Delphi (Objectpascal) ist eine hybride Sprache, welche OOP alternativ unterstützt. Eibfache Typen gibt es aber auch in rein obkectorienntierten Sprachen wie Java und C#.
Markus Kinzler
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Deklarationen? Logik?

  Alt 5. Jan 2013, 14:42
Ich danke Euch beiden .
Jetzt finde ich die Dinge logischer, die ich schon immer nutze, weil sie funktionieren auch wenn mir nicht klar war warum *g*.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#9

AW: Deklarationen? Logik?

  Alt 6. Jan 2013, 03:16
Hier lohnt es sich vermutlich stark, sich mal ganz allgemein ein wenig mit dem Konzept der Klassen (bzw. OOP generell) literarisch auseinanderzusetzen. Das sind grundlegende Bausteine quasi aller relevanten Programmiertools von heute. (Ich weiss, nicht alle, aber wer Delphi, Java, C++ oder C# nutzt, hat das als täglich Brot. Scripten zähle ich hier mal nicht zu Programmieren )
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:16 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