Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Brisanje tekstualnih fajlova u Pascal-u?

[es] :: Pascal / Delphi / Kylix :: Brisanje tekstualnih fajlova u Pascal-u?

[ Pregleda: 2721 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Darth
FON
Beograd

Član broj: 17230
Poruke: 45
*.beotel.net



Profil

icon Brisanje tekstualnih fajlova u Pascal-u?15.04.2004. u 19:36 - pre 243 meseci
Zdravo svima.
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...
 
Odgovor na temu

Vdjuric
Vladimir Djuric
student
Beograd

Član broj: 20863
Poruke: 64
*.eutelsat.net

Sajt: www.marettasoftware.com


Profil

icon Re: Brisanje tekstualnih fajlova u Pascal-u?17.04.2004. u 16:01 - pre 243 meseci
Care, totalno me mrzi da trazim gresku u ovom krajnje nepreglednom kodu, ali ako ti treba brisanje tekstualnog fajla to se radi preko jedne jedine komande (Erase) !
Sta bi ustvari trebalo da radi onaj kod ???
pozdrav
 
Odgovor na temu

Darth
FON
Beograd

Član broj: 17230
Poruke: 45
*.beotel.net



Profil

icon Re: Brisanje tekstualnih fajlova u Pascal-u?17.04.2004. u 19:29 - pre 243 meseci
Citat:
Vdjuric:
Care, totalno me mrzi da trazim gresku u ovom krajnje nepreglednom kodu, ali ako ti treba brisanje tekstualnog fajla to se radi preko jedne jedine komande (Erase) !
Sta bi ustvari trebalo da radi onaj kod ???
pozdrav


Hvala sto je bar neko pokusao da mi da odgovor... Znam da se fajl brise sa erase ali sam hteo prvo da proverim da li je uneto ime ispravno (procedura ime) i da li postoji fajl sa takvim imenom... Ali u programu kad se dogodi da se vec jednom pozivalo assign za bilo koji fajl, u ovoj proceduri mi preskace red readln(l) koji treba da ucita ime fajla pa samim tip i preskace bilo kakvu proveru i izbacuje poruku da fajl ne postoji...

Valjda sam sad malo razjasnio svoju zamisao, nadam se da cu dobiti pravi odgovor...
Do or do not, there is no try...
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Brisanje tekstualnih fajlova u Pascal-u?17.04.2004. u 23:57 - pre 243 meseci
Kod je nepregledan. Ako si ga nazubljivao, umetni [ code ] tagove i posalji ponovo. (bez razmaka)
Btw, probaj da ti procedure Ime i Brisi budu potpuno odvojene, a ne jedna u drugoj.
I izbegavaj koriscenje labela i goto naredbi. Bolje stavi jednu While ili Repeat petlju.
 
Odgovor na temu

Darth
FON
Beograd

Član broj: 17230
Poruke: 45
*.beotel.net



Profil

icon Re: Brisanje tekstualnih fajlova u Pascal-u?18.04.2004. u 17:23 - pre 243 meseci
Evo ponovo otkucan kod, valjda je sad u redu...
Code:

         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[i]>='0')and(s[i]<='9'))or((s[i]>='A')and(s[i]<='Z'))or((s[i]>='a')and(s[i]<='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);{ovaj red preskace kada se pozove procedura po drugi put}
           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;


... i kakve veze ima da li je procedura ime unutar procedure brisi ili nije?
Do or do not, there is no try...
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Brisanje tekstualnih fajlova u Pascal-u?

[ Pregleda: 2721 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.