|
ADODB.Stream Как заменить содержимое файла, а не дописать его. | ☑ | ||
---|---|---|---|---|
0
Rounder
13.03.13
✎
11:19
|
Необходимо изменить 28-й байт бинарного файла.
Вот что делаю я: Поток = Новый COMОбъект("ADODB.Stream"); Поток.Type = 1; Поток.Mode = 3; Поток.Open(); Поток.LoadFromFile(Путь + "start.dbf"); ДвоичнаяСтрока = Поток.Read(-1); ДвоичнаяСтрока.SetValue(28, 1); Поток.Write(ДвоичнаяСтрока); Поток.SaveToFile(Путь + "start.dbf", 2); Поток.Close(); Как сделать чтобы при SaveToFile не дозаписывалось к содержимому файла, а заменялось содержимое. В описанном выше коде содержимое дописывается к содержимому файла. |
|||
1
ZanderZ
13.03.13
✎
11:23
|
запиши в другой файл
|
|||
2
zladenuw
13.03.13
✎
11:24
|
зачем тогда читаешь файл? просто запиши его с таким же именем или не ?
|
|||
3
Rounder
13.03.13
✎
11:25
|
Не катит.
|
|||
4
Rounder
13.03.13
✎
11:25
|
Я понимаю что можно манипулировать файлами, удалить тот что есть, и записать в пустой с таким же именем. Но это очень крайний случай.
Может я просто не разобрался до конца с ADODB.Stream и есть возможность ее методами реализовать эту задачу. |
|||
5
Жан Пердежон
13.03.13
✎
11:26
|
всё хочешь индексы 1Сных dbf-ок кому-то еще скармливать,
не проще ли сами dbf через ado создавать? |
|||
6
Rounder
13.03.13
✎
11:26
|
(2) Не совсем понял про зачем читаешь. А как еще можно получить его содержимое, часть которого должно быть изменено?
|
|||
7
Rounder
13.03.13
✎
11:27
|
(5) Может и проще - но пока пытаюсь так решить проблему :)
|
|||
8
Rounder
13.03.13
✎
11:27
|
Убегаю на совещанку - вернусь обязательно прочту - если будут еще комменты или советы.
|
|||
9
Rounder
13.03.13
✎
12:12
|
Актуально.
|
|||
10
Rounder
13.03.13
✎
12:30
|
Неужели никто не решал подобной задачи?
|
|||
11
Rounder
13.03.13
✎
12:48
|
Проблему решил. Как обычно помог отладчик :)
Содержимое Поток удваивалось на строке Поток.Write(ДвоичнаяСтрока); В итоге перед ней вставил Поток.Position = 0; и все заработало. И теперь Fox видит индексный файл :) Спасибо всем кто пытался помочь. Итоговый код выглядит так: Поток = Новый COMОбъект("ADODB.Stream"); Поток.Type = 1; Поток.Mode = 3; Поток.Open(); Поток.LoadFromFile(Путь + "start.dbf"); ДвоичнаяСтрока = Поток.Read(-1); ДвоичнаяСтрока.SetValue(28, 1); Поток.Position = 0; Поток.Write(ДвоичнаяСтрока); Поток.SaveToFile(Путь + "start.dbf", 2); Поток.Close(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |