Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
Delphi 6-7

Запись, Сохранение и Чтение пути к БД Access в файл txt Delphi 7

23.12.2019, 13:29. Показов 8715. Ответов 100
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
P.S. После перемещения файла базы Access, при запуске проекта выбивает ошибку о том что программа не может найти путь к файлу базы.
Так вот я хочу создать файл txt в который записывался путь к бд Access при подключении базы к проекта и сохранялся путь в txt файле и считывался путь к базе из файла при запуске проекта.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2019, 13:29
Ответы с готовыми решениями:

Запись, Сохранение и Чтение пути к БД Access в файл txt Delphi 7
P.S. После перемещения файла базы Access, при запуске проекта выбивает ошибку о том что программа не может найти путь к файлу базы. Так...

Чтение с txt файла и запись в StringGrid Delphi 7
Так как только учусь не могу понять как записать правильно. Читать оно читает, а данные не знаю как записать, вот кусочек кода с чтением: ...

Запись и сохранение в файл *.txt
Приветствую Вас, форумчане! Мне нужна помощь. 1) Как создать файл *.txt, а также сохранение в нем информации: - с перезаписью...

100
6005 / 4580 / 1096
Регистрация: 29.08.2013
Сообщений: 28,288
Записей в блоге: 3
05.01.2020, 23:48
Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.sLabel4Click(Sender: TObject);
begin
  Form23.ADOConnection1.Close;
  if sOpenDialog1.Execute then
  begin
    Form23.ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data ' + 'Source=' + sOpenDialog1.FileName + ';Persist Security Info=False';
    Form23.ADOConnection1.LoginPrompt := False;
    OptIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniName);
    OptIni.WriteString('Base', 'DB', sOpenDialog1.FileName);
    OptIni.Free;
ну вот же все.
если тут есть твои 80%, то откуда вопросы?
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
06.01.2020, 01:29
А скорее всего нужно было просто немножко модифицировать этот код, для предварительного чтения пути из ini-файла:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.sLabel4Click(Sender: TObject);
begin
  Form23.ADOConnection1.Close;
  OptIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniName);
  sOpenDialog1.FileName := OptIni.ReadString('Base', 'DB', '');
  if not FileExists(sOpenDialog1.FileName)
  then if not sOpenDialog1.Execute then Exit;
  OptIni.WriteString('Base', 'DB', sOpenDialog1.FileName);
  OptIni.Free;
  Form23.ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data ' + 'Source=' + sOpenDialog1.FileName + ';Persist Security Info=False';
  Form23.ADOConnection1.LoginPrompt := False;
end;
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
06.01.2020, 20:17  [ТС]
Пытливый, друг а твой код выше для чего?
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
06.01.2020, 22:06
Поясняю.
Delphi
1
2
3
4
5
6
OptIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniName); //Открываем файл настроек.
sOpenDialog1.FileName := OptIni.ReadString('Base', 'DB', ''); //Пытаемся получить путь к базе, если это первый запуск, то путь пустой, если нет, то какой-то путь уже есть.
if not FileExists(sOpenDialog1.FileName) //Проверяем наличие файла базы по этому пути.
then if not sOpenDialog1.Execute then Exit; //Если файл не найден, через диалог пытаемся его выбрать.
OptIni.WriteString('Base', 'DB', sOpenDialog1.FileName); //Записываем в файл настроек новый путь к файлу базы
//далее код без изменений.
Если это не то-что вы хотите получить, то я у меня уже вариантов нет.
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
07.01.2020, 11:33  [ТС]
Пытливый, а этот код для чего?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.sLabel4Click(Sender: TObject);
begin
  Form23.ADOConnection1.Close;
  OptIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniName);
  sOpenDialog1.FileName := OptIni.ReadString('Base', 'DB', '');
  if not FileExists(sOpenDialog1.FileName)
  then if not sOpenDialog1.Execute then Exit;
  OptIni.WriteString('Base', 'DB', sOpenDialog1.FileName);
  OptIni.Free;
  Form23.ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data ' + 'Source=' + sOpenDialog1.FileName + ';Persist Security Info=False';
  Form23.ADOConnection1.LoginPrompt := False;
end;
Добавлено через 3 минуты
Пытливый, Так?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
OptIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniName); //Открываем файл настроек.
sOpenDialog1.FileName := OptIni.ReadString('Base', 'DB', ''); //Пытаемся получить путь к базе, если это первый запуск, то путь пустой, если нет, то какой-то путь уже есть.
if not FileExists(sOpenDialog1.FileName) //Проверяем наличие файла базы по этому пути.
then if not sOpenDialog1.Execute then Exit; //Если файл не найден, через диалог пытаемся его выбрать.
OptIni.WriteString('Base', 'DB', sOpenDialog1.FileName); //Записываем в файл настроек новый путь к файлу базы
//далее код без изменений.
procedure TForm1.sLabel4Click(Sender: TObject);
begin
  Form23.ADOConnection1.Close;
  OptIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniName);
  sOpenDialog1.FileName := OptIni.ReadString('Base', 'DB', '');
  if not FileExists(sOpenDialog1.FileName)
  then if not sOpenDialog1.Execute then Exit;
  OptIni.WriteString('Base', 'DB', sOpenDialog1.FileName);
  OptIni.Free;
  Form23.ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data ' + 'Source=' + sOpenDialog1.FileName + ';Persist Security Info=False';
  Form23.ADOConnection1.LoginPrompt := False;
end;
Так для чего этот код вообще? Подключение бд к проекту?

Добавлено через 1 час 37 минут
Пытливый,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
procedure TForm1.sLabel4Click(Sender: TObject);
begin
OptIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniName); //Открываем файл настроек.
sOpenDialog1.FileName := OptIni.ReadString('Base', 'DB', ''); //Пытаемся получить путь к базе, если это первый запуск, то путь пустой, если нет, то какой-то путь уже есть.
if not FileExists(sOpenDialog1.FileName) //Проверяем наличие файла базы по этому пути.
then if not sOpenDialog1.Execute then Exit; //Если файл не найден, через диалог пытаемся его выбрать.
OptIni.WriteString('Base', 'DB', sOpenDialog1.FileName); //Записываем в файл настроек новый путь к файлу базы
//далее код без изменений.
Form23.ADOConnection1.Close;
  OptIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniName);
  sOpenDialog1.FileName := OptIni.ReadString('Base', 'DB', '');
  if not FileExists(sOpenDialog1.FileName)
  then if not sOpenDialog1.Execute then Exit;
  OptIni.WriteString('Base', 'DB', sOpenDialog1.FileName);
  OptIni.Free;
  Form23.ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data ' + 'Source=' + sOpenDialog1.FileName + ';Persist Security Info=False';
  Form23.ADOConnection1.LoginPrompt := False;
Form23.ADOConnection1.Open;
    Form23.ADOQuery1.Open;
    sLabel1.Enabled := True; sBitBtn2.Enabled := True; sBitBtn3.Enabled := True;
    sBitBtn4.Enabled := True;
    sBitBtn5.Enabled := True;
    sBitBtn6.Enabled := True;
    sBitBtn7.Enabled := True;
    sBitBtn8.Enabled := True;
    Form1.ADOQuery1.Active:=True;
    Form2.ADOQuery1.Active:=True;
    Form3.ADOQuery1.Active:=True;
    Form4.ADOQuery1.Active:=True;
    Form5.ADOQuery1.Active:=True;
    Form6.ADOQuery1.Active:=True;
    Form7.ADOQuery1.Active:=True;
    DataModule9.ADOQuery1.Active:=True;
    Form10.ADOQuery1.Active:=True;
    Form11.ADOQuery1.Active:=True;
    Form12.ADOQuery1.Active:=True;
    Form13.ADOQuery1.Active:=True;
    Form14.ADOQuery1.Active:=True;
    Form15.ADOQuery1.Active:=True;
    Form16.ADOQuery1.Active:=True;
    Form17.ADOQuery1.Active:=True;
    Form18.ADOQuery1.Active:=True;
    Form19.ADOQuery1.Active:=True;
    Form23.ADOQuery1.Active:=True;
    Form24.ADOQuery1.Active:=True;
    Form25.ADOQuery1.Active:=True;
    Form26.ADOQuery1.Active:=True;
    Form27.ADOQuery1.Active:=True;
    Form28.ADOQuery1.Active:=True;
end;
Вот код кнопки "Подключить базу данных" и при нажатии на нее ничего не происходит

Добавлено через 12 минут
Пытливый,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TForm1.sLabel4Click(Sender: TObject);
begin
  Form23.ADOConnection1.Close;
  if sOpenDialog1.Execute then
  begin
    Form23.ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data ' + 'Source=' + sOpenDialog1.FileName + ';Persist Security Info=False';
    Form23.ADOConnection1.LoginPrompt := False;
    OptIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniName);
    OptIni.WriteString('Base', 'DB', sOpenDialog1.FileName);
    OptIni.Free;
    Form23.ADOConnection1.Open;
    Form23.ADOQuery1.Open;
    DataModule9.ADOQuery1.Open;
    sLabel1.Enabled := True;
    sBitBtn2.Enabled := True;
    sBitBtn3.Enabled := True;
    sBitBtn4.Enabled := True;
    sBitBtn5.Enabled := True;
    sBitBtn6.Enabled := True;
    sBitBtn7.Enabled := True;
    sBitBtn8.Enabled := True;
    Form1.ADOQuery1.Active:=True; Form2.ADOQuery1.Active:=True; Form3.ADOQuery1.Active:=True; Form4.ADOQuery1.Active:=True;
    Form5.ADOQuery1.Active:=True; Form6.ADOQuery1.Active:=True; Form7.ADOQuery1.Active:=True; DataModule9.ADOQuery1.Active:=True;
    Form10.ADOQuery1.Active:=True; Form11.ADOQuery1.Active:=True; Form12.ADOQuery1.Active:=True; Form13.ADOQuery1.Active:=True;
    Form14.ADOQuery1.Active:=True; Form15.ADOQuery1.Active:=True; Form16.ADOQuery1.Active:=True; Form17.ADOQuery1.Active:=True;
    Form18.ADOQuery1.Active:=True; Form19.ADOQuery1.Active:=True; Form23.ADOQuery1.Active:=True; Form24.ADOQuery1.Active:=True;
    Form25.ADOQuery1.Active:=True; Form26.ADOQuery1.Active:=True; Form27.ADOQuery1.Active:=True; Form28.ADOQuery1.Active:=True;
    ShowMessage('База данных успешно подключена');
end;
end;
Вот рабочий код кнопки "Подключить базу данных"
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
07.01.2020, 11:53  [ТС]
Пытливый, Тоесть если из файла base.ini - файла в который записывается путь к бд удалить путь к бд то при запуске программы выдает сообщение "Не выбранна база данных" тоесть картина такая как на 1.png, заходим в настройки и нажимаем на "Подключить базу данных" и база подключается к программе и выдает сообщение "База данных успешно подключена"
Значит все правильно работает
Миниатюры
Запись, Сохранение и Чтение пути к БД Access в файл txt Delphi 7  
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
07.01.2020, 11:56  [ТС]
Пытливый, а как мне очистить ini файл кодом через Delphi?
0
Модератор
 Аватар для D1973
9966 / 6500 / 2464
Регистрация: 21.01.2014
Сообщений: 27,511
Записей в блоге: 3
07.01.2020, 14:56
Цитата Сообщение от arsenkorotkin Посмотреть сообщение
как мне очистить ini файл
Удалить и заново создать.
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
07.01.2020, 17:18  [ТС]
Пытливый, извини я не правильно выразился. Вопрос такой: Как мне очистить путь к бд в ini файле?
0
561 / 230 / 88
Регистрация: 11.07.2015
Сообщений: 817
07.01.2020, 17:21
Открой в блокноте и удали.
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,616
07.01.2020, 17:28
Delphi
1
OptIni.WriteString('Base', 'DB', '');
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
07.01.2020, 17:30  [ТС]
UR1004SWL, про открыть ручками я в курсе
0
561 / 230 / 88
Регистрация: 11.07.2015
Сообщений: 817
07.01.2020, 17:33
Так зачем его удалять??? Не для этого путь прописывался в ini.
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
07.01.2020, 18:05  [ТС]
northener, но мне кажется чего то не хватает в вашем коде
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
07.01.2020, 18:09  [ТС]
northener, при удалении пути с помощью вашего кода выдает ошибку как в миниатюре, как решить?
Миниатюры
Запись, Сохранение и Чтение пути к БД Access в файл txt Delphi 7  
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
07.01.2020, 19:09  [ТС]
ребята, спасибо большое за вашу помощь и удаление пути мне не надо уже
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
07.01.2020, 19:10  [ТС]
А вот как мне обыграть эту ошибку? (указано в миниатюре)
Миниатюры
Запись, Сохранение и Чтение пути к БД Access в файл txt Delphi 7  
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
07.01.2020, 19:28
Еще раз внимательно читать комментарии, там все есть, что-бы такого не возникало.
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
07.01.2020, 20:25  [ТС]
Пытливый, а это куда вставить? в Form23.FormActive?
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 282
07.01.2020, 21:09  [ТС]
Пытливый, в какую часть кода вставить то, что вы мне отправили?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm23.FormActivate(Sender: TObject);
begin
  if ADOConnection1.Connected then
  begin
    ADOQuery1.Open;
    DataModule9.ADOQuery1.Open;
  end;
  OptIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniName);
  sEdit1.Text := OptIni.ReadString('Base', 'Password', '');
  OptIni.Free;
    sEdit1.Text:='';
sEdit1.SetFocus;
end;
или
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm23.FormCreate(Sender: TObject);
var
  pathbase: string;
begin
  OptIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniName);
  pathbase := OptIni.ReadString('Base', 'DB', '');
  OptIni.Free;
  if pathbase = '' then
    sShowMessage('Не выбрана база данных')
  else
  begin
    if FileExists(pathbase) then
    begin
      ADOConnection1.Close;
      ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data ' + 'Source=' + pathbase + ';Persist Security Info=False';
      ADOConnection1.LoginPrompt := false;
      ADOConnection1.Open;
    end
    else
      sShowMessage('По данному пути база не найдена. Возможно база перемещена. Выберите базу заново');
  end;
  Form23.Left := (Screen.WorkAreaWidth - Form23.Width) div 2;
  Form23.Top := (Screen.WorkAreaHeight - Form23.Height) div 2;
end;
И как правильно вставить? Можете правильно вставить сами, а то я напортачу как всегда
На миниатюре указано с чего запускается моя программа
Миниатюры
Запись, Сохранение и Чтение пути к БД Access в файл txt Delphi 7  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.01.2020, 21:09

Чтение/запись из/в файл .txt
Имеется файл названный stses формата txt, и вот его содержание: 3 Loyed 4 Greable 7 Otto 2 в методичке приведен пример...

Чтение и запись в файл txt
Здравствуйте, нужна помощь : Есть файл "text.txt" В нём значения : hardcore=false online-mode=true resource-pack= ...

Чтение xml и запись в txt файл
Доброго день!Подскажите пожалуйста какой должен быть код для парсинга xml и записи нужных тегов в файл txt!Приведите пример так как в...

Чтение из *.txt, запись в структуру, потом в бинарный файл
Здравствуйте! Открывать файл я открываю, считывание проходит. Но при записи в структуру записываются какие-то кракозябры :impossible:...

Delphi запись в txt файл
В DBGRID НАХОДИТСЯ ТАБЛИЦА, КАК ЕЕ ЗАПИСАТЬ В TXT ФАЙЛ ЧТОБЫ КОЛОНКИ БЫЛИ РОВНЫЕ ПРИМЕР КАК ДОЛЖНО НАХОДИТСЯ В TXT ФАЙЛЕ: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru