Как програмно указать размер Строковой переменной?

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

Как програмно указать размер Строковой переменной?

Сообщение TrueTrue » 16.01.2019 (Ср) 15:42

Не знаю, как правильно это назвать,

есть Строковая переменная, допустим

Код: Выделить всё
Dim Word as String * 10


В конце я могу указать её размер в байтах, в данном случае 10.

Мне необходимо знать, как можно этот размер устанавливать ДИНАМИЧЕСКИ? тоесть програмно, в коде. Это вобще реально? или только так, при старте, единожды?

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

Re: Как програмно указать размер Строковой переменной?

Сообщение Viper » 16.01.2019 (Ср) 19:23

TrueTrue писал(а):Мне необходимо знать, как можно этот размер устанавливать ДИНАМИЧЕСКИ? тоесть програмно, в коде. Это вобще реально? или только так, при старте, единожды?
Массив символов?
Весь мир матрица, а мы в нем потоки байтов!

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Как програмно указать размер Строковой переменной?

Сообщение Debugger » 16.01.2019 (Ср) 21:02

Просто
Код: Выделить всё
Dim Word as String

?

TrueTrue
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 167
Зарегистрирован: 20.05.2009 (Ср) 23:18

Re: Как програмно указать размер Строковой переменной?

Сообщение TrueTrue » 17.01.2019 (Чт) 5:51

Viper писал(а):
TrueTrue писал(а):Мне необходимо знать, как можно этот размер устанавливать ДИНАМИЧЕСКИ? тоесть програмно, в коде. Это вобще реально? или только так, при старте, единожды?
Массив символов?

Не катит.

Вобщем смысл такой, что мне нужно, считывать файлы в режиме Binary, файлы разного размера, их много. Я их Считываю Get и Put. Проделываю необходимые манипуляции и записываю обратно. По началу, пока файлов было мало, работало прекрасно. Но вот сейчас, файлов всё больше и побайтовое чтение занимает очень много времени. В другой режим перейти не могу, потому что пишу в файлы именно Байты, от ASC(0 - 255)

Как увеличить скорость? Попробовал менять размер переменной, по размеру файла. Тоесть допустим

Код: Выделить всё
Dim ReadBinary as String * 1566
Seek 1,1
Get 1,,ReadBinary

работает в разы быстрее. Но проблема-то в том, что фалов много и каждый своего размера от 20 байт, до 6000 байт.
А скорость с каждым файлом, падает существенно.... :(


Вобще-то, теоретически, должен был бы работать вот такой вот оборот:

Код: Выделить всё
Dim ReadBinary as String
Get 1,1566,ReadBinary

Но он почему-то нифига не работает и я вобще не помню, что бы он хотя бы когда-нибудь работал в VB6.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как програмно указать размер Строковой переменной?

Сообщение Mikle » 17.01.2019 (Чт) 8:35

Зачем нужны строки вообще, если в файле байты?
TrueTrue писал(а):фалов много и каждый своего размера от 20 байт, до 6000 байт

При таких размерах я бы редимил байтовый массив под размер файла, каждый файл считывал целиком за раз, а потом из массива делил как надо.

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

Re: Как програмно указать размер Строковой переменной?

Сообщение alibek » 17.01.2019 (Чт) 9:35

TrueTrue писал(а):Вобщем смысл такой, что мне нужно, считывать файлы в режиме Binary,

S$ = Space$(N)
ReDim B(1 To N)

TrueTrue писал(а):Но проблема-то в том, что фалов много и каждый своего размера от 20 байт, до 6000 байт.

Глупо и бессмысленно.
Нужно создавать буфер в размер файла и считывать за раз.
Система оптимизирует считывание намного эффективнее.
Ограничивать размер буфера есть смысл только в случае очень больших файлов и лимитов на использование памяти.

TrueTrue писал(а):Но он почему-то нифига не работает и я вобще не помню, что бы он хотя бы когда-нибудь работал в VB6.

Нужно нажать F1 и почитать документацию.
Все работает, если делать правильно.
Lasciate ogni speranza, voi ch'entrate.

TrueTrue
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 167
Зарегистрирован: 20.05.2009 (Ср) 23:18

Re: Как програмно указать размер Строковой переменной?

Сообщение TrueTrue » 17.01.2019 (Чт) 9:58

Mikle писал(а):Зачем нужны строки вообще, если в файле байты?
TrueTrue писал(а):фалов много и каждый своего размера от 20 байт, до 6000 байт

При таких размерах я бы редимил байтовый массив под размер файла, каждый файл считывал целиком за раз, а потом из массива делил как надо.

Ты имеешь ввиду режим файла INPUT? А разве INPUT не режет байты ASC (0) и другие???? Мне просто нельзя нарушать структуру файлов. Потому и считываю их в Binary.

Просто я не знаю, как в BINARY, считать весь файл целиком? ну кроме того, если задать размер переменной.

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

Re: Как програмно указать размер Строковой переменной?

Сообщение alibek » 17.01.2019 (Чт) 11:53

Код: Выделить всё
Dim B() as Byte
ReDim B(1 To Lof(1))
Get 1, , B()
Lasciate ogni speranza, voi ch'entrate.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как програмно указать размер Строковой переменной?

Сообщение Mikle » 17.01.2019 (Чт) 12:06

Я имел ввиду именно в Binary, alibek показал как.

TrueTrue
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 167
Зарегистрирован: 20.05.2009 (Ср) 23:18

Re: Как програмно указать размер Строковой переменной?

Сообщение TrueTrue » 18.01.2019 (Пт) 7:46

Опа, спасибо, первый раз вижу такую конструкцию. Не знал вобще, что так можно.

Teranas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 224
Зарегистрирован: 13.12.2008 (Сб) 4:26
Откуда: Новосибирск

Re: Как програмно указать размер Строковой переменной?

Сообщение Teranas » 18.01.2019 (Пт) 8:44

Опа, спасибо, первый раз вижу такую конструкцию. Не знал вобще, что так можно.


Даже странно. Размер буфера по размеру файла, дело обычно, в том числе для новичков.
А вот если файл здоровенный то эффективней читать по частям, и чтение целиком вызовет гемор.
С уважением, Андрей.


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 16

    TopList