AGB  ·  Datenschutz  ·  Impressum  







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

Aufzählung trennen

Ein Thema von Delbor · begonnen am 10. Okt 2021 · letzter Beitrag vom 10. Okt 2021
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Aufzählung trennen

  Alt 10. Okt 2021, 16:04
Hi zusammen

Ich hab folgende Aufzählungs-Typen:
Delphi-Quellcode:
TTableEnum =(CreateTblStrassen, CreateTblOrt, CreateTblAdressen, CreateTblUser)+
             (CreateTblFile, CreateTblAuthor, CreateTblDocuments);

TIndexEnum = (CreateIndexTblAdressen_TblOrt, CreateIndexTblAdressen_TblStrassen, CreateIndexTblUser_TblAdressen, +
              CreateIndexTblAuthor_TblUser, CreateIndexTblFile_TblDocuments, CreateIndexTblDocuments_TblAuthor);
Das funktioniert so nicht. Die Bezeichner der ursprünglichen Typen sind wesentlich kürzer, so dass diese Deklarationen immer eine Zeile beanspruchten und so das Problem nicht auftrat.
Andrerseits werden die verwendeten Bezeichner gleichzeitig als Prozedurbezeichner verwendet und können deshalb nicht anders als diese geschrieben werden. Als Beispiel:

Delphi-Quellcode:
for i := Low(TTableEnum) to High(TTableEnum) do
begin
  case TTableEnum of
    1: ExecuteSQL(TblDocuments);
    2: ExecuteSQL(TblAuthor);
    3: ExecuteSQL(TblFile);
    4: ExecuteSQL(TblUser);
    5: etc...
  end;
end;
Execute ruft die jeweiligen Methoden zur Tabellenerzeugung auf (Parameter ASQL):
Delphi-Quellcode:
  function TDMLSQLite.ExecuteSQL(ASQL : String) : Boolean;
    var ReportList: TStringlist;
  begin
    ReportList := TStringlist.Create;
    try
      try
        FDSQLiteConnection.ExecSQL(ASQL);
        FDSQLiteConnection.GetInfoReport(ReportList);
Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#2

AW: Aufzählung trennen

  Alt 10. Okt 2021, 16:40
Etwa so?
Delphi-Quellcode:
TIndexEnum = (CreateIndexTblAdressen_TblOrt, CreateIndexTblAdressen_TblStrassen)
 + (CreateIndexTblUser_TblAdressen, CreateIndexTblAuthor_TblUser, CreateIndexTblFile_TblDocuments)
 + (CreateIndexTblDocuments_TblAuthor);
Warum hast Du bei der ersten Deklaration vor und hinter dem + schließende und öffnende Klammern, bei der zweiten aber nicht?

Wobei ich mich frage, warum überhaupt mit +?
Delphi-Quellcode:
TTableEnum = (CreateTblStrassen, CreateTblOrt, CreateTblAdressen, CreateTblUser,
              CreateTblFile, CreateTblAuthor, CreateTblDocuments);

TIndexEnum = (CreateIndexTblAdressen_TblOrt, CreateIndexTblAdressen_TblStrassen,
              CreateIndexTblUser_TblAdressen, CreateIndexTblAuthor_TblUser,
              CreateIndexTblFile_TblDocuments, CreateIndexTblDocuments_TblAuthor);
Und: Warum müssen Aufzählungstypen in einer Zeile deklariert werden?
Delphi-Quellcode:
TTableEnum = (
  CreateTblStrassen,
  CreateTblOrt,
  CreateTblAdressen,
  CreateTblUser,
  CreateTblFile,
  CreateTblAuthor,
  CreateTblDocuments
);

TIndexEnum = (
  CreateIndexTblAdressen_TblOrt,
// und hier
    CreateIndexTblAdressen_TblStrassen,
(*
können jetzt auch noch
*)

      CreateIndexTblUser_TblAdressen,
// beliebig viele Kommentare
CreateIndexTblAuthor_TblUser,
{ und oder Leerzeilen, Leerzeichen zwischen stehen }
          CreateIndexTblFile_TblDocuments


,

CreateIndexTblDocuments_TblAuthor

);
Syntaktisch sollte das alles funktionieren, optisch mag's durchaus ein Graus sein
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Aufzählung trennen

  Alt 10. Okt 2021, 17:42
Hi Delphi.Narium

Etwa so?
Delphi-Quellcode:
TIndexEnum = (CreateIndexTblAdressen_TblOrt, CreateIndexTblAdressen_TblStrassen)
 + (CreateIndexTblUser_TblAdressen, CreateIndexTblAuthor_TblUser, CreateIndexTblFile_TblDocuments)
 + (CreateIndexTblDocuments_TblAuthor);
Ich hab alle die meisten möglichen Konstellationen getestet, unter anderem auch eine nach obigem Muster, alllerdings mit dem Plus am Zeilenende und denke, das würde wohl so auch nicht funktionieren.

Warum hast Du bei der ersten Deklaration vor und hinter dem + schließende und öffnende Klammern, bei der zweiten aber nicht?
die erste Zeile war Testzeile

Wobei ich mich frage, warum überhaupt mit +?
Delphi-Quellcode:
TTableEnum = (CreateTblStrassen, CreateTblOrt, CreateTblAdressen, CreateTblUser,
              CreateTblFile, CreateTblAuthor, CreateTblDocuments);

TIndexEnum = (CreateIndexTblAdressen_TblOrt, CreateIndexTblAdressen_TblStrassen,
              CreateIndexTblUser_TblAdressen, CreateIndexTblAuthor_TblUser,
              CreateIndexTblFile_TblDocuments, CreateIndexTblDocuments_TblAuthor);
Das funktioniert so einwandfrei.

Und: Warum müssen Aufzählungstypen in einer Zeile deklariert werden?
Ich spare überall, wo es sinnvoll ist, Zeilen ein und habe dann oft mehr wichtigen Code im Blick
Delphi-Quellcode:
TTableEnum = (
  CreateTblStrassen,
  CreateTblOrt,
  CreateTblAdressen,
  CreateTblUser,
  CreateTblFile,
  CreateTblAuthor,
  CreateTblDocuments
);
Dies hier gefällt mir eigentlich gut und ist mE ausserhalb von Implementation und anderen Deklarationen sehr OK - innerhalb von Implementation ist möglichst grosse Übersicht fast wichtiger

Delphi-Quellcode:
TIndexEnum = (
  CreateIndexTblAdressen_TblOrt,
// und hier
    CreateIndexTblAdressen_TblStrassen,
(*
können jetzt auch noch
*)

      CreateIndexTblUser_TblAdressen,
// beliebig viele Kommentare
CreateIndexTblAuthor_TblUser,
{ und oder Leerzeilen, Leerzeichen zwischen stehen }
          CreateIndexTblFile_TblDocuments


,

CreateIndexTblDocuments_TblAuthor

);
Syntaktisch sollte das alles funktionieren, optisch mag's durchaus ein Graus sein [/QUOTE]

Mehrzeilige Kommentare haben eigene Zeilen, beginnen meist mit dem Code, ausser wenn dieser Eingerückt ist. Kurze Kommentare sind - mit Abstand/ab rechtem Rand - oft Anhängsel von Codezeilen.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (10. Okt 2021 um 17:53 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:54 Uhr.
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