Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.05.2011, 11:54
BuTeK22 BuTeK22 вне форума
Прохожий
 
Регистрация: 27.02.2011
Сообщения: 39
Репутация: 10
По умолчанию Адресс к БД

Добрый день всем!!! Как сделать чтоб адресс к БД брался из тексового документа???
Ответить с цитированием
  #2  
Старый 11.05.2011, 11:55
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Открыть файл
Прочитать из него струку
Использовать прочитанную строку как адрес.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 11.05.2011, 12:02
BuTeK22 BuTeK22 вне форума
Прохожий
 
Регистрация: 27.02.2011
Сообщения: 39
Репутация: 10
Радость

Цитата:
Сообщение от Aristarh Dark
Открыть файл
Прочитать из него струку
Использовать прочитанную строку как адрес.

А можно немного поподробнее??? Желательно на примере!
Ответить с цитированием
  #4  
Старый 11.05.2011, 12:12
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

"Я не тактик, я стратег" (с)
А по существу - откуда мне знать как ты организовываешь поиск, и зачем тебе во внешнем файле хранить путь. Возможно есть другой, более простой способ.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 11.05.2011, 12:18
BuTeK22 BuTeK22 вне форума
Прохожий
 
Регистрация: 27.02.2011
Сообщения: 39
Репутация: 10
По умолчанию

У меня база хранится на Vtp и нужно чтоб программа перед началом работы проверила путь к базе и если не может найти БД, то выходит окно где нужно ввести адрес к БД, а адрес бедет сохранятся в текстовый документ! Если есть лучший способ, то буду рад им воспользоваться!
Ответить с цитированием
  #6  
Старый 11.05.2011, 12:43
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

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

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #7  
Старый 11.05.2011, 22:57
BuTeK22 BuTeK22 вне форума
Прохожий
 
Регистрация: 27.02.2011
Сообщения: 39
Репутация: 10
По умолчанию

Вроде все стало получаться, но тут новая проблема. Если сохранять адрес в текстовом документе то все запускается и работает, а если прописать в текстовом документе "ExtractFilePath(paramstr(0))", то вылаезет ошибка!
Что не так?
Ответить с цитированием
  #8  
Старый 11.05.2011, 23:06
blazonic blazonic вне форума
Прохожий
 
Регистрация: 23.03.2010
Адрес: Украина, Киев
Сообщения: 29
Версия Delphi: 6, 7, 2006
Репутация: 12
По умолчанию

ExtractFilePath(paramstr(0)) даёт путь к файлу. К этому пути необходимо ещё прибавить FileName - имя файла базы (типа Name.mdb и т.п.)
Что-то вроде:
Код:
ExtractFilePath(paramstr(0)) + '\Name.mdb'
или
Код:
ExtractFilePath(paramstr(0)) + '\' + FileName
где FileName = Name.mdb, потому что FileName может использоваться в любом месте программы.
И если выпадают сообщения об ошибках, то делайте их скриншот и выкладывайте здесь.

Последний раз редактировалось blazonic, 11.05.2011 в 23:12.
Ответить с цитированием
  #9  
Старый 11.05.2011, 23:08
BuTeK22 BuTeK22 вне форума
Прохожий
 
Регистрация: 27.02.2011
Сообщения: 39
Репутация: 10
По умолчанию

Я так и делаю!
Если прописывать без текстового файла, то все работает, а если через него, то пишет что путь неверен!
Изображения
Тип файла: jpg 1.jpg (30.6 Кбайт, 9 просмотров)

Последний раз редактировалось BuTeK22, 11.05.2011 в 23:16.
Ответить с цитированием
  #10  
Старый 11.05.2011, 23:22
blazonic blazonic вне форума
Прохожий
 
Регистрация: 23.03.2010
Адрес: Украина, Киев
Сообщения: 29
Версия Delphi: 6, 7, 2006
Репутация: 12
По умолчанию

Судя по ошибке в пути на рисунке, вы ExtractFilePath(paramstr(0)) обрамляете в кавычки, а это и есть ошибка. Уберите эти кавычки, и попробуйте запустить.
Кроме того, вы ещё что-то прибавляете в общий путь до ExtractFilePath(paramstr(0)), чего делать не следует.

Последний раз редактировалось blazonic, 11.05.2011 в 23:28.
Ответить с цитированием
  #11  
Старый 11.05.2011, 23:34
BuTeK22 BuTeK22 вне форума
Прохожий
 
Регистрация: 27.02.2011
Сообщения: 39
Репутация: 10
По умолчанию

Нет кавычек не ставлю!
Если прописывать вот так: "Data Source='+ExtractFilePath(paramstr(0))+'\BD\БД.mdb; ", то все нормально! А вот если прописать "Data Source='+buf+'\BD\БД.mdb;", то вылазеет ошибка! В buf записана строка из текстового документа т.е. "ExtractFilePath(paramstr(0))"!!!

Последний раз редактировалось BuTeK22, 11.05.2011 в 23:41.
Ответить с цитированием
  #12  
Старый 11.05.2011, 23:38
blazonic blazonic вне форума
Прохожий
 
Регистрация: 23.03.2010
Адрес: Украина, Киев
Сообщения: 29
Версия Delphi: 6, 7, 2006
Репутация: 12
По умолчанию

Странно… Тогда выложите здесь куски кода, в которых у вас прописываются таким образом пути, полностью. Посмотрим, что и как вы прописываете.
Ответить с цитированием
  #13  
Старый 11.05.2011, 23:42
BuTeK22 BuTeK22 вне форума
Прохожий
 
Регистрация: 27.02.2011
Сообщения: 39
Репутация: 10
По умолчанию

Код:
begin
fName:=(ExtractFilePath(paramstr(0)));
  AssignFile(f,fName+'\BD\Setup.txt');
  {$I-}
  Reset(f);
  {$I+}
   if IOResult <> 0 then
  begin
    ShowMessage ('Ошибка доступа к файлу '); exit;
  end;
    while not EOF(f) do
  begin
    readln(f, buf);
  end;
    CloseFile(f);
       begin
 Form2.ADOTable1.Active:= False;
 Form2.ADOConnection1.Connected:= False;
 Form2.ADOConnection1.LoginPrompt:= False;
 Form2.ADOConnection1.Provider:= 'Microsoft.Jet.OLEDB.4.0';
 Form2.ADOConnection1.ConnectionString:=
 'Provider=Microsoft.Jet.OLEDB.4.0;' +
 'User ID=Admin;' +
 'Data Source='+buf+'\BD\БД.mdb;' +
 'Mode=ReadWrite;' +
 'Extended Properties="";' +
 'Persist Security Info=False;' +
 'Jet OLEDB:System database="";' +
 'Jet OLEDB:Registry Path="";' +
 'Jet OLEDB:Database Password="";' +
 'Jet OLEDB:Engine Type=5;' +
 'Jet OLEDB:Database Locking Mode=1;' +
 'Jet OLEDB:Global Partial Bulk Ops=2;' +
 'Jet OLEDB:Global Bulk Transactions=1;' +
 'Jet OLEDB:New Database Password="";' +
 'Jet OLEDB:Create System Database=False;' +
 'Jet OLEDB:Encrypt Database=False;' +
 'Jet OLEDB:Compact Without Replica Repair=True;' +
 'Jet OLEDB:SFP=False';
 Form2.ADOConnection1.Mode:= cmShareDenyNone;
 Form2.ADOConnection1.Connected:= True;
 Form2.ADOTable1.Connection:=Form2.ADOConnection1;
 Form2.ADOTable1.TableName:='Users';
 Form2.ADOTable1.Active:= True;
 end;

Последний раз редактировалось lmikle, 12.05.2011 в 01:07.
Ответить с цитированием
  #14  
Старый 12.05.2011, 00:07
SawA SawA вне форума
Новичок
 
Регистрация: 09.03.2011
Сообщения: 57
Репутация: 10
По умолчанию

Простыми словами ExtractFilePath(ParamStr(0)) определяет путь до нашего проекта до папки где хранится exe файл его в текстовый документ не записуй в текстовый документ пропиши остаточный путь к примеру если бд хранится прям в тойже папки то в текстовый документ запиши bd.mdb если еще в какой папки то допиши ПАПКА\bd.mdb

Код:
var bd:string; //строковая переменная для хранения полного пути к файлу

bd:=ExtractFilePath(ParamStr(0))+'bd.mdb';

DataModule12.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+bd+';Persist Security Info=False'; // указываем кучу параметров и новый путь к бд
DataModule12.ADOConnection1.Connected:=True;// подключаем бд далее будем с ней работать 


p.s. Вроде както так если не прав исправьте буду рад ток походку попроще
Ответить с цитированием
  #15  
Старый 12.05.2011, 00:42
blazonic blazonic вне форума
Прохожий
 
Регистрация: 23.03.2010
Адрес: Украина, Киев
Сообщения: 29
Версия Delphi: 6, 7, 2006
Репутация: 12
По умолчанию

У меня такое впечатление, что у вас в файле Setup.txt также записана функция с параметром ExtractFilePath(paramstr(0)), кроме того, до этой функции в этот файл (Setup.txt) как-то записалась часть левого пути, в итоге в переменную buf заносится абракадабра, типа после чтения из файла получаем:
buf = C:\Users\Виктор\Desctop\ПРОЕКТ 2.0\ExtractFilePath(paramstr(0))
Проверьте файл Setup.txt, там не должен находиться ExtractFilePath(paramstr(0)).
И в данном случае ExtractFilePath даёт путь, начиная с локальных дисков "C:" или "D:" и т.п.
Почитайте литературу о ExtractFilePath, у вас в мыслях путаница. Вы не правильно формируете путь.
Если БД лежит не вместе с программой, то ExtractFilePath ничем не поможет, в том контексте, как вы его пытаетесь применить.
Возможно, что путь к БД: "C:\Users\Виктор\Desctop\ПРОЕКТ 2.0\BD\БД.mdb"
И тогда ExtractFilePath под исполняемый файл (параметр paramstr(0)) тут совершенно лишний.

Последний раз редактировалось blazonic, 12.05.2011 в 11:18.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter