| |

Fortgeschrittene ProgrammierungRe: Strings, Longs. Doubles... | |  | Autor: Mr. Fox | Datum: 15.01.03 09:43 |
| Hallo Peter,
Ich kenne mich mit dem von dir erwähnten Time Protocol nicht aus, aber dein Problem dürfte
ja wo anders liegen. Nämlich bei der Umwandlung von dem Str zu einem "Unsigned Long" (den
es in VB nicht gibt) und da dieser unbrauchbar ist, diesen zu einem Double und das
Ganze natürlich auch rückwärts. Hier mal ein bisschen Code (Modul):
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
Destination As Any, _
Source As Any, ByVal Length As Long)
Private Type LngArray
Byte0 As Byte
Byte256 As Byte
Byte64K As Byte
Byte16M As Byte
End Type
Public Function ConvertULToString(ByVal UL As Long) As String
Dim lng As LngArray
Dim Buffer As Byte
Call CopyMemory(lng, UL, 4)
Buffer = lng.Byte0
lng.Byte0 = lng.Byte16M
lng.Byte16M = Buffer
Buffer = lng.Byte256
lng.Byte256 = lng.Byte64K
lng.Byte64K = Buffer
ConvertULToString = Space(4)
Call CopyMemory(ByVal ConvertULToString, lng, 4)
End Function
Public Function ConvertStringToUL(ByVal Str As String) As Long
Dim lng As LngArray
Call ReverseLongString(Str)
Call CopyMemory(lng, ByVal Str, 4)
Call CopyMemory(ConvertStringToUL, lng, 4)
End Function
Public Function ConvertDoubleToUL(ByVal Dbl As Double) As Long
Dim Max As Double
Max = (CDbl(&H7FFFFFFF) + 1) * 2
If Dbl > Max Then
' No Conversion possible
Else
If Dbl < Max / 2 Then
ConvertDoubleToUL = CLng(Dbl)
Else
ConvertDoubleToUL = Dbl - Max
End If
End If
End Function
Public Function ConvertULToDouble(ByVal UL As Long) As Double
If UL < 0 Then
ConvertULToDouble = (CDbl(&H7FFFFFFF) + 1) * 2 + UL
Else
ConvertULToDouble = UL
End If
End Function
Private Sub ReverseLongString(ByRef Str As String)
Dim lng As LngArray
Call CopyMemory(lng, ByVal Str, 4)
Str = Chr(lng.Byte16M) & Chr(lng.Byte64K) & Chr(lng.Byte256) & Chr( _
lng.Byte0)
End Sub Verwendung:
Dim Str As String
Dim LongVal As Long
Dim Dbl As Double
Str = "ÁÎ>Õ"
LongVal = ConvertStringToUL(Str)
Dbl = ConvertULToDouble(LongVal)
Dbl = 3251519189# ' Dbl hat bereits diesen Wert (nur zu Verdeutlichung)
LongVal = ConvertDoubleToUL(Dbl)
Str = ConvertULToString(LongVal) Ich hoffe es hilft dir weiter.
ciao |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|