Właściwość pliku

0

Witam,

Pisze program-robot który w określonym interwale czasowym będzie sprawdzał zawartość pliku tekstowego generowanego przez inną aplikacje i dane w nim zawarte będzie konwerterował i wpisywał do bazy danych.
Po konwersji i zapisie do bazy zawartość pliku będzie kasowana.
Sytuacja wydaje się prosta. Mam jednak pytanie - jak sprawdzić w jakim "stanie" jest aktualnie plik tekstowy?
Chodzi o to że dane do niego będą zapisywane dość rzadko (kilka, kilkadziesiąt wpisów w ciągu dnia) ale zawsze może zdarzyć się sytuacja że mój program zacznie odczytywać plik gdy aplikacja zewnętrzna akurat będzie robiła wpis. Spowoduje to co najmniej <ort>zakłucenie </ort>aplikacji zewnętrznej lub wpisanie częsci danych.
Czy są jakieś sposoby na sprawdzenie statusu pliku?

Pozdrawiam
Robert

Ps
Jest to moje pierwsze pytanie na tym forum. Używałem wcześniej wyszukiwarki oraz pytałem znajomego "profesora" z uczelni. Niestety wszystko bez skutków. Proszę o łagodne traktowanie gdy okaże się że rozwiązanie jest proste :-)

0

najlepiej, gdzyby tamten program otwierał plik na wyłącznośc lub umożliwiał innym aplikacjom tylko czytanie - wtedy próba zmienienia takiego pliku powodowała by błąd, który byś po prostu wyłapał i wiedział byś, że coś "trzyma" ten plik. Jeśli aplikacja tworzy ten plik umożliwiając jednocześnie innym zmianę jego zawartości to jedyne co mi przychodzi to wylistować listę otwartych plików - windows powinien coś takiego umożliwiać

0

A nie ma jakiejś falgi która z poziomu WinApi pozwalałaby na sprawdzenie jaki jest stan pliku?
Takie coś byłoby <ort>najprostrze</ort>.
Mógłbym oczywiście w czasie otwierania zrobić kopie pliku np w Memo ale po konwersji zakładam skasowanie zawartości. Co będzie gdy w czasie konwersji aplikacja coś dopisała na końcu pliku? Stracę te dane. Oczywiście mógłbym sprawdzić przed skasowaniem czy zawartośc pliku równa jest zawartości memo ale idę w ten sposób w jakiś zamknięty krąg.

Może wytłumacze dlaczego się tym przejmuje. Baza do której będe wpisywał dane będzie dość duża i znalezienie odpowiedniego miejsca w bazie gdzie należy wpisać lub uaktualnic dane może chwile potrwać. Przy 100 czy 1000 rekordów bym się tym nie przejmował ale przy 60000 może być problem (szczególnie w sieci).

Tak więc proszę znawców WinAPI o jakąś "tajemną" instrukcje która wylistuje mi stan pliku.

Pozdrawiam
Robert

0

ale jeśli coś dopisujesz do bazy (jeśli mówimy o bazach SQLowych) to dopisane rzeczy nigdy nie są wstawiane w konkretne miejsce!! tylko na końcu lub w miejsce usuniętych rekordów!

0

Baza to dbf a motorem jest BDE. Używam table. Mysle ze dopisywanych danych bedzie 10-20% reszta to szukanie klucza i aktualizowanie.

Pozdrawiam
Robert

0
robertz68 napisał(a)

Po konwersji i zapisie do bazy zawartość pliku będzie kasowana.
Sytuacja wydaje się prosta. Mam jednak pytanie - jak sprawdzić w jakim "stanie" jest aktualnie plik tekstowy?

Po prostu przed odczytem otwieraj plik "na wyłączność" do skutku lub z jakimś timeoutem. Jeśli Ci się uda - będzie to znaczyło, że nikt w danej chwili nie próbuje do niego nic dopisać.

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