AGB  ·  Datenschutz  ·  Impressum  







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

Datenstruktur gesucht

Ein Thema von LokutusvB · begonnen am 13. Feb 2015 · letzter Beitrag vom 13. Feb 2015
Antwort Antwort
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#1

Datenstruktur gesucht

  Alt 13. Feb 2015, 07:03
Delphi-Version: 5
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.
MFG
LokutusvB
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Datenstruktur gesucht

  Alt 13. Feb 2015, 07:53
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:
Select
  ASCII(Buchstabenfeld)-64 as BuchstabenNummer
A ~ ASCII 65, B ~ 66, usw. daher die "-64"

Oder eine analoge Funktion in Delphi implementieren und das dort beim auslesen "übersetzen".
Ralph
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#3

AW: Datenstruktur gesucht

  Alt 13. Feb 2015, 08:06
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.
MFG
LokutusvB
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Datenstruktur gesucht

  Alt 13. Feb 2015, 08:11
Mach das doch so
Nr:=Chr(DatenbankFeld)-64;
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Datenstruktur gesucht

  Alt 13. Feb 2015, 08:25
Mach das doch so
Nr:=Chr(DatenbankFeld)-64;
Das ist einer dieser Ansätze, die immer ein riesen Geschrei erzeugen, wie z.B. bei der Umstellung auf Unicode. Eher durch Zufall wurde die Position von A nicht geändert, so dass dies davon nicht betroffen gewesen wäre.

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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#6

[GELÖST] AW: Datenstruktur gesucht

  Alt 13. Feb 2015, 08:26
Danke für den richtigen Wink, franktron.

Code:
nr := ord(Buchstabe);
liefert mir genau das Ergebnis, das ich möchte. Oder gibt es noch Einwände, Sir Rufo?
MFG
LokutusvB

Geändert von LokutusvB (13. Feb 2015 um 08:31 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Datenstruktur gesucht

  Alt 13. Feb 2015, 08:41
Sollte es nicht besser:
nr := ord(Buchstabe)- ORD('A')+1; heißen.

Denn sonst sollte 65 rauskommen.
Markus Kinzler
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#8

AW: Datenstruktur gesucht

  Alt 13. Feb 2015, 08:56
Ja, du hast Recht. Bei mir ist 1 bis 9 rausgekommen, da ich den Type Enumeration
Code:
TAufzaehlung = (A = 1, B, C, D, E, F, G, H, I);
noch im Quelltext stehen hatte. Danke für den Hinweis.
MFG
LokutusvB
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: [GELÖST] AW: Datenstruktur gesucht

  Alt 13. Feb 2015, 09:06
Danke für den richtigen Wink, franktron.

Code:
nr := ord(Buchstabe);
liefert mir genau das Ergebnis, das ich möchte. Oder gibt es noch Einwände, Sir Rufo?
Mich befällt immer ein gewisses Unbehagen, wenn man den echten Kontext mit einem völlig anderen Kontext verknüpft um den echten Kontext daraus herzuleiten. Nun, so bleibt das Geschrei in Zukunft aber auch auf dem gleichen Level

Siehe auch die Verwendung von PChar oder integer und das Geschrei bei Unicode bzw. 64bit.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 02:10 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