Date-Format

02/09/2007 - 17:53 von Jens Müller | Report spam
Hallo,

Ich habe eine Datei, in der Daten als Double, 8 Byte (IEEE 754) stehen,
wobei der ganzzahlige Anteil die Sekunden seit 1899-12-30 angibt und
der Kommaanteil den Anteil an 24 Stunden.
Soweit ich weis, entspricht das auch der VB Interpretation.

Ich mache nun folgende Konversion, ich habe die Datei in Inh stehen,
von posPtr an beginnt das Datum.

Dim tmpDbl as Double
tmpDbl = arr2dbl(StrConv(StrReverse(Mid$(Inh, posPtr, 8)),
vbFromUnicode))

Ein cDate(tmpDbl) bringt nun aber "Überlauf".

tmpDbl enthàlt in diesem Fall 1188394446993.

Die Funktion arr2dbl habe ich folgendermaßen geschrieben:
Public Function arr2dbl(arr() As Byte) As Double
Dim retval As Double

If UBound(arr) - LBound(arr) <> 7 Then Exit Function

CopyMemory ByVal VarPtr(retval), arr(LBound(arr)), 8

arr2dbl = retval
End Function

Wahrscheinlich ist es nur eine Kleinigkeit, aber momentan finde ich es
nicht. Danke für Hilfe!

Jens
 

Lesen sie die antworten

#1 Schmidt
02/09/2007 - 18:02 | Warnen spam
"Jens Müller" schrieb im Newsbeitrag
news:

Ich mache nun folgende Konversion, ich habe die Datei in Inh
stehen, von posPtr an beginnt das Datum.


Wenn Inh ein Byterray ist und posPtr ein Index, warum dann
nicht:
Dim TheDbl as Double
CopyMemory TheDbl, Inh(posPtr), 8


Olaf

Ähnliche fragen