vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: 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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Strings, Longs. Doubles...975Peter Ganzhorn14.01.03 15:41
Re: Strings, Longs. Doubles...562landx14.01.03 17:46
Re: Strings, Longs, Doubles...574Peter Ganzhorn14.01.03 17:53
Bin der Lösung näher 535Peter Ganzhorn14.01.03 22:01
Re: Bin der Lösung näher 516landx14.01.03 23:13
DANKE544Peter Ganzhorn15.01.03 13:43
doch noch n problem546Peter Ganzhorn15.01.03 13:45
Re: jetzt aber545landx15.01.03 13:54
Re: jetzt aber !!538landx15.01.03 13:56
Re: jetzt aber !!539Peter Ganzhorn15.01.03 14:20
Re: jetzt aber !!538landx15.01.03 19:50
Re: jetzt aber !!567Mr. Fox16.01.03 08:43
Re: jetzt aber !!514landx16.01.03 12:22
Re: jetzt aber !!!558landx16.01.03 12:28
Re: jetzt aber !!!529Mr. Fox16.01.03 13:46
Re: jetzt aber !!!531Peter Ganzhorn16.01.03 22:45
Re: Strings, Longs. Doubles...546Wöllmi15.01.03 07:47
Re: Strings, Longs. Doubles...524Peter Ganzhorn16.01.03 22:53
Re: Strings, Longs. Doubles...685Mr. Fox15.01.03 09:43

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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