Hoi

Ik probeer iets simpels voor elkaar te krijgen maar krijg niet de gewenste output.
ik heb een file (binary) wat ik inlees, vervolgens wil ik ik de waardes op het scherm printen met een count van MaxChars.

File:
12345678

Output:
123
456
78

Kan iemand me even een zetje de juiste richting in geven :-)

Alvast bedankt.


Code:
program KeyToArray;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  System.Classes;

{Content file: testfile.txt:
12345678

Expected output (Maxchars = 2)
123
456
78
}




const
  FileIn  = '.\testfile.txt';
  FileOut = '.\testfile.out';
  MaxChars = 2;


var
  MS        : TMemoryStream;
  SL        : TStringList;
  Current   : integer;
  I         : integer;
  J         : integer;
  B         : Byte;
  S         : string;
begin
  S := '';

  MS := TMemoryStream.Create;
  SL := TSTringList.Create;
  try
    // Read file as binary
    MS.LoadFromFile(FileIn);
    MS.Position := 0;
    if MS.Size > 0 then
      for I := 0 to MS.Size -1 do
        if MS.Read(B,1) > 0 then
          SL.Add('$' + B.ToHexString);


    // Process StringList
    S       := '';

    WriteLn(format ('REPEAT  | MaxChars %-3d | S1 %s',[MaxChars, S]));

    Current := 0;
    repeat
      begin
        J := 0;
        while J < MaxChars do
          begin
            S := S + ' ' + SL[Current];
            if J = MaxChars then
              begin
                J := 0;
                Current := Current + MaxChars;
              end
            else
              inc(J);
            WriteLn(format ('WHILE   | MaxChars %-3d | S1 %s',[MaxChars, S]));
          end;
      end;
    until Current = SL.Count -1;

    WriteLn ('Ended');


  finally
    SL.Free;
    MS.Free;
  end;

  readln;
end.