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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.07.2006, 01:46
AreSS AreSS вне форума
Прохожий
 
Регистрация: 04.07.2006
Сообщения: 3
Репутация: 10
Вопрос Импорт фаила базы данных...

Проблема такая, надо скопировать базу данных (парадокс базу main.db) в мою папку (с этим проблем нет). Вопрос в следующем: Как узнать что копирование закончено и можно открывать данный файл? Копирую так:
------------------------------------------------------------------
//открываю файл
FromF2:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
//создаю пустой
ToF2:= TFileStream.Create(ExtractFilePath(Application.Exe Name) + 'db\main.db', fmCreate);
//копирую
ToF2.CopyFrom(FromF2, FromF2.Size);
// !!! Здесь жду секунду (только так и спасаюсь иначе прога выдает ошибку а если main.db будет огромным???
sleep(1000);

Table1.DatabaseName:= ExtractFilePath(Application.ExeName)+'db\';
Table1.TableName:= 'main.db';
Table1.Active:=true;
Table1.Refresh;
FromF2.Free;
ToF2.Free;
------------------------------------------------------------------
Всё работает, а вдруг файл будет большой и функции sleep в 1000мск не хватит, чтобы дождаться конца копирования, что делать?
Ответить с цитированием
  #2  
Старый 04.07.2006, 11:44
AlexZL AlexZL вне форума
Новичок
 
Регистрация: 06.01.2006
Сообщения: 87
Репутация: 20
По умолчанию

Как я понял копирование файла происходит в главном потоке VCL - а значит что прога "подвиснет" до тех пор, пока файл не будет скопирован, и перейти на строчку
Код:
Table1.DatabaseName:= ExtractFilePath(Application.ExeName)+'db\';
она никак не сможет пока не выполнится копирование.
Цитата:
// !!! Здесь жду секунду (только так и спасаюсь иначе прога выдает ошибку
Может ошибка в чем-то другом?
Или у вас несколько нитей в приложении? Тогда сразу надо было говорить если многопоточное приложение, хотя судя по приведенному коду видимо это не так.

А что за ошибка?
Ответить с цитированием
  #3  
Старый 04.07.2006, 14:18
AreSS AreSS вне форума
Прохожий
 
Регистрация: 04.07.2006
Сообщения: 3
Репутация: 10
По умолчанию

Нет вот именно, что прога не ждет а сразу пытается открыть файл и выдает ошибку: "Project1: Неверный дескриптор", а если жду секунду, то все нормально.
Ответить с цитированием
  #4  
Старый 04.07.2006, 19:26
Аватар для Майняк
Майняк Майняк вне форума
Начинающий
 
Регистрация: 03.02.2006
Адрес: Киров
Сообщения: 198
Репутация: 50
По умолчанию

Да что же за проблемы? CreateThread рулит! =))) Смотри в эту сторону...
Ответить с цитированием
  #5  
Старый 05.07.2006, 22:59
AreSS AreSS вне форума
Прохожий
 
Регистрация: 04.07.2006
Сообщения: 3
Репутация: 10
Смех

Ребята тему можно закрывать, я убрал сейчас Sleep и всё работает, только сейчас понял, что ошибка вылетала пока я не переопределил Table.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter