procedure TForm1.Button1Click(Sender: TObject); var navne : array of string; i : integer; begin memo1.Clear; SetLength(navne,250); for i := 0 to 250 do navne[i] := 'Navn'+ inttostr(i);;
for i := 0 to 250 do memo1.Lines.Add('Nr'+inttostr(i)+ ' ' + navne[i]); end;
Jeg får en EAccessViolation fejl, når jeg bruger din kode. Hvis jeg ændrer SetLength(navne,250) til SetLength(navne,251), så kører koden fint. Det tyder på en bug.
aarrg, jeg er en klovn. Jeg prøvede at putte 251 elementer ind i et array på kun 250 elementer. Det var bare mærkeligt den ikke ville give element 248 en værdi. Efter jeg har lukket/startet Delphi kører det som det skal.
Du burde da heller ikke kunne putte 252 (0 til 251) elementer i array på 250
lige et trick hvis du skal fylde et array på den måde :
procedure TForm1.Button1Click(Sender: TObject); var navne : array of string; i : integer; begin memo1.Clear; SetLength(navne,250); for i := 0 to length(navne) -1 do navne[i] := 'Navn'+ inttostr(i);;
for i := 0 to length(navne) -1 do memo1.Lines.Add('Nr'+inttostr(i)+ ' ' + navne[i]); end;
Ved at benytte Length(detArrayDuSkalFylde) -1 kommer du aldrig til at fylde for lidt eller for meget i...
Måske overkill, men man slipper for alle index out of range...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.