Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись в файл / 10 сообщений из 10, страница 1 из 1
27.08.2018, 21:53
    #39694009
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в файл
Не ругайтесь если было.
Задача - в файл, например, в Excel'евский в первую позицию записать какой-л. символ.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim s As String
Dim ff

    s = "&"    
    ff = FreeFile    
    mstrPathFile = "путь\название файла.xls"
    Open mstrPathFile For Output As #ff 
    ....?
    Print #ff, s
    Close ff

Работает, но заменяет все содержимое, а надо, чтобы вставлялся первым символом амперсанд.
...
Рейтинг: 0 / 0
27.08.2018, 23:03
    #39694034
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в файл
КДРаботает, но заменяет все содержимоеСам же открываешь файл FOR OUTPUT.
Измени режим открытия.
...
Рейтинг: 0 / 0
27.08.2018, 23:42
    #39694044
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в файл
Т.е. for Append? Я полагал, что режим Output подразумевает режим записи, который надо уточнить, задав определенные параметры.
Append, видимо, запишет в хвост. А вместо многоточия что вписать?
...
Рейтинг: 0 / 0
28.08.2018, 04:20
    #39694064
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в файл
КДРаботает, но заменяет все содержимое, а надо, чтобы вставлялся первым символом амперсанд.Ну! Так тебе нужно после записи амперсанда записать все остальное содержимое файла. Это как с массивом - ты не можешь вставить в нулевую позицию элемент, не перезаписав все остальные элементы.

Так что открываешь один файл на чтение, другой на запись и перефигачиваешь содержимое из одного в другой.
...
Рейтинг: 0 / 0
28.08.2018, 05:37
    #39694067
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в файл
А еще, поскольку это бинарный файл, работать надо с Put и Get, а не с Print и открывать файл As Binary...
...
Рейтинг: 0 / 0
28.08.2018, 10:11
    #39694116
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в файл
можно без второго файла обойтись, если содержимое файла поместится в память
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub ww()
Dim s As String
Dim ff As Integer
    s = "&"
    ff = FreeFile
    mstrPathFile = "c:\temp\test.xls" '"путь\название файла.xls"
    Open mstrPathFile For Binary As #ff
    ReDim buf(1 To LOF(ff)) As Byte
    Get ff, , buf
    Put ff, 1, s
    Put ff, 2, buf
    Close ff
End Sub
...
Рейтинг: 0 / 0
28.08.2018, 10:32
    #39694130
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в файл
Казанский, спасибо за наглядный пример! А можно как-то узнать, поместится буфер в память или нет?
...
Рейтинг: 0 / 0
28.08.2018, 11:27
    #39694173
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в файл
КДузнать, поместится буфер в память или нетПосмотреть на размер файла, и сравнить с Visual Basic Limitations.
...
Рейтинг: 0 / 0
28.08.2018, 11:34
    #39694178
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в файл
КД, какого размера ваши файлы? Для современных компов выделить под массив несколько сотен МБ - не проблема.
можно ОЦЕНИТЬ размер доступной физической памяти с помощью WinAPI функции GlobalMemoryStatus http://www.java2s.com/Code/VBA-Excel-Access-Word/Windows-API/GetSystemMemorySize.htm
или с помощью WMI https://stackoverflow.com/questions/701587/best-method-to-obtain-current-memory-configuration-in-vba
, однако точного ответа на вопрос, можно ли создать массив данного размера, Вы не получите.
Так что лучше поставить On Error... перед ReDim, и если возникает ошибка, то действовать как Shocker.Pro написал в 21655625
Или можно записать s в новый файл и слить два файла CMD командой copy /b файл1+файл2 файлРезультат
...
Рейтинг: 0 / 0
28.08.2018, 11:43
    #39694190
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в файл
Я, конечно, почитаю. Но думаю, что не понадобится, т.к. размер файлов в основном 1-2 Мб.
Спасибо всем за помощь!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись в файл / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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