954,529 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Pascal edit, delete data in text file

Hi everyone, I'm now nearly finished with my project which tells us to write a PASCAL program for entering the information of the employees. However, I came across a BIG problem is that I've got no idea on how to edit records in the text files or delete unwanted data from the text file.
I've thought of:
- copying the data in the text file to an array
- complete the wanted operations in the array
- copy the data in the array back to the text file made blank by 'rewrite'

but I really have NO idea on how to edit or delete records...
the array that is used to store data in the text file now is a 2-D array.
would somebody please please please give me a clue on how to edit, delete data ?? I really need this to pass the term... so, please, please, please...

thanks in advance.

cubicbox
Newbie Poster
4 posts since Feb 2010
Reputation Points: 10
Solved Threads: 0
 

There is in Delphi a type of data TStringList ....
It is very easy to manage a text file using an instance of TStringList ....
But I don't know about Pascal supports TStringList or not ?

finalist
Junior Poster in Training
87 posts since Dec 2009
Reputation Points: 15
Solved Threads: 15
 
FlamingClaw
Posting Pro
559 posts since Feb 2009
Reputation Points: 132
Solved Threads: 138
 

um.. thanks both of you for your help. but then, still, I'm unable to find a solution to the problem.. maybe I'm a bit to redundant in defining the problem in my first post here. to simplify that, I've already copied data from text file into a 2-D array..
but I don't know how to edit , delete data in the array.. is there some kind of method?
thanks a lot.

cubicbox
Newbie Poster
4 posts since Feb 2010
Reputation Points: 10
Solved Threads: 0
 

hi :D

program something;
uses crt;
type rec = record
                 line:string;
           end;
     
     trec = array[1..3,1..3]of rec;

var t:trec;
    temp:array[1..9]of rec;
    f:file of rec;
    one:rec;
    i,j:byte;
    s:string;

procedure filefill;
begin
      assign(f,'recs.dat');
      {$I-}
      rewrite(f);
      {$I+}
      if ioresult <> 0 then begin
         writeln('file rewrite error');
         readln;
         halt;
      end;
      writeln('contents of the file: ');
      temp[1].line:='turbo';
      temp[2].line:='pascal';
      temp[3].line:='is';
      temp[4].line:='my';
      temp[5].line:='favorit';
      temp[6].line:='language';
      temp[7].line:='and';
      temp[8].line:='I am a ';
      temp[9].line:='hungarian';

      (*fill the file first*)
      for i:=1 to 9 do begin
          write(f,temp[i]);
          writeln(i,'. element: ',temp[i].line);
      end;
      writeln('file size: ',filesize(f));
      close(f);
      writeln('==========');
end;

procedure readback;
begin
      (*read it back*)
      assign(f,'recs.dat');
      {$I-}
      reset(f);
      {$I+}
      if ioresult <> 0 then begin
         writeln('file reset error');
         readln;
         halt;
      end;

      while not eof(f) do begin
            for i:=1 to 3 do begin
                for j:=1 to 3 do begin
                    read(f,t[i,j]);
                end;
            end;
      end;
      close(f);
end;


procedure writeout(x:trec);
var i,j:byte;
begin
     writeln('==========');
     for i:=1 to 3 do begin
         for j:=1 to 3 do begin
             write('t[',i,',',j,'].element:=',x[i,j].line);
             writeln;
         end;
     end;
end;

procedure modify(x:rec);
begin
     writeln('==========');
     writeln('give me the new string: ');
     readln(x.line);
     t[i,j]:=x;
end;


begin (*main*)

      clrscr;

      filefill;
      readback;
      writeout(t);
      writeln('==========');
      write('give me the first number of the matrix,max 1..3 : ');
      readln(i);
      write('and the second number ,max 1..3 : ');
      readln(j);

      if (i in [1,2,3]) and (j in [1,2,3]) then begin
          writeln('t[',i,',',j,']:=',t[i,j].line);
          modify(one);
          writeln('press enter to read the matrix again');
          readln;
          writeout(t);
      end else writeln('wrong index number entered');

      while not keypressed do continue;
end.
(*created by FlamingClaw 2010.02.17,Hungary*)
FlamingClaw
Posting Pro
559 posts since Feb 2009
Reputation Points: 132
Solved Threads: 138
 

omg thank you so much FlamingClaw !
well.. by the way do you have any idea if I enter blank spaces in the program above (indicating I want to delete the data), it can automatically move everything up one line so that the program will not have blank lines in the middle? will I be able to do that?
thanks !!

cubicbox
Newbie Poster
4 posts since Feb 2010
Reputation Points: 10
Solved Threads: 0
 

FlamingClaw, I have several output files (*.out) contain a lot of information. I would like to have a program can just sort specific data from each output file and save as the same filename with txt extension.

While reading each line (from *.out) if you are on a line that says "state summary:" then save next 10 lines (into *.txt). Please advise. Thanks!

Jaxneo
Newbie Poster
4 posts since Jun 2010
Reputation Points: 10
Solved Threads: 0
 

hai.. please anyone help me to solve this code??actually i wanna know how do you update the data into the pascal code. in this case, I want to update data on the movie title. user can update each time the movie title on the latest movie out.below are my pascal coding :

Program RoyalCinema;
uses crt;

type
movie = char ;
AdultRecord = Record
AdmovieTitle : char;
AdmovieSession : movie;
AdmovieTime : real;
AdmovieSeat : movie;
AdmovieHall, Adpeople : integer;
End;

type smovie = char;
StudentRecord = Record
StmovieTitle : char;
StmovieSession : smovie;
StmovieTime : real;
StmovieSeat : smovie;
StmovieHall, Stpeople : integer;
End;

Var
AdmovieArray : Array [1..2] of AdultRecord;
StmovieArray : Array [1..2] of StudentRecord;
i : 1..10;
chooseCust,countA,countB, j, k : integer;
continue,update : String;
total,tot,payAdult,payStud : real;
search : char;


Procedure displayMENU( );
begin
writeln(' WELCOME TO OUR CINEMA ');
writeln;
readln;
writeln('*******************************************************************');
writeln('* HALL 1 *');
writeln('* [1] Darkest Hour *new [2] Sumpahan Kum Kum *new *');
writeln('* *');
writeln('* HALL 2 *');
writeln('* [3] Journey 2 [4] Suatu Malam Kubur Berasap *');
writeln('* *');
writeln('* HALL 3 *');
writeln('* [5] Underworld *new [6] Hantu Dalam Botol Kicap *');
writeln('* *');
writeln('* *');
writeln('* Session Available : *');
writeln('* *');
writeln('* [1] Day or Night *');
writeln('* [2] Midnight *');
writeln('* *');
writeln('* *');
writeln('* Seat Available : *');
writeln('* *');
writeln('* [1] Normal Seat *');
writeln('* [2] Couple Seat *');
writeln('* *');
writeln('* *');
writeln('*******************************************************************');
end;


procedure readCustDetails (var AdCinema : AdultRecord);
begin
writeln;

writeln('MOVIE : ');
read(AdCinema.AdmovieTitle);
writeln;
writeln('SESSION : ');
read(AdCinema.AdmovieSession);
writeln;
writeln('SHOW TIME : ');
read(AdCinema.AdmovieTime);
writeln;
writeln('CHOOSE THE TYPE OF SEAT');
read(AdCinema.AdmovieSeat);
writeln;
writeln('QUANTITY : ');
read(AdCinema.Adpeople);
writeln;
end;

procedure readStudDetails (var StCinema : StudentRecord);
begin
writeln;

writeln('MOVIE : ');
read(StCinema.StmovieTitle);
writeln;
writeln('SESSION : ');
read(StCinema.StmovieSession);
writeln;
writeln('SHOW TIME : ');
read(StCinema.StmovieTime);
writeln;
writeln('CHOOSE THE TYPE OF SEAT');
read(StCinema.StmovieSeat);
writeln;
writeln('QUANTITY : ');
read(StCinema.Stpeople);
writeln;
end;


Procedure displayAdult(var AdCinema : AdultRecord);
begin
writeln('Movie :: ', AdCinema.AdmovieTitle);
writeln('Session :: ', AdCinema.AdmovieSession);
writeln('Seat :: ', AdCinema.AdmovieSeat);
writeln(' ');
end;

Procedure displayStudent(var StCinema : StudentRecord);
begin
writeln('Movie :: ', StCinema.StmovieTitle);
writeln('Session :: ', StCinema.StmovieSession);
writeln('Seat :: ', StCinema.StmovieSeat);
writeln(' ');
end;


Function ADULTmoviePayment(Adpeople : integer ; AdmovieSeat : movie ; AdmovieSession : movie):real;
begin
total := 0;

if AdmovieSession = '1' then
begin
if AdmovieSeat = '1' then
total := (8.00 + 2.00) * Adpeople
else
begin
if AdmovieSeat = '2' then
total := (8.00 + 4.00) * Adpeople
end
end

else
begin
if AdmovieSession = '2' then
begin
if AdmovieSeat = '1' then
total := (8.00 + 2.00 + 3.00) * Adpeople
else
begin
if AdmovieSeat = '2' then
total := (8.00 + 4.00 + 3.00) * Adpeople
{else
begin
if AdmovieSeat = '3' then
total := (8.00 + 3.00) * Adpeople;
end;}
end;
end;
end;
ADULTmoviePayment := total;
end;

Function STUDmoviePayment(Speople : integer ; SmovieSeat : smovie ; SmovieSession : smovie):real;
begin
tot := 0;
if SmovieSession = '1' then
begin
if SmovieSeat = '1' then
tot := (8.00 + 2.00) * Speople - 0.30
else
begin
if SmovieSeat = '2' then
tot := (8.00 + 4.00) * Speople - 0.30
end
end

else
begin
if SmovieSession = '2' then
begin
if SmovieSeat = '1' then
tot := (8.00 + 2.00 + 3.00) * Speople - 0.30
else
begin
if SmovieSeat = '2' then
tot := (8.00 + 4.00 + 3.00) * Speople - 0.30
{else
begin
if AdmovieSeat = '3' then
total := (8.00 + 3.00) * Adpeople;
end;}
end;
end;
end;
STUDmoviePayment := tot;
end;


Procedure FindAdult(var AdCinema : AdultRecord; m : char);
begin
if (AdCinema.AdmovieSession = m) then
writeln('MOVIE : ',AdCinema.AdmovieTitle);
end;


Procedure FindStud(var StCinema : StudentRecord; n : char);
begin
if (StCinema.StmovieSession = n) then
writeln('MOVIE : ',StCinema.StmovieTitle);
end;

Procedure UpdateAdult(var AdCinema : AdultRecord; s : String);
begin
if AdCinema.AdmovieTitle = s then
begin
AdCinema.AdmovieTitle := ' ';
end
end;

Procedure UpdateStud(var StCinema : StudentRecord; k : String);
begin
if StCinema.StmovieTitle = k then
begin
StCinema.StmovieTitle := ' ';
end
end;


begin
clrscr;

writeln('******************* ROYAL CINEMA CUSTOMER SERVICE *********************');
writeln;
displayMENU();

continue := 'true';
j := 1;
k := 1;
countA := 0;
countB := 0;
if continue = 'yes' then
begin

writeln;
writeln('PLEASE CHOOSE THE TYPE OF CUSTOMER BASED ON THESE FOLLOWING CODE : ');
writeln;
writeln(' [1] Normal [2] Student ');
writeln;
writeln('--------------------------------------------------------------------');
writeln;
readln(chooseCust);
if chooseCust = 1 then
begin
{countA := countA + 1;}
for i := 1 to 2 do
begin
readCustDetails(AdmovieArray[countA]);
end;
end
else if chooseCust = 2 then
begin
{countB := countB + 1;}
for i := 1 to 2 do
begin
readStudDetails(StmovieArray[countB]);
end;
end;
writeln;
readln();
end;

clrscr;
writeln('LIST OF NORMAL CUSTOMER : ');
writeln('--------------------------------------------------------------------');
writeln('');
for i := 1 to 2 do
begin
displayAdult(AdmovieArray[i]);
{payAdult := ADULTmoviePayment(AdmovieArray[i]);
writeln('The Total Payment (RM) : ',payAdult:2:2);}
end;
writeln;

clrscr;
writeln('LIST OF STUDENT CUSTOMER : ');
writeln('--------------------------------------------------------------------');
writeln('');
for i := 1 to 2 do
begin
displayStudent(StmovieArray[i]);
{payStud := STUDmoviePayment(StmovieArray[i]);

writeln('The Total Payment (RM) : ',payStud:2:2);}
end;
writeln;


clrscr;
writeln;
writeln('PLEASE ENTER THE SESSION THAT YOU WANT TO SEARCH : ');
readln(search);
writeln('--------------------------------------------------------------------');

for i := 1 to 2 do
begin
writeln;
FindAdult(AdmovieArray[i],search);
readln;
writeln;
writeln;
FindStud(StmovieArray[i],search);
readln;
end;


clrscr;
writeln;
writeln('PLEASE ENTER THE MOVIE TITLE THAT YOU WANT TO UPDATE : ');
readln(update);
writeln('--------------------------------------------------------------------');

for i := 1 to 2 do
begin
writeln;
UpdateAdult(AdmovieArray[i],update);
readln;
writeln;
writeln;
UpdateStud(StmovieArray[i],update);
readln;
end;
writeln('Movie has been succesfully updated');

writeln;
writeln('Do you wish to continue? (yes/no)');
readln(continue);
end.

CikMuda
Newbie Poster
1 post since Feb 2012
Reputation Points: 10
Solved Threads: 0
 

Start a new thread for this, instead of hijacking an old one, and please use code tags. Do not forget to post your error too.

pritaeas
Posting Expert
Moderator
5,480 posts since Jul 2006
Reputation Points: 653
Solved Threads: 874
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: