PDA

Visualizza la versione completa : [pascal] Manipolazione di un file


cso
21-01-2005, 19:42
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:

cso
22-01-2005, 17:10
Up :(

bako
22-01-2005, 18:54
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

cso
23-01-2005, 17:13
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

bako
23-01-2005, 17:17
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:

cso
23-01-2005, 17:37
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

Loading