Recent

Author Topic: [SOLVED] array scrolling  (Read 314 times)

lazarusprogrammer

  • New Member
  • *
  • Posts: 24
[SOLVED] array scrolling
« on: August 01, 2026, 06:39:06 pm »
Hello, right now my code works this way after 56789 it shows 67899 and then 12345.

But i want it to work like that after 56789 it should show 67890 then 78901 then 89012 and so on.

So i wanna make infinite scrolling of array. Could anybody help?

Code: Pascal  [Select][+][-]
  1. program project1;
  2.  
  3. uses crt;
  4.  
  5. var
  6.   fArray      : array of Integer;
  7.   fScreen     : array of Integer;
  8.   start       : Integer;
  9.  
  10. procedure initArray;
  11. var i : Integer;
  12. begin
  13. start := 0;
  14. SetLength(fArray, 10);
  15.  
  16. SetLength(fScreen, 5);
  17.  
  18. for i:=Low(fArray) to High(fArray) do fArray[i] := i;
  19.  
  20. end;
  21. procedure Draw;
  22. var i, j : Integer;
  23. begin
  24. j := Low(fArray);
  25. for i:=Low(fScreen) to High(fScreen) do
  26.     begin
  27.     if i + start <= High(fArray) then
  28.        fScreen[i] := fArray[j + start] else
  29.                                    begin
  30.                                    start := Low(fArray);
  31.                                    j := Low(fArray);
  32.                                    end;
  33.  
  34.     Delay(100);
  35.     GotoXY(1 + i, 1);
  36.     Write(fScreen[i]);
  37.     Inc(j);
  38.     end;
  39. end;
  40.  
  41. procedure Move;
  42. begin
  43. Inc(start);
  44. end;
  45.  
  46. procedure MAIN;
  47. begin
  48. Draw;
  49. Move;
  50. Delay(1200);
  51. end;
  52.  
  53. begin
  54. initArray;
  55.  
  56. while True do MAIN;
  57.  
  58. end.
  59.  
  60.  


« Last Edit: August 05, 2026, 09:55:13 pm by lazarusprogrammer »

Fibonacci

  • Hero Member
  • *****
  • Posts: 1081
  • Behold, I bring salvation - Unleashed Pascal
    • fibo.gg
Re: array scrolling
« Reply #1 on: August 01, 2026, 07:34:40 pm »
Code: Pascal  [Select][+][-]
  1. {$mode objfpc}
  2. uses sysutils;
  3. var
  4.   s: Integer = 0;
  5.   i: Integer;
  6. begin
  7.   repeat
  8.     write(#13);
  9.     for i := s to s + 4 do write(i mod 10);
  10.     flush(output);
  11.     s := (s + 1) mod 10;
  12.     sleep(1000);
  13.   until false;
  14. end.
Unleashed Pascal: async/await, parallel for, match, tuples, string interpolation, inline vars, autofree, no-RTTI & tons more. Star on GitHub

dseligo

  • Hero Member
  • *****
  • Posts: 1690
Re: array scrolling
« Reply #2 on: August 02, 2026, 03:33:52 pm »
So i wanna make infinite scrolling of array. Could anybody help?

I would change procedure Draw to:
Code: Pascal  [Select][+][-]
  1. procedure Draw;
  2. var i, j : Integer;
  3. begin
  4.   j := Low(fArray);
  5.   for i:=Low(fScreen) to High(fScreen) do
  6.   begin
  7.     fScreen[i] := fArray[j + start];
  8.     Inc(j);
  9.     If j + start > High(fArray) then
  10.       j := - start;
  11.  
  12.     Delay(100);
  13.     GotoXY(1 + i, 1);
  14.     Write(fScreen[i]);
  15.   end;
  16. end;

And procedure Move to:
Code: Pascal  [Select][+][-]
  1. procedure Move;
  2. begin
  3.   Inc(start);
  4.   If start > High(fArray) then
  5.     start := 0;
  6. end;

lazarusprogrammer

  • New Member
  • *
  • Posts: 24
Re: array scrolling
« Reply #3 on: August 05, 2026, 09:54:38 pm »
So i wanna make infinite scrolling of array. Could anybody help?

I would change procedure Draw to:
Code: Pascal  [Select][+][-]
  1. procedure Draw;
  2. var i, j : Integer;
  3. begin
  4.   j := Low(fArray);
  5.   for i:=Low(fScreen) to High(fScreen) do
  6.   begin
  7.     fScreen[i] := fArray[j + start];
  8.     Inc(j);
  9.     If j + start > High(fArray) then
  10.       j := - start;
  11.  
  12.     Delay(100);
  13.     GotoXY(1 + i, 1);
  14.     Write(fScreen[i]);
  15.   end;
  16. end;

And procedure Move to:
Code: Pascal  [Select][+][-]
  1. procedure Move;
  2. begin
  3.   Inc(start);
  4.   If start > High(fArray) then
  5.     start := 0;
  6. end;

Yes. Nice. Thank you. Didn't know you can say j := - start;

 

TinyPortal © 2005-2018