Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Konstante in Klasse? (https://www.delphipraxis.net/191645-konstante-klasse.html)

p80286 6. Feb 2017 14:00

Delphi-Version: 7

Konstante in Klasse?
 
Ich wollte einer Klasse für DB-Abfragen die Abfragetexte hinzufügen
Delphi-Quellcode:
const
MAXTEXT=5;

type
  tSQLTexte:array[0..maxtext] of string;
const
  sqltexte:tSQLTexte=.........
Dabei ist mir aufgefallen, daß eine eine Klassendefinition das nicht kann.
Ok, ich könnte einer Variablen, die Werte im create zuweisen, aber das kommt mir irgendwie umständlich vor.

Hab ich mich verguckt, oder ist das wirklich so?

Gruß
K-H

hoika 6. Feb 2017 14:04

AW: Konstante in Klasse?
 
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;

p80286 6. Feb 2017 14:27

AW: Konstante in Klasse?
 
Äh nee
Delphi-Quellcode:
TDM_Logs = class(TDataModule)
  const
    SQLTEXTmax=5;
......
ergibt

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

Gruß
K-H

hoika 6. Feb 2017 14:29

AW: Konstante in Klasse?
 
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.

Poelser 6. Feb 2017 14:32

AW: Konstante in Klasse?
 
Moin,

hier funktioniert
Delphi-Quellcode:
  public
    const tbl: string = 'Usergroup';
super in einer Klasse.

Poelser 6. Feb 2017 14:34

AW: Konstante in Klasse?
 
Zitat:

Zitat von hoika (Beitrag 1360931)
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.

nahpets 6. Feb 2017 14:41

AW: Konstante in Klasse?
 
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.

haentschman 6. Feb 2017 15:01

AW: Konstante in Klasse?
 
Moin...:P

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. :roll:

PS: Ressourcen gehen auch bei D7 :thumb:

p80286 6. Feb 2017 15:06

AW: Konstante in Klasse?
 
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!

haentschman 6. Feb 2017 15:15

AW: Konstante in Klasse?
 
Hallöle...:P
Ich versuche dich von der Konstante herunterzuheben...8-)
Delphi-Quellcode:
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... :thumb:

Nachtrag:
Zitat:

NeeNee Konstante passt schon gut, und entspricht auch genau dem Konzept was dahinter steckt.
...das Konzept müßtest du mal erklären. :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Seite 1 von 2  1 2      

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