Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите как в VB загрузить в память файл более 64кб / 19 сообщений из 19, страница 1 из 1
22.02.2011, 15:15
    #37130661
Андик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
как в vb(у меня старенький четвертый) загрузить в память файл более 64кб (более одной строки) подскажите как это сделать (или чем?)
...
Рейтинг: 0 / 0
22.02.2011, 15:17
    #37130668
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
что вы понимаете под "загрузить в память файл" ?
...
Рейтинг: 0 / 0
22.02.2011, 17:05
    #37130987
Андик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
Ну если загрузить в память текстовый файл или скажем бинарный,размером больше чем 64 кб(не читать его сдиска частями записывая его в строчную переменную,и обрабатывать так).Может какие-то операторы(итп..) для этого есть специальные,сам в helpe-en что-то найти не могу.
...
Рейтинг: 0 / 0
22.02.2011, 18:03
    #37131132
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
Когда то был VB4 (16 разрядный) и вроде бы нормально. Пробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
'Функция открытия файла как текст
Public Function FileOpenText(ByVal sFilePath As String) As String
    Open sFilePath For Input As # 1 
        FileOpenText = Input(LOF( 1 ), # 1 )
    Close # 1 
End Function
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
'Функция открытия файла как двоичные данные
Public Function FileOpenBinary(ByVal sFilePath As String) As String
    Dim sTextBuff As String
    sTextBuff = Space(FileLen(sFilePath))

    Open sFilePath For Binary As # 1 
        Get # 1 , , sTextBuff
    Close # 1 

    FileOpenBinary = sTextBuff
End Function
...
Рейтинг: 0 / 0
22.02.2011, 21:42
    #37131370
Андик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
В обоих случаях переменная обьявлена как ($) ,а это я уже испробовал всё ,там лимит длинны строки . Вопрос в том как его преодолеть .
...
Рейтинг: 0 / 0
22.02.2011, 23:07
    #37131454
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
честно говоря не очень понятно

но с большими файлами хорошо работает FSO
в инете примеров много
вот только не знаю дружит ли он с VB4
...
Рейтинг: 0 / 0
23.02.2011, 01:06
    #37131571
Андик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
Не дружит.Вообще судя по поиску который я провел FSO появилось в VB6
и к 16-битному компилятору 32-битная (scrrun.dll) не подходит.Но может как-то
можно обойтись без обновления компилятора.(с интернетом проблемы)
...
Рейтинг: 0 / 0
23.02.2011, 11:01
    #37131826
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
Тут статья , прочитайте её. Там кстати и найдёшь об ограничениях:

ЦитатаСреди прежних ограничений VB4 -ограниченная длина строки, для которой сохраняется лимит в 64 Кб. Многострочные средства управления TextBox по-прежнему составляют всего "около 32К", как сказано в интерактивной документации.
...
Рейтинг: 0 / 0
23.02.2011, 11:02
    #37131829
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
Если есть возможность, можно установить VB6 "Protable" версию, около 5 мб.
...
Рейтинг: 0 / 0
23.02.2011, 11:17
    #37131848
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
опять я

тут на форуме был пример класса StringBuilder
работа со стрингами через CopyMemory
буфер там может быть достаточно большой

как вариант
хотя опять не известно как он будет работать с VB4
...
Рейтинг: 0 / 0
23.02.2011, 14:43
    #37132176
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
В переменную типа String - ты всё равно не сможешь запихнуть её. Ограничение длины строки это не VB4 прихоть, а ограничение разрядности процессора.

-- OFF --
Я тут на коммуникатор под WM 6.0, через PocketDOS ставил MSDOS, а сверху накатил Windows 3.11 (в процессе) и хочу запустить VB 3.0 - туда 32 битку естественно не поставишь.
Надеюсь что у автора, есть персональный компьютер с 32/64 битами, и проще уж найти VB 6.0, чем применять нетрадиционную магию
...
Рейтинг: 0 / 0
24.02.2011, 09:37
    #37133031
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
Андиккак в vb(у меня старенький четвертый) загрузить в память файл более 64кб (более одной строки) подскажите как это сделать (или чем?)

А вариант поставить VB.NET или хотя бы VB6 совсем не рассматривается?
...
Рейтинг: 0 / 0
24.02.2011, 11:03
    #37133219
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
АндикВообще судя по поиску который я провел FSO появилось в VB6FSO это часть операционной системы, а не VB.

Андикк 16-битному компилятору 32-битная (scrrun.dll) не подходит.wikiавгуст 1995 — Visual Basic 4.0 — версия, которая могла создавать как 32-х так и 16-разрядные Windows-программы. C другой стороны,wikiIncompatibilities between different releases of VB4 caused installation and operation problems.
...
Рейтинг: 0 / 0
24.02.2011, 11:14
    #37133256
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
AntonariyC другой стороны,wikiIncompatibilities between different releases of VB4 caused installation and operation problems.

Да какая разница - если в VB4 есть ограничение на длину строки или размер массива, то FSO все одно не позволит их обойти. А просто обрабатывать большой файл частями можно и без него.
...
Рейтинг: 0 / 0
24.02.2011, 12:24
    #37133441
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
почему бы не читать файл блоками и не записывать в стринговый массив?

Dim getFreeFile As Long, strTemp As String, bFound As Boolean, strArray() As String
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
ReDim strArray( 0 ) As String
getFreeFile = FreeFile

Open strFile For Input As #getFreeFile
    Do Until EOF(getFreeFile)
        Line Input #getFreeFile, strTemp
        ReDim Preserve strArray((UBound(strArray)) +  1 ) As String
        strArray(UBound(strArray)) = strTemp
    Loop
Close #getFreeFile
...
Рейтинг: 0 / 0
24.02.2011, 20:49
    #37134585
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
Konst_One, попробовал код на VB3, выдаёт ошибочку, хотя длина одной строки допустима, символов до 100:
Код: plaintext
"Out of string space"


Сумма длин всех считанных строк в массиве составила: 56557 символов, может какая то взаимосвязь есть. Работа с Byte в VB3 невозможна, так как типа такого ещё не появилось, как в VB4 обстоит не помню... Устанавливать не хочется.

Читая справку VB3, пишут:
Код: plaintext
 String , 1 byte per character	0 to approximately 65,500 bytes. (Some storage overhead is required.)
...
Рейтинг: 0 / 0
04.03.2011, 00:00
    #37147964
Андик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
Уменя получилось загрузить в память
файл размером больше чем длинна строки (собственно мне это и нужно было)
оказываеться используя оператор (ReDim) и соответственно создавая через него байтный
динамичесский массив в памяти можно легко грузить и больше чем 64кб.
(здесь видно всё ограничеваеться типом и значением переменной
,но больше 2Гб. наверное загрузить неполучиться - проверять не стал, мне и так хватает ;))Еще-бы (FOR-NEXT) обойти.
С остальным (FSO,StringBuilder итд я ещё буду разбираться когда появиться новый компилятор)
PS:был на разных форумах,там где подобные дела, везде советуют обработку файлов вести поблочно.

Dim I&, N&, M() As Byte

'ФАЙЛ TST2.TXT = 140КБ

I = FileLen("TST2.TXT")
ReDim M(I)

'Открытие файла
Open "TST2.TXT" For Binary As #1
For N = 1 To I
Get #1, , M(N)
Next N
Close #1

'Создание файла
Open "TST3.TXT" For Binary As #1
For N = 1 To I
Put #1, , M(N)
Next N
Close #1
...
Рейтинг: 0 / 0
04.03.2011, 11:40
    #37148557
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
VSVLADKonst_One, попробовал код на VB3, выдаёт ошибочку, хотя длина одной строки допустима, символов до 100:
Код: plaintext
"Out of string space"


Сумма длин всех считанных строк в массиве составила: 56557 символов, может какая то взаимосвязь есть. Работа с Byte в VB3 невозможна, так как типа такого ещё не появилось, как в VB4 обстоит не помню... Устанавливать не хочется.

Читая справку VB3, пишут:
Код: plaintext
 String , 1 byte per character	0 to approximately 65,500 bytes. (Some storage overhead is required.)


про VB3 никто не упоминал, пример для vb4 и выше
...
Рейтинг: 0 / 0
18.03.2011, 08:20
    #37171355
RESAMPLE1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в VB загрузить в память файл более 64кб
Не могу точно знать как в vb4 и что за операционка у автора, но в vb6 много лет юзаю api:

Код: plaintext
1.
2.
3.
4.
5.
Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
Private Declare Function lcreat Lib "kernel32" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Long) As Long
Private Declare Function llseek Lib "kernel32" Alias "_llseek" (ByVal hFile As Long, ByVal lOffset As Long, ByVal iOrigin As Long) As Long
Private Declare Function lread Lib "kernel32" Alias "_lread" (ByVal hFile As Long, lpBuffer As Any, ByVal wBytes As Long) As Long
Private Declare Function lwrite Lib "kernel32" Alias "_lwrite" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal wBytes As Long) As Long

отлично считывает и записывает блоками до 65 кб, в массив любые файлы до 2ГБ, далее можно соединить join(arrblock, "")- это функция vb6, в vb4 можно через функции api соединить в строку.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите как в VB загрузить в память файл более 64кб / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]