co to za błąd i jak go uniknąc??
na początku otwieram plik tekstowy i odczytuje z niego dane.
później otwieram, rewrite(), i zapisuje dane.
następnie znmowu chce odczytać i błąd! a funkcja ta sama co odczytuje na początku?
plik <ort>zamknołem </ort>closefile().
0
0
Pokaż kod.. może robisz coś źle..
0
Moze go nie przewinales? Seek(plik, 0);
0
Sharing violation? To może plik już jest otwarty przez jakiś program?
0
no więc tak.
na początku uruchamiania programu robi się coś takiego:
var
data: textfile;
// ... //
begin
// ... //
if FileExists(path) then
begin
try
AssignFile(data, path);
Reset(data);
while not Eof(data) do
begin
ReadLn(data, line);
// ... // odczytuje potrzebne dane
end;
finally
CloseFile(data);
end;
// ... //
i wszystko działa, później w trakcie działania programu jest coś takiego:
var
data: textfile;
// ... //
begin
if UsersModified then
begin
try
AssignFile(data, path);
ReWrite(data); // czyszcze plik
for i := 0 to UsersList.Items.Count - 1 do
begin // teraz będe zapipsywał do pliku (to działa na pewno)
WriteLn(data, Encrypt(Objects(UsersList.Items.Objects[i]).name + '|'
+ Objects(UsersList.Items.Objects[i]).username + '|'
+ Objects(UsersList.Items.Objects[i]).pass + '|'
+ Objects(UsersList.Items.Objects[i]).host, KEY));
end;
Main.Perform(Reload, 0, 0); // wysyłam komunikat do formy głównej by uruchowmił wcześniej wspominaną procedurę
finally
CloseFile(data);
end;
// ... //
end;
end;
no i jak chce z powrotem tamtą fukcje załączyć to mi wyskakuje wcześniej wspominany błąd
AssignFile(data, path);
Reset(data); // dokładnie w tym miejscu
i zostaje wyczyszczony ;-|
1
wysyłam komunikat do formy głównej by uruchowmił wcześniej wspominaną procedurę
Ponoc zamknales plik :-8 . Jak chcesz plik otwaty kilka razy bez zamykania to uzyj do tego TFileStream, on przy tworzeniu ma parametr, ktory pozwala na wspoldzielenie pliku.