Working on a program that needs to open a file, read the contents which is a number, save the content as an integer in the program, edit the number by one and then save in the number in the file once more.

Pascal... Have nothing thus far but this. But it was only created as a test extract.
Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; d:=1; Assign(Counter,'C:\check.txt'); Rewrite(Counter,d); close(counter); d:=d+1;
It all seems basically wrong and am pretty much stuck from the start so all help will do.

What you posted is Delphi code, but those functions still work. The following is a modified example from Delphi's Help to write a value to a text file:

var
  F: TextFile;
  d: Integer;
begin
  d := 1;
  AssignFile(F, 'C:\check.txt');
  Rewrite(F);
  Writeln(F, IntToStr(d));
  CloseFile(F);
end;

Now to extract it from the file, put in array then increase the value by one and finally save it back to the file.

I get run time error(104). Here's code:
`

var User: array of UserRecord;
     var
    F: TextFile;
    d,count: Integer;
   Procedure readcounter;
begin
    AssignFile(F, 'C:\check.txt');
    Rewrite(F);
    while not eof(f) do
    readln(f,d);<----- error pointed to here
    closefile(f);
    end;
    Procedure editcounter;
    begin
    d:=d+1;
    assign(f, 'C:\check.txt');
    rewrite(f);
    writeln(f, IntToStr(d));
//Writeln(F, IntToStr(d));
    CloseFile(F);
    end;
 Procedure checkdata;
 begin
 for count:= 1 to (d) do
 with User[d] do
 if (username = Edit1.text) and (useremail = edit3.text) and (Rname = edit4.text) and (Remail = edit6.text) then
 showmessage('Certain Fields are already taken please re-check and try again')
 else
   username := Edit1.text;
   userpassword := Edit2.text;
   useremail := edit3.text;
   Rname := Edit4.text;
   Rpassword := Edit5.text;
   Remail := Edit6.text;
   application.terminate;
 end;
{ TForm1 }


{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  readcounter;
  checkdata;
  editcounter;
end;

`

Rewrite sets the file pointer to the beginning of the file for writing. Since you want to read, use Reset.

now its saying raised exception class'External: SIGSEGV'. Then points to line in control.inc
if TMethod(@Self.GetTextBuf).Code = Pointer(@TControl.GetTextBuf)

Didn't help... Really couldn't understand wat the man was saying at all

I'm going through and it points to this in my lpr

`begin<-------- pointed to here
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;

end.`

Edited 4 Years Ago by Appjacker

stepped over it and the assembler popped up with this:
System_FPC_CPUINIT (7)
System_FILLCHAR$formal$LONGINT$BYTE

Stepped again and got this:
fpc_initializeunits
and then pointed to this line saying:
0040c7A3 8b1dd0bd5600 mov

ok did that, didn't work but i think i've found the main cause of the problem by taking apart and executing each procedure individually. See below:

  Procedure checkdata;
 begin
 for count:= 1 to (d) do
 with User[d] do
 if (username = Edit1.text) and (useremail = edit3.text) and (facebookname = edit4.text) and (facebookemail = edit6.text) then
 begin
 showmessage('Certain Fields are already taken please re-check and try again');
 end
 else
   username := Edit1.text;
   userpassword := Edit2.text;
   useremail := edit3.text;
   facebookname := Edit4.text;
   facebookpassword := Edit5.text;
   facebookemail := Edit6.text;
   application.terminate;     

`
now the block that is causing the problem is

username := Edit1.text;
   userpassword := Edit2.text;
   useremail := edit3.text;
   facebookname := Edit4.text;
   facebookpassword := Edit5.text;
   facebookemail := Edit6.text;
   application.terminate;      
 end;`

Don't know what exactly is the problem, maybe a conversion needs to be done or data types changed or something. Would love to dabble with it now but i have to attend to stuff. But if you do know what to do let me know, Thanks.

Edited 4 Years Ago by Appjacker

for count:= 1 to (d) do with User[d] do

If User is an open array, then the count should be from 0 to d - 1. Apart from that, did you specify a length for the array using SetLength ?

Edited 4 Years Ago by pritaeas

did not use setlength and i change the count to o to d-1.. didn't help

This article has been dead for over six months. Start a new discussion instead.