Řešim problém jak udělat aby při pokusu o uložení souboru proběhla kontrola zda již soubor neexistuje nebo není-li otevřen... Podle helpu jsem to sesmolil takto:
Funguje to až na to, že když soubor existuje a chci ho přepsat tak to spadne na radku s ReWrite(Tabulka); a hodi to hlasku:Kód:procedure TForm1.UlozClick(Sender: TObject); var JmenoSouboru:string; index1,index2:byte; Tabulka:TextFile; begin If SaveDialog1.Execute then begin JmenoSouboru:=SaveDialog1.FileName; If FileExists(SaveDialog1.FileName) then begin If (FileOpen(SaveDialog1.FileName, fmOpenWrite or fmShareDenyNone )>0) then begin If (MessageDlg('Soubor již existuje, přepsat?',mtConfirmation, [mbYes, mbNo],0))=mrYes then begin index1:=1; index2:=2; AssignFile(Tabulka,SaveDialog1.FileName); ReWrite(Tabulka); ZapisDoSouboru(Tabulka,index1); WriteLn(Tabulka); WriteLn(Tabulka); ZapisDoSouboru(Tabulka,index2); CloseFile(Tabulka); end else begin MessageDlg('Soubor neuložen',mtInformation, [mbOk],0); end; end else begin MessageDlg('Soubor je otevřen, zavřete jej nebo změnte název ukládaného souboru a opakujte akci',mtInformation, [mbOk],0); end; end else begin index1:=1; index2:=2; AssignFile(Tabulka,SaveDialog1.FileName); ReWrite(Tabulka); ZapisDoSouboru(Tabulka,index1); WriteLn(Tabulka); WriteLn(Tabulka); ZapisDoSouboru(Tabulka,index2); CloseFile(Tabulka); end; end; end;
Mám tedy ten soubor před uložením smazat? To by ho ale ReWrite měl přepsat sám ne?Kód:Project Project1.exe raised exception class EInOutError with message 'I/O error 32'. Process stopped. Use Step or Run to continue.



Odpověď s citací


