Visualizza la versione completa : [pascal] Manipolazione di un file
Ciao a tutti.
Dovrei trovare un algoritmo veloce e pulito che mi permetta di aggiungere ad un file di testo già esistente un carattere ad esempio:
file PRIMA:
ciao a tutti!
come state?
oggi è una bellissima giornata!
file DOPO:
ciao a tutti! ;
come state? ;
oggi è una bellissima giornata! ;
Capito cosa voglio dire???
Grazie...
:ciauz:
Originariamente inviato da cso
ciao a tutti! ;
come state? ;
oggi è una bellissima giornata! ;
nn credo tu riesca a mettere i ; allineati .. nn ricordo molto di pascal .. cmq
f1=apri il file
f2=crea altro file
finche nn sei alla fine
r=f1.leggi riga
r:=r+';'
f2.appendi(r)
fine while
chiudi f1 e f2
copia f2 su f1
L'algoritmo l'ho trovato e funziona alla perfezione ma mi sa che ho trovato un bug nel TP.
Se apro il file, leggo dal file è tutto ok ma al momento della sovrascrittura non funziona e mi lascia il file invariato...
this is the code :( :
PROGRAM commenta;
USES crt;
CONST N=100;
TYPE generico = RECORD
appoggio : string;
END;
classe = ARRAY[1..N] OF GENERICO;
VAR conf : TEXT;
j,i,max : INTEGER;
c:classe;
begin
clrscr;
{$I-}
ASSIGN(conf,'c:\nome_file.txt');
RESET (conf);
writeln('LEGGE IL FILE');
i:=1;
WHILE not eof(conf) DO
Begin
ReadLn(conf,c[i].appoggio);
if length(c[i].appoggio)>max then max:=length(c[i].appoggio);
i:=i+1;
End;
readkey;
writeln('SCRIVE CONTENUTO FILE');
FOR j:=1 to i do writeln(c[j].appoggio);
readkey;
max:=max+12;
writeln('MODIFICA RECORD');
for j:=1 to i do
begin
while (length(c[j].appoggio)<max) do
begin
c[j].appoggio:=c[j].appoggio+' ';
end;
Insert(';',c[j].appoggio, length(c[j].appoggio));
end;
readkey;
writeln('SCRIVE IL RECORD MODIFICATO');
FOR j:=1 to i do writeln(c[j].appoggio);
readkey;
writeln('SCRIVE CONTENUTO FILE MODIFICATO');
reset(conf);
for j:=1 to i do
begin
writeln(conf,c[j].appoggio);
end;
close(conf);
{$I+}
readkey;
end.
Scusate per l'eleganza a basso livello ma devo ancora passare per la fase "pulizia del codice" :D
in effetti nn si capisce molto quel codice..
ti conviene aprire 2 file .. in uno leggi nell'altro scrivi e alla fine elimini il 1° e rinnomini il 2° con il nome del primo :ciauz:
Mi era passata l'idea per la testa di fare questa cosa ma mi sono puntato troppo su quello che volevo fare...
Mi sono rassegnato e l'ho fatto con due file e quindi adesso funziona :)
Grazie