logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Delphi 7 ignoruje atrybut READONLY przy zapisie do pliku - co zmieniłem?

lukzak2298 17 Maj 2006 18:50 914 1
REKLAMA
  • #1 2635483
    lukzak2298
    Poziom 18  
    Posty: 667
    Pomógł: 5
    Ocena: 90
    mam pewien programik napisany w delphi7, który zapisuje do pliku tekstowego, używajac poniższego kodu:


    try
    assignfile(txt,Edit8.text);
    rewrite(txt);
    writeln(txt,memo1.text);
    closefile(txt);
    ShowMessage('Zapis do pliku: '+Edit8.Text+#10#13+ 'zakończony powodzeniem.');
    except
    ShowMessage('Blad zapisu do pliku: '+Edit8.Text+#10#13+'prawdopodobnie plik (lub dysk) jest tylko do odczytu.');
    end;


    I działało to bez problemu, do tej pory działa. Tylko że w archiwalnej kopii zapasowej. Obecnie program został rozbudowany o 1000 linijek i (!!!) nagle delphi przestał zwracać uwagę na to że próbuje zapisać do pliku Tylko do odczytu, nie wiem co jest grane! Co mogłem zepsuć!?!?

    Kiedy uruchamiam zapasową kopię sprzed miesiąca wszystko ładnie zapisuje do pliku, w razie gdy plik jest na pendrive zabezpieczonym tylko do odczytu zgłasza błąd.

    A w czasie kiedy uruchamiam program spod delphi zanim wyświetli się mój komunikat, delphi pierwsze zgłasza błąd "file acces denied"

    Kiedy skopiuje ten sam kod do mojego programu (w obecnej wersji) NAGLE PRZESTAJE DZIAŁAĆ!!!!!

    Wyświetlony zostaje komunikat o pomyślnym zapisie do pliku tylko do odczytu, zawartość pliku nie ulega zmianie a delphi przelatuje polecenie revwrite(txt); bez niczego (dawniej to właśnie na nim się wywalał błąd "try").

    PROSZĘ O POMOC! :(
  • REKLAMA
  • #2 2637819
    Łuk_F
    Poziom 17  
    Posty: 257
    Pomógł: 34
    Ocena: 12
    Witam

    Może zobacz to:

    {$I-}
    rewrite(txt);
    {$I+}
    if IOResult<>0 then
      begin
    //tutaj obsłuż błąd tworzenia pliku
      end
    else
      begin
    //tutaj wykonaj instrukcje jak nie wystąpił błąd
      end;
REKLAMA