0

Please help, got this code below that i need to add to a program im making and for some reason i cant work out why it doesnt work.

program dbase1;

 

uses Crt;

 

const fileName = 'C:\TEMP\NAMES.TXT';

      maxRecords = 100;

 

var 
name : array [1..maxRecords] of String;
address : array [1..maxRecords] of String;
numRecs : integer;
 i,thisRec : integer;
inFile, outFile : TEXT;
ch : char;
 

begin

        assign(inFile, fileName); reset(inFile);
        numRecs:=0;
        while not eof (inFile) do
        begin
                 inc(numRecs);
                 readLn(inFile,name[numRecs]);
                 readLn(inFile,address[numRecs]);
        end;
     close(inFile);

     repeat
               writeLn;
               writeLn; 
               writeLn;
               writeLn('Database Program');
               writeLn('----------------');
                   for i:=1 to numRecs do
               writeLn(i,': ',name[i]);
               writeLn;
      
     repeat
               write('Options: [a]dd, [u]pdate, [d]elete, [r]ead, [e]xit: ');
               ReadLn(ch); 
               ch:=UpCase(ch);
     until (ch='A') or (ch='U') or (ch='D') or (ch='R') or (ch='E');
     writeLn;

 

    if (ch='A') then
                  begin
                          if numRecs = maxRecords then
                                     writeLn('Maximum number of records has been reached')

      else

      begin
               numRecs:=numRecs+1;
               write('Enter new    name: ');
               readLn(name[numRecs]);
               write('Enter new address: ');
               readLn(address[numRecs]);

      end;

    end;

 

    if (ch='U') then

    begin
             write('Which record number do you wish to update? ');
             readLn(thisRec);
             if (thisRec<1) or (thisRec>numRecs) then
             writeLn('Record number must be between 1 and ',numRecs)

      else

      begin
               write('Enter    name: ');
               readLn(name[thisRec]);
               write('Enter address: ');
               readLn(address[thisRec]);

      end;

    end;

 

    if (ch='D') then

    begin
              write('Which record number do you wish to delete? ');
              readLn(thisRec);
              if (thisRec<1) or (thisRec>numRecs) then
                     writeLn('Record number must be between 1 and ',numRecs)

      else

      begin
               for i:=thisRec to numRecs - 1 do

        begin
                 name[i] := name[i+1];
                 address[i] := address[i+1];

        end;

        numRecs:=numRecs-1;

      end;

    end;

 

    if (ch='R') then

    begin
            write('Which record number do you wish to read? ');
            readLn(thisRec);
            if (thisRec<1) or (thisRec>numRecs) then
                writeLn('Record number must be between 1 and ',numRecs)

      else

      begin

        writeLn;
        writeLn('Record no.',thisRec);
        writeLn('-------------');
        writeLn('   Name: ',name[thisRec]);
        writeLn('Address: ',address[thisRec]);

      end;

    end;

 

  until ch='E';
                  assign(outFile, fileName); rewrite(outFile);
                  for i:=1 to numRecs do
                         begin
                                  writeLn(outFile,name[i]);
                                  writeLn(outFile,address[i]);

  end;

  close(outFile);

 

end.
4
Contributors
5
Replies
6
Views
7 Years
Discussion Span
Last Post by Stib08
0

Evertime i try complie and execute the code nothing happens, but there isnt any errors to to me whats wrong with it

tried running in command prompt and i got back a runtime error
"Runtime error 2 at 0x0040104D
0x0040104D
0x0040202759"

0

Dos Error 2 :File not found.When calling 'Reset','Append',Rename or 'Erase',the file assigned by the file-variable not exist or its name is invalid

0

Sweet thanks man!, got it working
All i had to to was change the files name

0

It all appears fine except for the read procedure you are offering the user to envoke. Not far to go... Keep on eye on the Writeln/Readln versus Write/Read too. Good luck.

This question has already been answered. Start a new discussion instead.
Be sure to adhere to our posting rules.