Ik begrijp niet zo goed wat je wilt.
Je voorbeeld output in je code komt niet echt overeen met wat je programmeert.
Je verwacht ouput:
1 2 3
4 5 6
7 8
Maar je slaat alle bytes op in je stringlist als hexadecimale representatie voorafgegaan door een '$'.
Je gaat dus nooit de output krijgen die je wilt.
Waarom is die stringlist eigenlijk nodig?
Je kunt toch gewoon byte voor byte lezen (vanuit je stream) en converteren als je schrijft?
Pseudocode:
Code:
counter := 0;
while not end of stream do
read a byte
if counter = maxchars then writeln
write byte as hex + space
inc counter
end while
Overigens, de check voor MS.Read(B,1) > 0 lijkt me wat paranoide, gezien je dit in een loop doet tot MS.Size-1.
Als je per se wilt checken, dan moet je ook consequent zijn, namelujk checken dat MS.Read(B,1)=1, iedere andere waarde is fout.
Wellicht kun je iets doesn zoals ik in mijn (zeer naïeve implementatie van)
http://svn.code.sf.net/p/flyingsheep...hexdump/hd.lpr?
Bart