Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Перенос программы на др пк


Автор: tikitiki 28.9.2005, 22:30
Помощь нужна. Перенёс программу с бд paradox, работающую через BDE
на другой пк. Тестировал на w2000, перенести надо тоже на w2000.
Программа работает на локальном компьютере. При переносе ошибку выдаёт и не запускается. К сожалению какая ошибка пока не знаю.
Что может быть? Если исключить отсутствие BDE у клиента.
Ещё. Странно очень. Пробовал перенести программу на CD-RW а потом назад на тот же пк -оказалось при запуске выдаёт ......read only dataset
и глохнет. Такое может быть?

Автор: Albinos_x 28.9.2005, 22:57
Цитата
read only dataset

видимо свойство файла осталось: "только для чтения", поэтому и выдаёт ошибку...

Автор: ТоляМБА 29.9.2005, 05:55
Цитата(Albinos_x @ 28.9.2005, 22:57)
видимо свойство файла осталось: "только для чтения",
Ес оф кос! Сам на эти грабли наступал. Надеюсь tikitiki не надо объяснять как со всех файлов снять "Только чтение".


Цитата(tikitiki @ 28.9.2005, 22:30)
Если исключить отсутствие BDE у клиента.
Проверь все настройки БДЕ. Напиши как создаешь алиасы: прописываешь один раз программно, создаешь в рантайме и потом грохаешь, или прописываешь один раз ручками?

Еще вспомнил такую фишку: если перенести только экзешник который обращается через прописанные в БДЕ админе алиасы, а на другой машине этих алиасов нет или файлы с данными по указанному пути отсутствуют, то тоже вылетает ошибка, даже Только при запуске проги, то есть когда ты к данным еще не обратился Сам нажав на кнопку в проге.

Автор: tikitiki 29.9.2005, 09:30
Алиасы не использовал в программе. БД подключал к приложению программно. В BDE Admin и Database desktop алиасы использовал только на этапе отладки. Хотя может действительно что-то упустил. Не могу понять.
Насчёт read-only files знаю. Но здесь вот в чём дело. Я это проворачивал на одном пк. Сначала перенёс папку с программой в другую папку (назовём B)-проверил -там запускается и всё работает, т.е. я исключил потенциальные ошибки, что BDE Admin данные не найдёт. Затем опять перенёс родную папку с программой на CD-RW и потом с CD-RW на пк в папку B, ту что выше я описал. И она там уже выдаёт .....read only dataset.

Автор: ТоляМБА 29.9.2005, 10:00
Если грабли в нижеследующем, то я буду ругаться, если нет будем разбираться дальше:

Цитата(tikitiki @ 29.9.2005, 09:30)
Сначала перенёс папку с программой в другую папку (назовём B)
Свойства файлов остались как в первоначальной папке с программой.
Цитата(tikitiki @ 29.9.2005, 09:30)
потом с CD-RW на пк в папку B
При записи на CD-RW (может и на CD-R тоже - не проверял) файлы и папки помечаются "Только чтение" и при копируются с CD-RW на жесткий диск они тоже с эти атрибутом. В общем посмотри на свойства файлов (и папок) уже скопированных с CD-RW в папке В, и первую строку моего сообщения. Только плз, напиши ответ.

Еще хочу сказать про одни грабли. Правда работаю с dBase файлами. Так вот если указать на скрытую папку с файлами, то обращаться к фалам можно, а если скрыть сами файлы, то уже не обратишься.


Автор: tikitiki 29.9.2005, 10:32
Ещё очень похожую программу вторую на тот же пк устанавливаю.
Ошибка выдаётся.
An error occured while attempting to initialize the Borland Database Engine (error $2108)
Т.е. ошибки почему-то разные, хотя программы я сходно создавал.
Проблема в том, что у меня доступ к клиенту пока на расстоянии.
Отсутствие BDE у клиента я предполагал. Подготовил для этого установочный файл для установки BDE клиенту bde.exe.

Автор: bas 29.9.2005, 10:33
Цитата(tikitiki @ 29.9.2005, 06:30)
БД подключал к приложению программно.

Алгоритм в студию.
Цитата(tikitiki @ 29.9.2005, 06:30)
Затем опять перенёс родную папку с программой на CD-RW и потом с CD-RW на пк в папку B, ту что выше я описал


Цитата(tikitiki @ 29.9.2005, 06:30)
Хотя может действительно что-то упустил.

Не наверно, а точно.

Автор: tikitiki 29.9.2005, 10:40
Может повторюсь, но похоже не ушло сообщение.
Сейчас знаю. На пк, но который устанавливал первую программу,
ошибка выдаётся: "Название exe" вызвало ошибку и будет закрыто.
Требуется перезапустить программу. Создан журнал ошибок.

Я программу по эл. почте на клиентский пк перегнал. Т.е. CD исключил.
Выше названная ошибка относится к перегнанной программе.

ТоляМБА, остальное проверяю. Обязательно отвечу


Автор: tikitiki 29.9.2005, 10:53
В обоих программах код один и то же:
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
SetLangForParadoxAndDBase;
IsBDEExist := (dbiInit(nil) = 0);
if not IsBDEExist then
begin
ShowMessage('Отсутствует bde! Код Delphi не будет выполнен.Рекомендуется установить bde запустив файл bde.exe из корневой папки диска с программой! Устанавливайте через Установку и удал... в ...\Program Files\Common Files\Borland Shared\BDE.');
Halt;
end
else ShowMessage('bde уже установлена в системе');

Database1.Close;
  Database1.Params.Values['PATH']:= ExtractFilePath(ParamStr(0));
  Database1.Open;
end;


Автор: ТоляМБА 29.9.2005, 10:56
2 tikitiki Слушай, давай сначала с одной прогой разберемся, а то чёрт ногу сломит, и модератор по ушам даст: Один топик - один вопрос.

Автор: tikitiki 29.9.2005, 12:13
Хорошо разбираемся с первой. С ней и проблем больше. Я забываю про топик. Если нужно целиком программу дам

Автор: ТоляМБА 29.9.2005, 12:30
Скинь мне исходники с Парадоксовскими файлами на мыло (мыло в профиле) зипани телько не в .ехе. Если сможешь в течение часа (у меня щас 15:42 а работаем до 17:00), дома посмотрю, а то завтра на работе дел много будет.

Автор: tikitiki 29.9.2005, 13:32
Отправляю. Сейчас у тебя близится к 17-00
Добавлено @ 13:38
На счёт CD догадывался. Не совсем просто знал. Потому и почту использовал.
ТоляМБА, прошу сильно не ругаться. smile
Снова пока с CD-RW не проверял. Но т.к. его исключил при помощи почты и вообще,
то проблема в чём-то другом.
Мне кажется одним из выходов может быть пока установка BDE у клиента и после
возможно программа заработает. Другого пока ничего не придумал. Но думаю.

Автор: bas 29.9.2005, 15:52
Цитата(tikitiki @ 29.9.2005, 10:32)
Мне кажется одним из выходов может быть пока установка BDE у клиента и после
возможно программа заработает

1.Я работаю с FoxPro и по умолчанию это драйвер стоит в BDE .
тоесть проверки только на
Database1.Params.Values['PATH']:= ExtractFilePath(ParamStr(0));
недостаточно.
2. Если прога запускаеться не под admin'ом то писаить в реестр нелья
Но можно обойтись обьектом TSession и задать путь тамhttp://forum.sources.ru/index.php?showtopic=62261
Добавлено @ 15:54
Цитата(tikitiki @ 29.9.2005, 07:32)
initialize the Borland Database Engine (error $2108)

$2108 (8456) = Cannot locate IDAPI32 .DLL.

Автор: tikitiki 30.9.2005, 08:00
bas.
Хорошо. Я вот так примерно пытаюсь делать.
Сначала вынужден видимо присвоить Aliase, чтобы иметь право его изменять.
Настройки Alias’а (псевдоним ‘MyDB’) в BDEAdmin.exe такие
Path='с:\dbf\'%

Автор: tikitiki 30.9.2005, 11:26
Инет подвёл.
Хорошо. Я вот так примерно пытаюсь делать.
Сначала вынужден видимо присвоить Aliase, чтобы иметь право его изменять.
Настройки Alias’а (псевдоним ‘MyDB’) в BDEAdmin.exe такие
Path='с:\dbf\'
ENABLE BCD = FALSE
DEFAULT DRIVER = Paradox

Определяю в одном модуле в implementation свою процедуру ChangeAlias (полностью содрал из delphi help),
которая, как я понял, выкидывает окошко с приглашением юзеру ввести новый путь к таблицам бд для данного
алиаса( с этим кодом не всё пока понял)
и в том же модуле в процедуре TForm1.FormCreate(Sender: TObject) вызываю процедуру ChangeAlias.

procedure ChangeAlias;

var
AParams: TStringList;
Dir: string;
begin
ifnot Session.IsAlias('MyDB') then
begin
ShowMessage('Alias MyAlias does not exist');
Exit;
end;
AParams := TStringList.Create;
try
// get the current PATH parameter
Session.GetAliasParams('MyDB',AParams);
Dir := Copy(AParams.Strings[0],6,255);
// get the new PATH parameter
if InputQuery('MyAlias Alias Path','Path:' ,Dir) then

begin
// Update the alias parameters
AParams.Clear;
AParams.Add('PATH=' + Dir);
Session.ModifyAlias('MyDB',AParams);
Session.SaveConfigFile;
end;
finally
AParams.Free;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ChangeAlias;
Database1.Close;
Database1.Params.Values['PATH']:= ExtractFilePath(ParamStr(0));
Database1.Open;
end;

Автор: bas 30.9.2005, 11:59
tikitiki загрузи bde32.hlp задай поиск Alias или Env и посмотри примеры.

Автор: tikitiki 30.9.2005, 12:09
bas, спасибо. Я на самом деле не знал где искать... Смотрю smileВсех благ

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)