Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Was bringen Konstanten? (https://www.delphipraxis.net/8968-bringen-konstanten.html)

Pseudemys Nelsoni 16. Sep 2003 05:08


Was bringen Konstanten?
 
sorry, schon wieder so eine dämliche frage, aber ich werde nicht schlau draus was "const" kann und ne variable nicht? (ne konstante kann man zwar im programm nicht ändern, wenn man aber weiss das man einen wert nicht ändern will, brauch man eine Variable ja auch nicht ändern)

Delphi-Quellcode:
const bla = 1;

procedure TForm1.Button1Click(Sender: TObject);
var
  jo: integer;
begin
  jo := bla;
end;
Delphi-Quellcode:
var bla: integer = 1;

procedure TForm1.Button1Click(Sender: TObject);
var
  jo: integer;
begin
  jo := bla;
end;


wo ist da nun der unterschied ? O_o

BungeeBug 16. Sep 2003 05:58

Re: Was bringen Konstanten?
 
Hi,

du weißt das du die Variabale nich ändern willst aber weiß das das Programm auch? Ich meine es ist ja schnell mal passiert das man sagen wie schreibt

Delphi-Quellcode:
bla := bla +1
oder was und schon is alles hin. Ausserdem sind Konstanten ehr dazu gedacht als hilfen bei z.B. Versions angaben oder so zu dienen. Da schreibt man dann

Delphi-Quellcode:
const Version = '1';
und kann es sooft im Code verwenden wie man will. Ändert sich dann die Version ändert man die Konstante.

Pseudemys Nelsoni 16. Sep 2003 06:01

Re: Was bringen Konstanten?
 
ja, aber würde ich mit einer variablen das gleiche machen würd es genauso funktionieren, bräucht ich sie nur global ändern. und wenn ich weiss das es eine Versions variable ist, dann änder ich sie doch im code nicht mit version := version +1..

Billa 16. Sep 2003 06:29

Re: Was bringen Konstanten?
 
Hallo silent,

der Unterschied ist auch historisch bedingt:

U.a. wurden Konstanten (in Turbo-Pascal jedenfalls) im Codesegment eines Programms geladen, Variablen dagegen im Datensegment. Damit waren Sprünge zu Konstanten als "kurze" Sprünge möglich!

Ansonsten hat Luckie recht: Das dient vor allem der Zentralisierung von Variablen. Es ist im Nachhinein ungleich leichter die Versionsnummer an
EINER Stelle zu ändern, als alle Stellen des Codes aufzusuchen und zu ändern. Das geht sicher auch mit Variablen, z.B. in einer eigenen Unit, aber die kann man versehentlich überschreiben. Konstanten eben nicht.

woki 16. Sep 2003 06:38

Re: Was bringen Konstanten?
 
Mach Dich eihmal mit folgenden Konzepten vertraut:

Du bist ein Mensch.
Du bist nicht der einzige Programmierer auf der Welt.
Nicht die Maschine braucht Compiler, damit sie funktionieren, sondern der Mensch, der sie bedienen will.

DAs Ziel einer Entwicklungsumgebung und aller Ihrer Features ist es nicht, Dinge technisch möglich zu machen, sondern sie so effizient und einfach wie möglichh zu machen, und woher um Himmelswillen, soll irgendein Programmierer auf der Welt wissen, ob irgendeine Variable, die du mal eingeführt hast, verändert werden darf oder nicht.
Der effizienteste Weg, und der einzige der Fehler ausschließt, anderen Programmieren, dem Compiler (Optimierungen), und auch Dir selbst (nach ein paar Monaten kannst du selbst nicht mehr jede Variable und Konstante die du mal eingeführt hast ohne zu zögern runterbeten), diese Werte als Konstante zu deklarieren.

Gruß
Woki

Pseudemys Nelsoni 16. Sep 2003 06:58

Re: Was bringen Konstanten?
 
danke @billa...

@woki:
Zitat:

und auch Dir selbst (nach ein paar Monaten kannst du selbst nicht mehr jede Variable und Konstante die du mal eingeführt hast ohne zu zögern runterbeten), diese Werte als Konstante zu deklarieren.
ich seh sie doch wenn sie global definiert ist, nur seh ich das immernoch so, das ich für alles genauso ne variable statt ne konstante nehmen kann..

danke auch dir

chris_82 16. Sep 2003 07:04

Re: Was bringen Konstanten?
 
Sicher können tust du das schon,aber ob es was bringt. Auserdem ist mit der globalen Definition doch nicht ausgeschlossen die Variable zu ändern.
Durch die Deklaration von Konstanten wird es dir und anderen jedenfalls auch leichter den Quelltext zu verstehen...man weiß ahja eine Konstante, also darf/kann ich sie nicht ändern...jedenfalls muss ich sagen, das ich beim Thema programmieren noch in den Kinderschuhen stecke, aber Konstanten find ich persönlich sehr hilfreich!!

Tonic1024 16. Sep 2003 07:09

Re: Was bringen Konstanten?
 
Moin.

Im prinzip hast du Recht, Silent. Ich sehe das genauso.

Aber ich kann mir auch vorstellen, wenn die Projekte immer größer werden, dass man ganz froh ist wenn man eine Fehlermeldung bekommt, wenn man versehendlich eine Konstante incrementiert oder sowas...

Stell dir mal vor du hast ganz plötzlich einen Fehler und kannst ihn auf etwa 500 Zeilen genau orten? :?

Und dann ist das sowas... Ist doch auch ein schönes Hobby...

Bis denne...

Pseudemys Nelsoni 16. Sep 2003 07:11

Re: Was bringen Konstanten?
 
hoi,

Zitat:

Sicher können tust du das schon,aber ob es was bringt.
was heisst ob mir das was bringt, ich sehe zwischen variable und konstante kein unterschied, ausser das man letztere nicht überschreiben kann...

hatte bis jetzt in meinem prog immer global die versionsnummer als variable, und hat super gefunzt...und da ich weiss das diese die version enthält änder ich sie im quelltext natürlich auch nicht...

chris_82 16. Sep 2003 07:21

Re: Was bringen Konstanten?
 
Ja, ok wenn du dich in deinem Quelltext auskennst dann mag das ja alles ok sein, aber wie oben schon gesagt, was ist wenn mal ein anderer den source bearbeitet und versehentlich diese Varibale ändert?

Ich mein es gibt viele Lösungen die zum Ziel führen und jeder muss die für sich richtige finden...nur kann es dann eben sein das es Probleme gibt wenn man den Source jemand anders bearbeiten lässt und dieser eben nicht weiß das diese Variable nicht geändert werden soll.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.
Seite 1 von 6  1 23     Letzte »    

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