Sharing violation

0

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

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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.