Форум программистов, компьютерный форум, киберфорум
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. Показов 8297. Ответов 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
5998 / 4573 / 1096
Регистрация: 29.08.2013
Сообщений: 28,248
Записей в блоге: 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
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 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
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 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
9946 / 6481 / 2460
Регистрация: 21.01.2014
Сообщений: 27,466
Записей в блоге: 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 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
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
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 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
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru