Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Aufzählung trennen (https://www.delphipraxis.net/208991-aufzaehlung-trennen.html)

Delbor 10. Okt 2021 16:04

Aufzählung trennen
 
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

Delphi.Narium 10. Okt 2021 16:40

AW: Aufzählung trennen
 
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 ;-)

Delbor 10. Okt 2021 17:42

AW: Aufzählung trennen
 
Hi Delphi.Narium

Zitat:

Zitat von Delphi.Narium (Beitrag 1495900)
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.

Zitat:

Zitat von Delphi.Narium (Beitrag 1495900)
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.

Zitat:

Zitat von Delphi.Narium (Beitrag 1495900)
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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