|
| BCD Fra : Roald Henriksen |
Dato : 12-05-02 23:26 |
|
Hej.
Hvem ved, hvordan man konverterer et tal repræsenteret som 10 bytes BCD til
noget, som D4 kan arbejde med?
Jeg mener at kunne huske, at TP3 havde et talformat som 10 bytes BCD, men
jeg har ikke håndbogen, så jeg kan slå det op.
Helt præcist skal en regnskabsdatabase (Albatros) forsynes med en
windows-baseret rapportgenerator.
Lidt at arbejde med for de nysgerrige,
hvad står her?:
0000: 42 00 00 00 00 00 00 00 35 18 (hexdump fra transaktionsfil)
Mvh RH
| |
Hans Milling (13-05-2002)
| Kommentar Fra : Hans Milling |
Dato : 13-05-02 14:19 |
|
"Roald Henriksen" <mail@pentagon-electric.dk> wrote in message news:<fYBD8.111$w_1.3963@news.get2net.dk>...
> Hej.
> Hvem ved, hvordan man konverterer et tal repræsenteret som 10 bytes BCD til
> noget, som D4 kan arbejde med?
> Jeg mener at kunne huske, at TP3 havde et talformat som 10 bytes BCD, men
> jeg har ikke håndbogen, så jeg kan slå det op.
> Helt præcist skal en regnskabsdatabase (Albatros) forsynes med en
> windows-baseret rapportgenerator.
> Lidt at arbejde med for de nysgerrige,
> hvad står her?:
> 0000: 42 00 00 00 00 00 00 00 35 18 (hexdump fra transaktionsfil)
>
> Mvh RH
Hvad mener du med "tal" heltal eller komma tal?
BCD, er det det samme format som bruges i elektronik? hvor man bruger
4 bit til hvert ciffer ? så 10010110 = 96 altså 1001 = 9(ti'ere) og
0110 = 6 (en'ere)?
Et det et heltal repræcenteret med 4 bit pr. ciffer, så er de 10 bytes
det samme som 20 cifre?
Hilsen Hans...
| |
Hans Milling (13-05-2002)
| Kommentar Fra : Hans Milling |
Dato : 13-05-02 16:05 |
|
Slog lige op i min gamle Tannenbaum bog (Structured Computer
Organization), den fortæller lidt om BCD.
Mest brugt på gamle IBM mainframes, og er som jeg nævnet i mit
tidligere indlæg et heltal hvor man bruger 4 bits til at repræcentere
et enkelt decimal ciffer fra 0 til 9.
Men jeg tror nu dit program benytter kommatal. I mit Delphi 6, ligger
der en TDCB datastruktur, den er dog ikke 10 bytes lang, men hele 34
bytes lang, men det er muligt at lave sin egen variant, er er et
udsnit fra hjælpfilen:
TBcd type
The type that stores a binary coded decimal value.
Unit
FmtBcd
type
TBcd = packed record
Precision: Byte; { 1..64 }
SignSpecialPlaces: Byte; { Sign:1, Special:1, Places:6 }
Fraction: packed array [0..31] of Byte; { BCD Nibbles, 00..99 per
Byte, high Nibble 1st }
end;
Description
TBcd represents a binary coded decimal value. It contains the
following fields:
Field Contents
Precision The number of digits in the decimal version of the value.
SignSpecialPlaces The sign bit (0 is positive, any other value
negative)
the special bit (nonzero indicates that the value is blank)
the number of digits after the decimal (0 to Precision)
Fraction An array of BCD nibbles, 00 to 99 per byte, high nibble
first. Only the first Precision nibbles are used.
You can create a Variant that represents a TBcd value using the
VarFMTBcdCreate function. In fact, the easiest way to manipulate TBcd
values is to create Variants for them and use the built-in operators
provided by the Variant type.
| |
|
|