AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi lokale Variablen mit globaler Lebensdauer?

lokale Variablen mit globaler Lebensdauer?

Ein Thema von sniper_w · begonnen am 13. Jul 2005 · letzter Beitrag vom 15. Jul 2005
Antwort Antwort
Seite 1 von 6  1 23     Letzte » 
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#1

lokale Variablen mit globaler Lebensdauer?

  Alt 13. Jul 2005, 13:23
Zitat:
...zum Thema "globale Variablen vermeiden": gibts denn in Object Pascal lokale Variablen mit globaler Lebensdauer? (C/C++ Stichwort "static")

mfg
Ich habe damasl diese Frage auf meine Festplatte geschpeichert, wollte es später auch beantworten. Da ich erst jetzt diese Frage wieder gefunden habe, hier ein Antwort: Ja.
Und zwar so(Delphi 6):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
{$IFOPT J-}
  {$DEFINE restore_me}
{$ENDIF}
{$IF DEFINED (restore_me)}
  {$J+}
{$IFEND}
const D:Integer = 0;
{$IF DEFINED (restore_me)}
  {$J-}
{$UNDEF restore_me}
{$IFEND}
begin
  Inc(D);
  Caption := IntToStr(D);
end;
Für weitere Erklärungen, siehe OH.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 13. Jul 2005, 13:31
Nein, das ist ein Missbrauch von Konstanten und entspricht nicht dem Schlüsselwort static von C/C++. Das funktioniert übrigens auch nur noch, weil es Borland aus Kompatibilitätsgründen nicht rausgeschmissen hat. Als Programmierer sollte man so etwas tunlichts vermeiden, da es einfach nicht sauber programmiert ist, denke ich.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 13. Jul 2005, 13:34
Ums direkt zu sagen: Lokale Variablen mit Globaler Lebensdauer sind größtmöglicher Schwachsinn. Da kannst du auch gleich globale Variablen nehmen, was genauso schwachsinnig ist
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 13. Jul 2005, 13:43
Das ist nur Schwachsinn wenn man es wie im Titel formuliert.
Richtig heisst es globale Variablen mit lokaler Sichtbarkeit. Das ist es was C hat und Delphi nicht.
Variablen in der implementation section sind aber fast genauso gut.
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#5

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 13. Jul 2005, 13:52
Eine andere Möglichkeit um auf die Compiler Direktive WRITEABLECONST ($J) zu verzichten:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  Counter: Integer = 0;
begin

  Inc(PInteger(@Counter)^);
  Caption := IntToStr(Counter);

end;
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#6

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 13. Jul 2005, 13:55
Zitat von Sprint:
Eine andere Möglichkeit um auf die Compiler Direktive WRITEABLECONST ($J) zu verzichten:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  Counter: Integer = 0;
begin

  Inc(PInteger(@Counter)^);
  Caption := IntToStr(Counter);

end;
Eine schlechte Idee schlägt die nächste

sniper_w: dein Quellcode macht Probleme wenn 'restore_me' vorher bereits definiert wurde...
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#7

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 13. Jul 2005, 14:00
Zitat von NicoDE:
Eine schlechte Idee schlägt die nächste
Soll nur zeigen, das sowas möglich ist...
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#8

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 13. Jul 2005, 14:02
Mal ne Frage: Zu was brauche ich das?! Ich kann in Delphi doch globale und lokale Variablen festlegen wie ich will und ich weiß doch von vorne rein, was global und lokal sein soll?! Was bringt mir das dann?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 13. Jul 2005, 14:06
Zitat:
Als Programmierer sollte man so etwas tunlichts vermeiden, da es einfach nicht sauber programmiert ist, denke ich.
Zitat:
Ums direkt zu sagen: Lokale Variablen mit Globaler Lebensdauer sind größtmöglicher Schwachsinn. Da kannst du auch gleich globale Variablen nehmen, was genauso schwachsinnig ist
Darüber lässt sich diskutieren. Aber das wollte ich ja nicht. Ich wollte lediglich diese Möglichkeit zeigen. Ob das richtig ist, schön oder nicht, ist eine andere Sache.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 13. Jul 2005, 14:08
Zitat von NicoDE:
sniper_w: dein Quellcode macht Probleme wenn 'restore_me' vorher bereits definiert wurde...
Dann musst du halt aufpassen . Anstatt 'restore_me', nimm 'TForm1_Button1Click_Sender_TObject_'
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf