Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehlendes Längenbyte (https://www.delphipraxis.net/67663-fehlendes-laengenbyte.html)

duff 18. Apr 2006 11:10


Fehlendes Längenbyte
 
Hallo,

hab mal wieder ein Problem :?

Es geht um die Behandlung eines String in dem "normalerweise" immer ein Längenbyte (z.b. CHR($13) ) steht. Nun kann es aber auch sein, dass diese Angabe fehlt. Nun habe ich mir gedacht, dass ich erst gucken muss ob das Längenbyte vorhanden ist wenn nicht gehe ich in die Ausnahmeroutine. Nun meine Frage, ob es eine Möglichkeit gibt zu Prüfen ob das Längenbyte vorhanden ist (oder nicht) unabhängig von der Länge ??


Greetz

chaosben 18. Apr 2006 11:23

Re: Fehlendes Längenbyte
 
Ich glaube es ist unmöglich das Längenbyte vom restlichen Text zu unterscheiden.
Du könntest aber hoffen, das am Ende des Strings eine binäre Null steht. Die kannst du suchen und die ermittelte Länge mit dem angeblichen Längenbyte vergleichen.

Nur frage ich mich: Warum das Ganze? Warum sollte das Längenbyte fehlen? :gruebel:

duff 18. Apr 2006 11:44

Re: Fehlendes Längenbyte
 
mhhh, toja warum das fehlt?! Der String kommt aus einer KVK Karte (Krankenversicherungskarte) und anscheinent fängt der String nicht bei jeder Krankenkasse mit dem Längenbyte an. In dem String sind übrigens auch mehrere dieser Bytes untergebracht.

Beispiel für dem Aufbau des String:

#$13'Krankenkassenname'#$81#7'KVNummer'#$8F#5'KVSt atus' usw.

und bei manchen Karten von bestimmten Versicherungen fehlt halt vorne das Längenbyte (hier #$13)

Luckie 18. Apr 2006 11:51

Re: Fehlendes Längenbyte
 
Welche Länge soll denn $13 repräsentieren? Ist es ein Hexadezimalwert, dann entspricht er 19 dezimal. Und was ist jetzt 19 Zeichen lang?

Zitat:

Zitat von duff
Nun meine Frage, ob es eine Möglichkeit gibt zu Prüfen ob das Längenbyte vorhanden ist (oder nicht) unabhängig von der Länge ??

Sieht man doch schon am Aufbau des Strings: Wenn er mit #$ anfängt, dann hat er ein Längenbyte, wenn nicht, dann hat er keines.

duff 18. Apr 2006 12:02

Re: Fehlendes Längenbyte
 
Zitat:

Zitat von Luckie
Welche Länge soll denn $13 repräsentieren? Ist es ein Hexadezimalwert, dann entspricht er 19 dezimal. Und was ist jetzt 19 Zeichen lang?

Jep, ist in Hexadezimal und jetzt ist in dem Beispiel der Krankenkassenname 19 Zeichen lang.

Zitat:

Zitat von Luckie
Sieht man doch schon am Aufbau des Strings: Wenn er mit #$ anfängt, dann hat er ein Längenbyte, wenn nicht, dann hat er keines.

Wenn ich nach
Delphi-Quellcode:
POS('#$',s)
suche funktioniert es nicht!! :roll:

marabu 18. Apr 2006 12:31

Re: Fehlendes Längenbyte
 
Wenn ich richtig informiert bin, dann gibt es zwei Lese-Modi für das Auslesen der KV-Karten. Der eine Modus liefert Längenbytes, der andere liefert die Daten in einer dokumentierten Array-Struktur. Der Aufbau unterscheidet sich dabei wohl noch bei nationalen und EU KV-Karten. Auf jeden Fall erwarte ich das Längenbyte als Vorlaufbyte (serielles Auslesen) - wenn es denn geliefert wird.

Grüße vom marabu

duff 18. Apr 2006 13:17

Re: Fehlendes Längenbyte
 
Zitat:

Zitat von marabu
Wenn ich richtig informiert bin, dann gibt es zwei Lese-Modi für das Auslesen der KV-Karten. Der eine Modus liefert Längenbytes, der andere liefert die Daten in einer dokumentierten Array-Struktur. Der Aufbau unterscheidet sich dabei wohl noch bei nationalen und EU KV-Karten. Auf jeden Fall erwarte ich das Längenbyte als Vorlaufbyte (serielles Auslesen) - wenn es denn geliefert wird.

Grüße vom marabu

Mmmmh gibt es irgendwo detaillierte Info´s darüber? Ich habe jetzt erstmal nur Karten aus Deutschland und es fehlt mir wirklich nur der verdammte Längenbyte für den Krankenkassennamen sonst sind ja alle vorhanden :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz