Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Records - Felder eines Records zählen (https://www.delphipraxis.net/209840-records-felder-eines-records-zaehlen.html)

delfie 28. Jan 2022 22:05

Delphi-Version: 10.4 Sydney

Records - Felder eines Records zählen
 
Hallo Delphi-Kundige,

ich stehe vor der Aufgabe, ein StringGrid mit den Dimensionen eines Arrays von Records zu definieren. Gibt es eine Möglichkeit, die Anzahl der Felder innerhalb eines Records zu zählen. Damit wäre eine Dimension des StringGrids schon festgelegt.
Die Anzahl der Elemente des Arrays sind ja nicht das Problem.

Herzlichen Dank für einen Hinweis

Anderson

himitsu 28. Jan 2022 23:32

AW: Records - Felder eines Records zählen
 
Record oder Record?

Sowas wie im TDataSet oder der Typ "record"?


Ersteres = FieldCount
Letzeres = RTTI

dummzeuch 29. Jan 2022 10:13

AW: Records - Felder eines Records zählen
 
Also, wenn Du vom Datentyp record ... end sprichst: Neuere Delphis erlauben da einiges per RTTI, bei älteren: Keine Chance.

Wir haben dafür vor Jahren ein selbstbeschreibendes Dateiformat entwickelt. Das ist ein File of record mit einem Header, in dem u.a. die Record-Beschreibung steht (Namen der Felder und Datentyp). Die Idee stammt aus Tomes of Delphi, dem TtdRecordStream, allerdings haben wir u.a. das Deleted-Flag weggelassen und Prüfsummen hinzugefügt.

Aber das hilft Dir vermutlich nicht weiter.

himitsu 29. Jan 2022 11:00

AW: Records - Felder eines Records zählen
 
"Neuere" ist nun auch schon über eine Dekade. :stupid:

delfie 29. Jan 2022 20:39

AW: Records - Felder eines Records zählen
 
Herzlichen Dank für die schnellen Antworten!

Gemeint hab ich den Datentyp record.

Wenn ich RTTI richtig verstehe, nutze ich damit ein Objekt, mit dessen Hilfe ich die Felder zählen kann.

Der Grund für die Verwendung von record als Datentyp im entprechenden Programm war, dass keine Objektorientierung verwendet werden muss. Das Programm soll nämlich für eine kleine Gruppe von Anwendern mit geringer Programmier-Erfahrung wartbar sein.

Dann muss ich doch einen anderen Weg finden, damit es "einfach" bleibt.

Auf alle Fälle danke für die Hilfe

Anderson :-D

shebang 31. Jan 2022 10:13

AW: Records - Felder eines Records zählen
 
Zum Befüllen des StringGrids musst du die Namen (und evtl. Typen) der einzelnen Record-Felder doch sowieso kennen. In diesem Fall würde es doch nichts bringen, wenn du an der Stelle weißt, dass der Record jetzt ein Feld mehr enthält, du dessen Namen aber wieder manuell einpflegen musst. Oder gibt es da ein tolles Feature, dass ich noch nicht kenne?

dummzeuch 31. Jan 2022 10:36

AW: Records - Felder eines Records zählen
 
Zitat:

Zitat von himitsu (Beitrag 1501397)
"Neuere" ist nun auch schon über eine Dekade. :stupid:

RTTI für Records wurde mit Delphi XE2 eingeführt, also 2011-09-01. Die Dekade stimmt also knapp.

Alles nach Delphi 2007 ist für mich gefühlt immernoch "neuer", weil ich erst vor kurzem auf Delphi 10.2 umgestiegen bin und selbst das nicht für alle Projekte einsetzen kann, weil da immernoch Delphi 2007 (pre-Unicode) benötigt wird. Es werden aber langsam weniger.

himitsu 31. Jan 2022 12:05

AW: Records - Felder eines Records zählen
 
Hab zwar letztes Jahr 10.4 nun endlich fertig (nach ein paar Jahren, der dritte oder vierte Anlauf (10.2 und 10.3)
nun nochmal schnell auf 11 gebracht, aber wir sind immernoch bei XE, da noch keine Zeit der Einführung, außerdem fehlt für 11 ja alles noch. (nja, von 7 zu XE dauerte auch 5 Jahre, bis der aktuell letzte Konvertierungs-Bug gefunden+behoben war)

cnpack/gexperts offiziell nur als "experimentell", aber was mich selber mehr nervt, dass Emba nicht mal sein eigenes (gekauftes) Zeugs fertig bekommt ... wo sind die Parnassus?


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