Перевод строки в Long и Single

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Kolobuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 24.10.2006 (Вт) 20:03

Перевод строки в Long и Single

Сообщение Kolobuk » 07.02.2007 (Ср) 13:20

Привет.

У меня есть массив строк. Строки разной длинны. Кол-во размерностей в массиве ~ 50 000

Необходимо из некоторых строк "изымать" данные типа Long и Single, изменять, добавлять.

Как это осуществить?

И много ли это займёт времени, если обработать 1000-2000 строк?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.02.2007 (Ср) 18:56

50000 размерностей? Ты уверен?
Lasciate ogni speranza, voi ch'entrate.

Kolobuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 24.10.2006 (Вт) 20:03

Сообщение Kolobuk » 08.02.2007 (Чт) 0:11

Ну да. Каждая строка от 16 до 512 байт.
Итог - ~ 20 Мб в памяти.

Но все обрабатывать не нужно. Только 100 -700.

zan
Бывалый
Бывалый
 
Сообщения: 224
Зарегистрирован: 24.08.2006 (Чт) 4:55

Re: Перевод строки в Long и Single

Сообщение zan » 08.02.2007 (Чт) 5:05

Kolobuk писал(а):У меня есть массив строк. Необходимо из некоторых строк "изымать" данные типа Long и Single, изменять, добавлять.

Формулировка вопроса странная... Если без конкретики - IsNumeric, CLgn, CSng, TypeName...
Kolobuk писал(а):И много ли это займёт времени, если обработать 1000-2000 строк?

А много надо?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 08.02.2007 (Чт) 8:06

Что есть термин "размерность" с точки зрения автора?

Каким образом предполагается определять, где в массиве те строки, которые необходимо преобразовать?
Весь мир матрица, а мы в нем потоки байтов!

Kolobuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 24.10.2006 (Вт) 20:03

Сообщение Kolobuk » 08.02.2007 (Чт) 18:49

Вообще проще сразу создать массив As Long, а не строковой.

Но тогда появляется проблема, из-за которой я пытался избавиться путём чтения в строковой массив:

Формат данных в файле такой:

Первые 4 байта - Long. - нужная информация
А вот 4-й байт первого лонга - Byte (тоже нужен нам). Далее - не важно.
Т.е. если мы обнулим этот байт - можно
спокойно получить первый Long. Ну... т.е. байт накладывается на 4-й байт long'a.

Если считывать в строку, можно было бы с помощью Mid временно обнулить байт, считать long, вернуть байт на место.

Жаль нет 3-х байтовых типов данных :(

--------------
Формат файл не мой :?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.02.2007 (Чт) 22:25

3-х байтовый тип данных легко сделать в виде UDT.
Изображение

Kolobuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 24.10.2006 (Вт) 20:03

Сообщение Kolobuk » 08.02.2007 (Чт) 22:48

Спасибо за ключевое слово :)
В поиске много на это есть

Буду разбираться.
--------------------------

Понял, что UDT это пользовательский тип.

Но как в нём создать 3-х байтовый тип данных?
Так?

Код: Выделить всё
Type AR
od As Byte
dv As Byte
tr As Byte
End Type
Public TRI() As AR


Но тогда нужно опять же их как то соединять\разьединять.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 08.02.2007 (Чт) 23:15

CopyMemory
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Kolobuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 24.10.2006 (Вт) 20:03

Сообщение Kolobuk » 08.02.2007 (Чт) 23:25

CopyMemory это через API

Мне бы простенько хотелось :oops:

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 08.02.2007 (Чт) 23:26

Молоко - это жидкость.

А мне бы хотелось сладенького


Не вижу связи между API и сложным.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 08.02.2007 (Чт) 23:45

Kolobuk писал(а):CopyMemory это через API
Мне бы простенько хотелось :oops:

Тогда через LSet.
Lasciate ogni speranza, voi ch'entrate.

Kolobuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 24.10.2006 (Вт) 20:03

Сообщение Kolobuk » 09.02.2007 (Пт) 0:12

Всё получилось. Всем спасибо.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot, Yandex-бот и гости: 103

    TopList