At 22:15 20/12/2004, you wrote:
I have problem with two dimension array of string

my program:

procedure testlinie;
var
   linie  : array[0..1,0..100] of shortstring;
   i,ii : integer;
begin
  fillchar(linie,sizeof(linie),0);
  for i := 0 to 1 do begin
    for ii:= 1 to 10 do begin
      linie[i,ii]:= linie[i,ii]+char(64+ii);
      writeln(i:5,ii:5,linie[i,ii]) ;

    end;
  end;
end;

during execution output is:
0 1 A
0 2 B
0 3 C etc.

but should be:
0 1 A
0 2 AB
0 3  ABC

on Delphi all works OK.

On delphi it works exactly the same. Your code never do what you want, only what it can do. The problem is that you have a matrix (2,101) with strings. If you do


linie[i,ii]:= linie[i,ii]+char(64+ii); (i=0; ii=0) -> linie[0,0]:= linie[0,0]+'A'
linie[i,ii]:= linie[i,ii]+char(64+ii); (i=0; ii=1) -> linie[0,1]:= linie[0,1]+'B'
linie[i,ii]:= linie[i,ii]+char(64+ii); (i=0; ii=2) -> linie[0,2]:= linie[0,2]+'C'



so on each inner cycle you are adding a letter to other string in the matrix. The linie structure is in fact a tridimensional matrix [0..1,0..100,0..sizeof(shortstring)] of char . It's not a bug in the compiler, only in your code.


HTH


-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Scientists have shown that the moon is moving away at a tiny yet measurable distance from the earth every year.
If you do the math, you can calculate that 85 million years ago the moon was orbiting the earth at a distance of
about 35 feet from the earth's surface. This would explain the death of the dinosaurs. The tallest ones, anyway.



_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to