.exe и база данных .txt в одном .EXE файле ???

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

Сообщение soundex2 » 21.01.2004 (Ср) 14:37

Для начала...
http://azbukavb.narod.ru/vdb.html

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 21.01.2004 (Ср) 20:57

Способ один - дописывать базу в конец файла.

Алгоритм:
1) открываем exe файл для записи
2) ищем наш заголовок (см. дальше)
3) если есть, переписываем базу с этой позиции. если нет - пишем в конец добавляя заголовок, чтобы потом можно его было найти.
4) закрываем файл

когда надо редактировать, просто читаешь базу из exe в отдельный временный файл, редактируешь, потом запихиваешь обратно в exe.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 21.01.2004 (Ср) 23:33

xolod писал(а):Способ один - дописывать базу в конец файла...


Да, по-идее правильно, но только по-идее! Ранее подобный вопрос рассматривали в форуме. Попробуй изменить .ехе, с которого был запущен процесс! В среде ВБ - получается, после компиляции - нет.
При таком решении надо создавать два временных ф-ла - копию .ехе и копию базы.

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 23.01.2004 (Пт) 1:42

У тебя не получится дописать что-либо в конец своего экзешника, потому что в этот момент он будет запущен и закрыт виндой для редактирования. Вот.

А вообще в конец программы дописывается так:
Код: Выделить всё
Public BeginPos As Long
Open "Программа.exe" For Binary As #1
BeginPos = LOF(1)   'запоминаем адрес начала наших данных
varTemp = то что ты хочешь сохранить
Seek #1, LOF(1)
Put #1, , varTemp   'записываем данные в конец файла
Put #1, , BeginPos  'записываем адрес начала данных
Close (1)

А считывать данные так:
Код: Выделить всё
Public BeginPos As Long
Open "Программа.exe" For Binary As #1
Get #1, LOF(1) - 3, BeginPos    'Получаем адрес начала данных
Seek #1, BeginPos               'Переходим к ним
Get #1, , varTemp               'Считываем данные
Close (1)

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 24.01.2004 (Сб) 7:12

Сам не пробовал, но примерно так:
При первом добавлении данных в файл используешь тот еж код. А при следующих перезаписях данных делаешь так:
Код: Выделить всё
Public BeginPos As Long
Open "Программа.exe" For Binary As #1
Get #1, LOF(1) - 3, BeginPos    'Получаем адрес начала записанных данных с прошлого раза
Seek #1, BeginPos               'Переходим к ним
Put #1, , varTemp               'Записываем новые данные на место старых
Seek #1, LOF(1)                 'Идем в конец файла
Put #1, , BeginPos              'записываем адрес начала новых данных
Close (1)

Считываешь так же как обычно.

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 24.01.2004 (Сб) 15:54

Я тебя навел на путь, дальше думай сам, попробуй поэкспериментировать, пару раз повесить систему, может и вовсе переустановить её, но главное не отступай от цели и тогда всё получится. Тот пример что дал тебе я - совсем сырой, и доводить его до совершенства уже твоя задача, я умываю руки.


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

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

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 3

    TopList  
cron