[Delphi] Brak pliku bazodanowego

0

Mam pytanko. Mam do programu podczepione bazy danych (TdataSource, TTable). Gdy z domyslnego katalogu usunę jakiś plik bazodanowy pojawia się komunikat, iż brak pliku np. qwerty.db i asdfgh.db
Chodzi mi oto, jak przechwycić nazwę pliku którego brak? (Sprawdzanie warunkami czy plik jest czy go nie ma odpada bo tych plików jest duuuużo)

Pozdr. ;)

0

Wyświetlaj w Filelistbox wszystkie pliki DB z obranego folderu a obok w np. Listbox wyświetlaj ich nazwy. Zapisz do pliku Richedita i odczytuj w onCreate.
Potem porównuj nazwy Filelistboxa z Listboxem. Jeśli się nie będzie zgadzać to ma wyświetlić brakujący plik. Zrób do tego wszystkiego jakąś pętlę.
Może to zbyt prymitywny pomysł ale owinno działać.

0

Rozumiem, że Delphi wyrzuca błąd? To nie można po prostu użyć do tego

OnException

? Tam przecież możesz sprawdzać błąd i jeśli będzie dotyczył braku pliku bazodanowego, to z E.Message

 bez problemu wyciągniesz jego nazwę.
0

Bazę mam podpiętą za pomocą TDataSource i TTable (baza paradox) i tam nie widzę procedury OnException!?

Może jakiś inny pomysł. :]

Pozdr. ;)

0

Dla wszystkich komponentów TTable ustaw Active na False.
W Create napisz coś takiego:

procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
  fName, s: string;
begin
  s := '';
  for i := 0 to ComponentCount - 1 do
    if Components[i] is TTable then
      with Components[i] as TTable do
      begin
        fName := ExpandFileName(TableName);
        fName := ChangeFileExt(fName, '.db');
        if not FileExists(fName) then
          s := s + 'Plik "' + fName + '" nie istnieje!' + #13#10
        else
          Open;
      end;

  if s <> '' then
  begin
    ShowMessage(s + #13#10#13#10 + 'Brak plików z danymi!');
    Application.Terminate;
  end;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1