Imam jedan problem sto se tice visestrukog brisanja tekstualnih datoteka. Naime, napisao sam proceduru za brisanje, koja mi se cini logicnom. Ali kada je upotrebim u programu, moze da obrise samo prvi fajl posle pravi gresku. Isto radi ako sam u programu prethodno napravio novi fajl. Evo kako ta procedura izgleda:
procedure brisi;
procedure ime(var s:string);
var p:boolean;
i,b:integer;
begin
p:=true;
i:=0;
b:=0;
repeat
inc(i);
p:=((s>='0')and(s<='9'))or((s>='A')and(s<='Z'))or((s>='a')and(s<='z'));
if p=false then b:=i;
until (i>length(s))or(p=false);
delete(s,b,length(s)-b+1);
end;
label del;
var l:string;
k:text;
c:char;
begin
del: clrscr;
textcolor(15);
write('Enter the file name for deleting:');
readln(l);
ime(l);
l:=l+'.txt';
assign(k,l);
{$I-}
reset(k);
{$I+}
if ioresult<>0
then
begin
writeln;
writeln('Specified file does not exist!');
writeln('Press any key to retype or <ESC> to return');
c:=readkey;
if ord(c)=27 then exit;
goto del;
end
else
begin
close(k);
write('Are you sure you want to delete ',l,'? (Y/N)');
c:=readkey;
if(c='Y')or(c='y')or(ord(c)=13) then erase(k);
end;
end;
Evo sta radi: kada se drugi put pozove, jednostavno preskace readln(l) gde treba da ucita ime i stalno izbacuje poruku da fajl ne postoji.
Nadam se da ce neko uspeti da mi da odgovor.
Unapred havla,
Bojan
Do or do not, there is no try...