🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #14970

Re: Visual Basic punt of komma probleem

#14970
From: AquatiK
Date: Tue, 05 Dec 2000 00:00
128 lines
4167 bytes
xiniks wrote:

> Als je met gegevens uit standaard VB tekstvensters wilt rekenen
> moet het gegevens met een punt zijn en niet met een komma.

In principe moeten je 'localisatie' instellingen dit oplossen maar daar
zitten naar mijn ervaring ettelijke bugs in (Val), tenminste in Visual
Basic. Daarom heb ik zelf teneinde raad de functie maar herschreven. Wat
we zelf doen, doen we beter, nietwaar? ;-). (Public Function
TextToSingle)
Tevens diezelfde functie voor Integers (Public Function TextToInteger).
En de TrimTabSpaces die ik al vroeger eens gepost heb.
Veel plezier ermee en geen auteursrechten er op. Gratis code en vrije
liefde voor iedereen ;-).

mvg, Hugo Maes

-------------

Public Function TextToSingle(T As String, S As Single) As Boolean
' Return True = bad number.
  Dim Tx As String, MinusFlag As Boolean, DecPointFlag As Boolean
  Dim I As Integer, A As String, N As Integer, Sd As Single
'
  Tx = TrimTabSpaces(T)
  S = 0#
  Sd = 1#
  If Left(Tx, 1) = "-" Then
    Tx = Right(Tx, Len(Tx) - 1)
    MinusFlag = True
  Else
    If Left(Tx, 1) = "+" Then Tx = Right(Tx, Len(Tx) - 1)
    MinusFlag = False
  End If
  DecPointFlag = False
  If Len(Tx) > 0 Then
    For I = 1 To Len(Tx)
      A = Mid(Tx, I, 1)
      Select Case A
        Case ".", ","
          If DecPointFlag Then GoTo BadNumber
          DecPointFlag = True
        Case "0" To "9"
          On Error GoTo BadNumber
          N = Asc(A) - Asc("0")
          If DecPointFlag Then
            Sd = Sd / 10#
            S = S + N * Sd
          Else
            S = S * 10# + N
          End If
        Case Else
BadNumber:
          TextToSingle = True
          Exit Function
      End Select
    Next I
  End If
  If MinusFlag Then S = -S
  TextToSingle = False
End Function

Public Function TextToInteger(T As String, S As Integer) As Boolean
' Return True = bad number.
  Dim Tx As String, MinusFlag As Boolean
  Dim I As Integer, A As String, N As Integer
'
  Tx = TrimTabSpaces(T)
  S = 0
  If Left(Tx, 1) = "-" Then
    Tx = Right(Tx, Len(Tx) - 1)
    MinusFlag = True
  Else
    If Left(Tx, 1) = "+" Then Tx = Right(Tx, Len(Tx) - 1)
    MinusFlag = False
  End If
  If Len(Tx) > 0 Then
    For I = 1 To Len(Tx)
      A = Mid(Tx, I, 1)
      Select Case A
        Case "0" To "9"
          On Error GoTo BadNumber
          N = Asc(A) - Asc("0")
          S = S * 10 + N
        Case Else
BadNumber:
          TextToInteger = True
          Exit Function
      End Select
    Next I
  End If
  If MinusFlag Then S = -S
  TextToInteger = False
End Function

Public Function LTrimTabSpaces(S As String) As String
  Dim I As Long, L As Long, C As String
  L = Len(S)
  If L > 0 Then
    For I = 1 To L
      C = Mid(S, I, 1)
      If (C <> " ") And (C <> Chr(9)) Then
        LTrimTabSpaces = Right(S, L - I + 1)
        Exit Function
      End If
    Next I
  End If
  LTrimTabSpaces = ""
End Function

Public Function RTrimTabSpaces(S As String) As String
  Dim I As Long, L As Long, C As String
  L = Len(S)
  If L > 0 Then
    For I = L To 1 Step -1
      C = Mid(S, I, 1)
      If (C <> " ") And (C <> Chr(9)) Then
        RTrimTabSpaces = Left(S, I)
        Exit Function
      End If
    Next I
  End If
  RTrimTabSpaces = ""
End Function

Public Function TrimTabSpaces(S As String) As String
  TrimTabSpaces = RTrimTabSpaces(LTrimTabSpaces(S))
End Function
Technical Details
Message-ID: <3A2D60AA.C9D9F062@chello.be>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <3A263543.2339A67@iname.com>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,a9c1610d90687a44
X-Google-Attributes: gidfcea4,public
From: AquatiK <Hugo.Maes@chello.be>
Subject: Re: Visual Basic punt of komma probleem
Date: 2000/12/05
Message-ID: <3A2D60AA.C9D9F062@chello.be>
X-Deja-AN: 701514043
Content-Transfer-Encoding: 7bit
References: <3A263543.2339A67@iname.com>
X-Accept-Language: en
Content-Type: text/plain; charset=us-ascii
X-Complaints-To: abuse@chello.be
X-Trace: news.chello.be 976052215 195.162.213.139 (Tue, 05 Dec 2000 22:36:55 MET)
Organization: Chello Usenet Service
MIME-Version: 1.0
NNTP-Posting-Date: Tue, 05 Dec 2000 22:36:55 MET
Newsgroups: be.comp.programming