Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   DLL um Schnittstellenparameter zu sparen (https://www.delphipraxis.net/177117-dll-um-schnittstellenparameter-zu-sparen.html)

himitsu 18. Okt 2013 08:35

AW: DLL um Schnittstellenparameter zu sparen
 
OK, wenn STATIC = Class Var, dann isses schon nicht mehr so böse.

Im Prinzip geht aber auch sowas, aber ich verrate jetzt nicht die beiden Wege (den "offiziellen", der aber nur aus Kompatibilitätsgründen zu extrem alten Delphi-Codes vorhanden ist und den ganz bösen Hack, der mit mal passiert ist, als ausversehn die globale Konstante für einen leeren String
Delphi-Quellcode:
''
zerschossen wurde, was nicht gut endete).

Delphi-Quellcode:
function Test(i: Integer): Integer;
const
  Temp: Integer = 0;
begin
  Inc(Temp, i);
  Result := Temp;
end;

Namenloser 19. Okt 2013 03:34

AW: DLL um Schnittstellenparameter zu sparen
 
Zitat:

Zitat von Furtbichler (Beitrag 1232385)
Private statische Variablen sind nicht-lokal beschreibbar? Das wäre ja ein Graus. Wenn nicht, ist deine Anmerkung überflüssig, denn lokale Variablen/private Felder sind immer beschreibbar.

Aber Ich denke, Du verwechselst 'static' mit 'const', es gilt aber 'static' = 'class var'. Und 'var' steht nicht für 'konstant'. ;-) Und auch nicht für 'varscheinlich konstant' :wall:

Ich weiß, was der Unterschied zwischen static und const ist. Ich bezog mich auf das, was himitsu im vorherigen Beitrag angedeutet hatte. Es ist in Delphi tatsächlich mithilfe eines Compilerswitches möglich, dass typisierte konstanten eben nicht konstant sind, sondern gerade beschreibbar, so wie globale Variablen. Siehe himitsus Beispiel im Post über mir.

Größtes WTF in der ganzen Sprache.

Mein Code ist eigentlich schon eine 1:1-Entsprechung einer „methoden-statischen“ Variable à la PHP & Co. in Delphi. Aber sich extra eine Dummy-Klasse deklarieren, nur damit man eine globale Variable hat, auf die man nur in einer einzigen Routine zugreifen kann, kann irgendwie keine Lösung sein, und deshalb rate ich davon ab.

Ich halte von statischen Variablen in Methoden aber auch generell nichts.

Furtbichler 19. Okt 2013 08:41

AW: DLL um Schnittstellenparameter zu sparen
 
Na, wenn Du ein neues Wort für 'static field', oder 'class var' einführen willst, nämlich 'methoden-statisch'... bitte sehr.

Uwe Raabe 19. Okt 2013 09:48

AW: DLL um Schnittstellenparameter zu sparen
 
Zitat:

Zitat von NamenLozer (Beitrag 1232500)
Es ist in Delphi tatsächlich mithilfe eines Compilerswitches möglich, dass typisierte konstanten eben nicht konstant sind, sondern gerade beschreibbar, so wie globale Variablen. Siehe himitsus Beispiel im Post über mir.

Größtes WTF in der ganzen Sprache.

Den Schalter gibt es nur aus Gründen der Abwärtskompatibilität. Als es in Delphi noch keine initialisierten globalen Variablen gab, waren die veränderbaren Konstanten der einzige Weg sowas zu realisieren. Dieser ominöse Schalter sollte somit auch nur für noch nicht portierten Code Anwendung finden. Allerdings ist dieses Feature, wie so oft, auch schon zu anderen Zwecken missbraucht worden. Um auch zu solchen Code kompatibel zu bleiben, wird es den Schalter wohl noch eine ganze Weile geben.

Furtbichler 19. Okt 2013 12:05

AW: DLL um Schnittstellenparameter zu sparen
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1232503)
Als es in Delphi noch keine initialisierten globalen Variablen gab, waren die veränderbaren Konstanten der einzige Weg sowas zu realisieren.

Öhm...
Delphi-Quellcode:
Var
  global : String;

initialization
  global :='Initialized Value';
end.
So hab ich das immer gemacht.

Schon bei Turbo-Pascal (DOS) waren Konstanten veränderbar. Konstanten wurden nicht als Platzhalter kompiliert (wie z.B. bei C und '#define'), sondern hatten eine eigene Adresse im Speicher. Und da kann man nunmal reinschreiben. Blöde Sache, damals. Aber so war es nun mal.

Namenloser 19. Okt 2013 16:56

AW: DLL um Schnittstellenparameter zu sparen
 
Zitat:

Zitat von Furtbichler (Beitrag 1232502)
Na, wenn Du ein neues Wort für 'static field', oder 'class var' einführen willst, nämlich 'methoden-statisch'... bitte sehr.

Das eine ist in einer Klasse deklariert, das andere in einer Methode (oder Funktion/Procedure, muss ja nicht zu einer Klasse gehören). Was ist daran so schwer zu verstehen?

Furtbichler 19. Okt 2013 17:39

AW: DLL um Schnittstellenparameter zu sparen
 
Zitat:

Zitat von NamenLozer (Beitrag 1232522)
Zitat:

Zitat von Furtbichler (Beitrag 1232502)
Na, wenn Du ein neues Wort für 'static field', oder 'class var' einführen willst, nämlich 'methoden-statisch'... bitte sehr.

Das eine ist in einer Klasse deklariert, das andere in einer Methode (oder Funktion/Procedure, muss ja nicht zu einer Klasse gehören). Was ist daran so schwer zu verstehen?

Das ist so krank, das ich daran nicht gedacht habe (die lokalen Konstanten, die variabel sind, also gar nicht konstant, und auch gar nicht lokal sondern statisch). Nix für ungut. Hab's jetzt. :thumb:

himitsu 19. Okt 2013 18:18

AW: DLL um Schnittstellenparameter zu sparen
 
Zitat:

Zitat von Furtbichler (Beitrag 1232524)
Das ist so krank, das ich daran nicht gedacht habe (die lokalen Konstanten, die variabel sind, also gar nicht konstant, und auch gar nicht lokal sondern statisch). Nix für ungut. Hab's jetzt. :thumb:

Praktisch mein Code, zu dem ich aber nicht verrate welche Option man dafür aktivieren müsste.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz