powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись в файл
10 сообщений из 10, страница 1 из 1
Запись в файл
    #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
Запись в файл
    #39694034
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДРаботает, но заменяет все содержимоеСам же открываешь файл FOR OUTPUT.
Измени режим открытия.
...
Рейтинг: 0 / 0
Запись в файл
    #39694044
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. for Append? Я полагал, что режим Output подразумевает режим записи, который надо уточнить, задав определенные параметры.
Append, видимо, запишет в хвост. А вместо многоточия что вписать?
...
Рейтинг: 0 / 0
Запись в файл
    #39694064
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДРаботает, но заменяет все содержимое, а надо, чтобы вставлялся первым символом амперсанд.Ну! Так тебе нужно после записи амперсанда записать все остальное содержимое файла. Это как с массивом - ты не можешь вставить в нулевую позицию элемент, не перезаписав все остальные элементы.

Так что открываешь один файл на чтение, другой на запись и перефигачиваешь содержимое из одного в другой.
...
Рейтинг: 0 / 0
Запись в файл
    #39694067
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще, поскольку это бинарный файл, работать надо с Put и Get, а не с Print и открывать файл As Binary...
...
Рейтинг: 0 / 0
Запись в файл
    #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
Запись в файл
    #39694130
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский, спасибо за наглядный пример! А можно как-то узнать, поместится буфер в память или нет?
...
Рейтинг: 0 / 0
Запись в файл
    #39694173
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДузнать, поместится буфер в память или нетПосмотреть на размер файла, и сравнить с Visual Basic Limitations.
...
Рейтинг: 0 / 0
Запись в файл
    #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
Запись в файл
    #39694190
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я, конечно, почитаю. Но думаю, что не понадобится, т.к. размер файлов в основном 1-2 Мб.
Спасибо всем за помощь!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись в файл
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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