AGB  ·  Datenschutz  ·  Impressum  







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

Konstante in Klasse?

Ein Thema von p80286 · begonnen am 6. Feb 2017 · letzter Beitrag vom 7. Feb 2017
Antwort Antwort
Seite 1 von 2  1 2      
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Konstante in Klasse?

  Alt 6. Feb 2017, 14:04
Hallo,

Delphi-Quellcode:
const
  maxtext = 5;
type
  tSQLTexte = array[0..maxtext] of string;
const
  sqltexte:tSQLTexte=('1','2','3','4','5','6');
und in einer Klasse
Delphi-Quellcode:
type
 TSQLTexte2 = class
    const
      maxtext = 5;
    type
      tSQLTexte = array[0..maxtext] of string;
    const
      sqltexte:tSQLTexte=('1','2','3','4','5','6');
 end;
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Konstante in Klasse?

  Alt 6. Feb 2017, 14:27
Äh nee
Delphi-Quellcode:
TDM_Logs = class(TDataModule)
  const
    SQLTEXTmax=5;
......
ergibt

---------------------------
Fehler
---------------------------
END erwartet, aber CONST gefunden.
---------------------------
OK
---------------------------

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Konstante in Klasse?

  Alt 6. Feb 2017, 14:29
Hallo,
dann liegt das ev. an Delphi7, mein Delphi (mind. 2007) kann es ...

Ansonsten pack die Klasse in eine eigene Unit und die Konstante in den Implementation-Teil.
Heiko

Geändert von hoika ( 6. Feb 2017 um 14:35 Uhr)
  Mit Zitat antworten Zitat
Poelser

Registriert seit: 21. Apr 2008
Ort: Europa
145 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Konstante in Klasse?

  Alt 6. Feb 2017, 14:34
Hallo,
dann liegt das ev. an Delphi7, mein Delphi kann es ...
In einem früheren Thread (hab den Link nicht gefunden) wurde bestätigt, dass D7 es nicht kann.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Konstante in Klasse?

  Alt 6. Feb 2017, 14:41
Suchst Du nach sowas in der Art?
Delphi-Quellcode:
const
  MaxText = 5;

type
  tSQLTexte = array[0..MaxText] of string;
const
  sqltexte : tSQLTexte = (
    'select * from Tabelle',
    'insert into tabelle where id = :id',
    'delete from tabelle where id = :id',
    'select * from tabelle where id = :id',
    '...',
    '...');
Mein Delphi 7 kompiliert das.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.432 Beiträge
 
Delphi 12 Athens
 
#6

AW: Konstante in Klasse?

  Alt 6. Feb 2017, 15:01
Moin...

Wenn du einen Platz für die Abfragen suchst...
http://www.delphipraxis.net/49505-sq...einbinden.html
http://www.delphipraxis.net/190316-d...creator-2.html
...eine Konstante dafür ist imho schlecht.

PS: Ressourcen gehen auch bei D7
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Konstante in Klasse?

  Alt 6. Feb 2017, 15:06
So nackt ist das kein Problem.
Es soll aber schon in der Teil der Klasse sein da
Delphi-Quellcode:
...
dm.GetBibdata(SRliste);
UsedSQL.Text:=dm.SQLTEXTE[GetBibdata];
...
einfach besser aussieht und mir logischer erscheint als
Delphi-Quellcode:
...
dm.GetBibdata(SRliste);
UsedSQL.Text:=SQLTEXTE[GetBibdata];
...
Natürlich könnte ich auch den Namen der Unit mit angeben oder ich packe das hinter einen Getter, aber daß scheint mir widerum als "L’art pour l’art"

Gruß
K-H

@haentschmann
NeeNee Konstante passt schon gut, und entspricht auch genau dem Konzept was dahinter steckt.
SQL in Recource würde ich für andere Zwecke einsetzen!
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 ( 6. Feb 2017 um 15:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.432 Beiträge
 
Delphi 12 Athens
 
#8

AW: Konstante in Klasse?

  Alt 6. Feb 2017, 15:15
Hallöle...
Ich versuche dich von der Konstante herunterzuheben...
UsedSQL.Text:=SQLTEXTE[GetBibdata]; ...das ist das was du mit einer Ressource erreichen kannst. Mit dem Editor kannst du die Texte deiner Ressource einfach anpassen ohne das der Qelltext verändert wird. Es macht die Klasse schlanker...

Nachtrag:
Zitat:
NeeNee Konstante passt schon gut, und entspricht auch genau dem Konzept was dahinter steckt.
...das Konzept müßtest du mal erklären.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Konstante in Klasse?

  Alt 6. Feb 2017, 16:05
...das ist das was du mit einer Ressource erreichen kannst. Mit dem Editor kannst du die Texte deiner Ressource einfach anpassen ohne das der Qelltext verändert wird. Es macht die Klasse schlanker...
und Du bist flexibler! Ja ist alles ok, aber in diesem Falle dient die Klasse nur als Hülle für einen sehr speziellen Zweck und ist monolitisch. Da ist nichts mit Vererbung o.ä. Eigentlich ist das Anzeigen des SQL-Textes auch überflüssig und somit könnte der Text irgendwo in der Unit verschwinden, aber angeblich braucht ein Benutzer die Anzeige, und da hätte ich gerne etwas "selbstdokumentiertes". Und falls jemand in absehbarer Zukunft die Klasse überarbeiten muß, wäre sicher gestellt, daß die vorhandenen Definitionen genau zu dieser Klasse gehören.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Konstante in Klasse?

  Alt 6. Feb 2017, 17:22
Konstanten sollten überall gehn, auch solche in Klassen.
Aber meinst du wirklich Delphi 7 (wie du angegeben hast) und die Fehlermeldung hast du natürlich nicht genannt.

Bei Variablen sieht das anders aus, denn da können nur die Globalen einen vordefinierten Wert bekommen.

[edit] Links im Profil steht auch nochmal D7
Nja, da wurde über die Jahre viel geändert, vorallem in Delphi 7, D2005 und D2006 wurde bezüglich Klassen-Variablen/Konstanten/Methoden so Einiges erweitert.
Aber ich hätte gedacht, dass es dennoch mit Arrays geht, also wenn es auch schon im D7 mit const Test: Integer = 666; funktioniert.

PS: Was hier vielleicht "wichtig" ist, denn für den Compiler sind "typisierte Konstanten" in Wirklichkeit "schrebgeschützte Variablen".
Delphi-Quellcode:
const Test = 666; // "echte" Konstante
const Test: Integer = 666; // schreibgeschützte Variable ala "var Test: Integer = 666;"
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Feb 2017 um 17:34 Uhr)
  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 18:19 Uhr.
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