Мне кажется, решение где то на поверхности - но я его пропускаю.
Имеется:
Чтение файла, построчно.
Когда достигается определенная строка в цикле - присваиваем значение label.
Когда пытаюсь число типа 123 123 из string преобразовать через val - то получаю только 123
Если через cdbl - несовпадение типов.
Это странно - потому что раньше так работало....
Код:
Dim MyFile, FIO As String, i As Integer, y(76) As Integer
Dim r(9) As Long, u As Long
MyFile = FreeFile
Open ("C:\Logg\planlog.txt") For Input As MyFile
For i = 0 To 76
y(i) = i
Line Input #MyFile, FIO
FIO = Strings.Format$(FIO, "0,0")
...............
If i = 63 Then Label95.Caption = FIO
If i = 64 Then Label96.Caption = FIO
Label103.Caption = CDbl(Label96.Caption) - CDbl(Label95.Caption)
Next i
Close #MyFile
В файле C:\Logg\planlog.txt - строки и символы
Запись производится верно, число отображаются строковым типом с разделением по разрядам.
Как производить арифметические операции с ними тогда?
Решение нашел.
Логически объяснить не могу...
Label103.Caption = CDbl(Label96.Caption) - CDbl(Label95.Caption)
Эту строку выносим за пределы Close #MyFile
Тогда работает.
Ну я имел ввиду ни тип данных, а слово типа - т.е. например.
В результате преобразования я должен получить числа, где то до одного десятка, где то без них.
Вид чисел - разделение по разрядам, то есть пробел через три цифры.
Как и говорил чуть выше - преобразование через cdbl работает, если делать это после закрытия файла.
Если достаточно десятые, то используй тип данных single.
Если пробел - это просто разделитель, то тебе его нужно сперва удалить его перед преобразованием в число. Кроме того, если число с плавающей запятой, то нужно учесть региональные стандартны, иначе получишь ошибку.
Код:
Dim sngResult as single
sngResult = CSng(replace(replace(Label1.Caption),",",".")," ","")
а вот здесь я честно говоря не знаю что ты делаешь, зачем отнимаешь одно число от другого: