Delphi-Version: 5
Datenstruktur gesucht
Morgen,
folgende Ausgangssituation: Ich habe in einer Datenbank unter anderem pro Datensatz einen Buchstaben zwischen A und I. Diese Buchstaben stehen für 1 bis 9. An diesem System kann nichts geändert werden. Wenn ich den Buchstaben aus der Datenbank auslese, möchte ich direkt mit der dahinterverborgenen Zahl arbeiten. Ich dachte, ein Type Enumeration sei genau das richtige für mich. TAufzaehlung = (A = 1, B, C, D, E, F, G, H, I); Und wenn ich die Informationen im Netz richtig verstehe, müßte mir ta: TAufzaehlung; ... ta.A eine 1 als Rückgabe liefern, oder? Aber genau das macht es nicht. Vermutlich verstehe ich die Verwendung einer solchen Enumeration völlig falsch. Welcher Datentyp ist für dieses kleine Problemchen besser geeignet? Klar, ich könnte in einer Case-Anweisung einfach A bis I "abfackeln", ich hätte das aber lieber eleganter gelöst. |
AW: Datenstruktur gesucht
Wie liest du die Buchstaben denn aus der Datenbank aus? Mit einer Query, wo du evtl. das SQL-Statement anpassen kannst? In Oracle z.B.
Code:
A ~ ASCII 65, B ~ 66, usw. daher die "-64"
Select
ASCII(Buchstabenfeld)-64 as BuchstabenNummer Oder eine analoge Funktion in Delphi implementieren und das dort beim auslesen "übersetzen". |
AW: Datenstruktur gesucht
Es handelt sich nicht um eine SQL-Datenbank. Mit SQL-Statements komme ich nicht weiter. Es gibt nur Delphi-Funktionen für das Auslesen von Werten.
Der gesuchte Buchstabe ist in einem String versteckt. Wenn ich den String auslese, kann ich mir mit Copy den gewünschten Buchstaben ermitteln. Ab dieser Stelle fehlt mir nun noch der richtige Lösungsansatz. |
AW: Datenstruktur gesucht
Mach das doch so
Delphi-Quellcode:
Nr:=Chr(DatenbankFeld)-64;
|
AW: Datenstruktur gesucht
Zitat:
Warum immer durch die Brust ins Auge? Ist die Information tatsächlich verbunden mit dem 64. Zeichen der aktuellen Zeichentabelle? Irgendwie hatte ich gedacht, der Kontext wäre ein anderer? Da soll doch A => 1 bedeuten. Dann programmiert man das auch genau so und nicht über eine Annahme, die hoffentlich auch so bleibt und wir dies darum jeden Abend in unser Nachtgebet mit einschliessen. Ich würde sogar so weit gehen und den echten Kontext (1 ist ja irgendwie nichtssagend) mit diesem A verknüpfen. |
[GELÖST] AW: Datenstruktur gesucht
Danke für den richtigen Wink, franktron. :)
Code:
liefert mir genau das Ergebnis, das ich möchte. Oder gibt es noch Einwände, Sir Rufo?
nr := ord(Buchstabe);
|
AW: Datenstruktur gesucht
Sollte es nicht besser:
Delphi-Quellcode:
heißen.
nr := ord(Buchstabe)- ORD('A')+1;
Denn sonst sollte 65 rauskommen. |
AW: Datenstruktur gesucht
Ja, du hast Recht. Bei mir ist 1 bis 9 rausgekommen, da ich den Type Enumeration
Code:
noch im Quelltext stehen hatte. Danke für den Hinweis.
TAufzaehlung = (A = 1, B, C, D, E, F, G, H, I);
|
AW: [GELÖST] AW: Datenstruktur gesucht
Zitat:
Siehe auch die Verwendung von
Delphi-Quellcode:
oder
PChar
Delphi-Quellcode:
und das Geschrei bei Unicode bzw. 64bit.
integer
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 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