[ peromalosutra @ 21.05.2005. 14:21 ] @
| Pozdrav svima!
Upravo sam uradio neki bezvezni programcic koji treba da uneseni tekst snimi na disk u lokaciju D:/PROBE. Kada ga pokrenem sve radi dobro dok ne pocne da snima sadrzaj na disk. Tada izgleda kao da upadne u neku vrstu beskonacne petlje i kada ga preko Task menagera "nasilno" zaustavim i odem u D:/PROBE, tamo nadjem fajl tezine oko 500MB! U cemu je problem?
Code:
Program Snimanje;
Uses WinCrt;
Type save=file of string;
Var tekst,ime:string;
buffer:save;
Begin
Write ('Ime datoteke: ');
Readln (ime);
write ('>');
readln (tekst);
ime:='D:/PROBE/'+ime;
assign (buffer,ime);
Rewrite (buffer);
While not eof do
write (buffer,tekst);
end.
|
[ reiser @ 21.05.2005. 14:54 ] @
Prvo, pitana treba da sadrzi backslashove, umesto obicnih slasheva. Znaci umesto D:/PROBE/ stavi D:\PROBE\
Drugo, While not EOF do proverava da li je kursor pozicioniran na kraj fajla (EOF - end of file). To ti uopste nije potrebno, jer ti otvaras fajl za pisanje, tako da pravis beskonacnu petlju.
Samo izbaci to While not eof.. i zameni / sa \
poz
[ peromalosutra @ 21.05.2005. 17:40 ] @
Da, problem je bio u onome while not eof, bas sam glup sto sam to stavio, logicno je da ce ova funkcija uvijek davati FALSE kod upisa u fajl. A sto se tice backslashova, radi i sa obicnim slashovima, probao sam.
[ reiser @ 22.05.2005. 13:32 ] @
Nema potrebe stavljati slasheve kad su windowsov "standard" backslashevi .
[ Goq @ 23.05.2005. 08:18 ] @
var F: file;
begin
Assign(F, '\AUTOEXEC.BAT');
Reset(F, 1);
Writeln('File size = ', FileSize(F));
Close(F);
end.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.