|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Импорт фаила базы данных...
Проблема такая, надо скопировать базу данных (парадокс базу 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
|
|||
|
|||
Как я понял копирование файла происходит в главном потоке VCL - а значит что прога "подвиснет" до тех пор, пока файл не будет скопирован, и перейти на строчку
Код:
Table1.DatabaseName:= ExtractFilePath(Application.ExeName)+'db\'; Цитата:
Или у вас несколько нитей в приложении? Тогда сразу надо было говорить если многопоточное приложение, хотя судя по приведенному коду видимо это не так. А что за ошибка? |
#3
|
|||
|
|||
Нет вот именно, что прога не ждет а сразу пытается открыть файл и выдает ошибку: "Project1: Неверный дескриптор", а если жду секунду, то все нормально.
|
#4
|
||||
|
||||
Да что же за проблемы? CreateThread рулит! =))) Смотри в эту сторону...
SysMan. C++Builder Internet/Intranet Programming. |
#5
|
|||
|
|||
Ребята тему можно закрывать, я убрал сейчас Sleep и всё работает, только сейчас понял, что ошибка вылетала пока я не переопределил Table.
|