how to blast an 2d array aout to screen without for-loops? - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

how to blast an 2d array aout to screen without for-loops?

MalekovitsMalekovits Posts: 24Member
Hi all! I'm using borland pascal (1992) and I wonder how to blast an 2d array out to screen without using the standard two for-loops:

for i:=1 to... do
begin
for j:=1 to... do
write....
writeln

I wonder if there is something like the fillchar function, that if u use it you can "erase" the contents of an array in a simple function, without the for-loops, to write all the contents of an 2d array at once..

Comments

  • _Atex__Atex_ Posts: 163Member
    : I wonder if there is something like the fillchar function, that if u
    : use it you can "erase" the contents of an array in a simple
    : function, without the for-loops, to write all the contents of an 2d
    : array at once..

    [code][color=Blue]uses crt;


    procedure fillbyte(var x;count:word;b:byte);assembler; { similar to FillChar, but faster, it takes bytes }
    asm
    les di,[x]
    mov cx,count
    mov al,b
    mov ah,al
    cld
    shr cx,1
    rep stosw
    adc cx,cx
    rep stosb
    end;

    procedure fillword(var x;count,w:word);assembler; { same as above, 16 bit }
    asm
    les di,[x]
    mov cx,count
    mov ax,w
    cld
    rep stosw
    end;



    var a:array[0..3999] of byte absolute $b800:0;
    i:word;

    begin
    repeat
    for i:=0 to 3999 do a[i]:=random(256);
    delay(100);
    until keypressed;
    readkey;

    i:=0;
    repeat
    fillbyte(ptr($b800,0)^,4000,i);
    inc(i);
    delay(100);
    until keypressed;
    readkey;

    i:=0;
    repeat
    fillword(ptr($b800,0)^,2000,i shl 8+(255-i));
    inc(i);
    delay(100);
    until keypressed;
    readkey;

    clrscr;
    end.[/color][/code]
Sign In or Register to comment.