Da zumindest Visual Basic 6 keine Funktion zum Auslesen von einzelnen Zeilen eines Textfeldes (Textbox) hat, muss man solch eine Funktion selbst realisieren.
'Funktion zum Auslesen einzelner Zeilen
'Aufruf: z.B. strNeu = SelectLine(txtText1, 2)
'Die Nummerierung beginnt bei 1 (oberste Zeile -> 1). Ist die
'gewünschte Zeile nicht vorhanden, so wird ein leerer String
'zurückgegeben.
Function SelectLine(txt As Control, line As Long) As String
Dim a As String
Dim i As Long
Dim linecnt As Long
linecnt = 1
a = ""
For i = 1 To Len(txt.text)
If InStr(Mid(txt.text, i, 2), vbCrLf) Then
linecnt = linecnt + 1
i = i + 2
End If
If linecnt > line Then
Exit For
End If
If linecnt = line Then
a = a + Mid(txt.text, i, 1)
End If
Next
SelectLine = a
End Function
Wer schon ein wenig mit Visualbasic zu tun hatte, dem ist sicher bekannt, dass VB zwar C ähnlich ist aber ansonsten nicht viel mit C gemeinsam hat.
Und so schert sich VB auch nichts um Internationale Standards wie z.B. den 32-Bit Float Standard (siehe Wiki.
Darum war ich gezwungen, mir eine Funktion zu schreiben, welche die Umrechnung vom VB-Format Single in das Float-Format übernimmt.
Static Function SingleToFloat(X)
Dim e As Integer
Dim float As Long
Dim m As Long
If X <> 0 Then
e = Math.Round(Log2(Abs(X)) - 0.5)
m = (Abs(X) / (2 ^ e) - 1) * 2 ^ 23
e = e + 127
float = m
float = float Or (e * &H800000)
If X < 0 Then
float = float Or &H80000000
End If
Else
float = 0
End If
SingleToFloat = float
End Function
Static Function Log2(X)
Log2 = Log(X) / Log(2#)
End Function
Und die Umkehrung dazu:
Static Function FloatToSingle(X)
Dim e As Integer
Dim m As Long
Dim singl As Single
Dim vz As Boolean
If X And &H80000000 Then
vz = 1
Else
vz = 0
End If
m = X And &H7FFFFF
e = (X And &H7F800000) / &H800000
FloatToSingle = (-1) ^ vz * (1 + m / (2 ^ 23)) * 2 ^ (e - 127)
End Function
Da ich ziemlich viel mit Programmierung, vor allem in C, zu tun habe, habe ich nun beschlossen ein kleines Codearchiv anzulegen. So tue auch ich mir leichter, Funktionen die ich immer wieder benötige zu finden.
Hier geht’s zum Codearchiv.