Avatar billede stoney Nybegynder
27. oktober 2002 - 21:39 Der er 3 kommentarer og
1 løsning

array, what the f... is happening

Af en eller anden grund får item 248 i mit array
ikke tildelt nogen værdi.
Er det en bug eller hvad.
Evt. nogen der har en forklaring

mit resultat

....
Nr246 Navn246
Nr247 Navn247
Nr248
Nr249 Navn249
Nr250 Navn250




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;

Stoney
Avatar billede nca Juniormester
27. oktober 2002 - 22:15 #1
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.
Avatar billede stoney Nybegynder
27. oktober 2002 - 22:30 #2
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

weird weird

Stoney
Avatar billede diz Nybegynder
27. oktober 2002 - 22:42 #3
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...

/DiZ
Avatar billede doc404 Novice
28. oktober 2002 - 00:57 #4
Har selv for vane at benytte

for Low(SomeArray) to High(SomeArray) do
...

Måske overkill, men man slipper for alle index out of range...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester