Recent

Author Topic: SOLVED: Picking up external sigsegv error with array  (Read 1074 times)

karloscz

  • Newbie
  • Posts: 2
SOLVED: Picking up external sigsegv error with array
« on: January 26, 2020, 10:41:39 am »
Hello,
i can not find error, please help someone? When it tries to do apole[j]:= s[j] error occures. Procedure should divide text in each line of memo to chars in array. Thanks!

procedure TForm1.Button2Click(Sender: TObject);
type
 pole = array of char;
var
  i,j:integer;
  apole:pole;
begin
  memo2.lines.loadfromfile('1.txt');
  for i:= 1 to (memo2.Lines.Count) do
    begin
     s:= memo2.lines;
     for j := 1 to (Length(s)) do
       begin

       apole[j]:= s[j];

       end;
    end;
end;   
« Last Edit: January 26, 2020, 11:22:14 am by karloscz »

HeavyUser

  • Sr. Member
  • ****
  • Posts: 397
Re: Picking up external sigsegv error with array
« Reply #1 on: January 26, 2020, 11:15:31 am »
Hello,
i can not find error, please help someone? When it tries to do apole[j]:= s[j] error occures. Procedure should divide text in each line of memo to chars in array. Thanks!

Code: Pascal  [Select][+][-]
  1. procedure TForm1.Button2Click(Sender: TObject);
  2. type
  3.  pole = array of char;
  4. var
  5.   i,j:integer;
  6.   apole:pole;
  7. begin
  8.   memo2.lines.loadfromfile('1.txt');
  9.   for i:= 1 to (memo2.Lines.Count) do
  10.     begin
  11.      s:= memo2.lines[i];
  12.      for j := 1 to (Length(s)) do
  13.        begin
  14.  
  15.        apole[j]:= s[j];
  16.  
  17.        end;
  18.     end;
  19. end;
you forgot to get memory for your array. As it stand its length 0. so do something along the line of

Code: Pascal  [Select][+][-]
  1. procedure TForm1.Button2Click(Sender: TObject);
  2. type
  3.  pole = array of char;
  4. var
  5.   i,j:integer;
  6.   apole:pole;
  7. begin
  8.   memo2.lines.loadfromfile('1.txt');
  9.   for i:= 1 to (memo2.Lines.Count) do
  10.     begin
  11.      s:= memo2.lines[i];
  12.      SetLength(apole, length(s));
  13.      for j := 1 to (Length(s)) do
  14.        begin
  15.  
  16.        apole[j]:= s[j];
  17.  
  18.        end;
  19.     end;
  20. end;

Also note that the code is only keeping one string on the array everytime the I gets increased you replace the old char array with the new.

karloscz

  • Newbie
  • Posts: 2
Re: Picking up external sigsegv error with array
« Reply #2 on: January 26, 2020, 11:21:55 am »
Thank you very much!

 

TinyPortal © 2005-2018