Avatar billede krab Praktikant
13. april 2005 - 22:38 Der er 9 kommentarer og
1 løsning

fejler med array,.

Hey Eksperter!

Kig li lidt på det her kode, jeg skoder lidt til det :) men får altså en alvorlig fejl!! redalert! kender ikk så meget til array,, kan man godt bruge sizeof, har kodet en del asp, og der ville jeg bruge: UBound(check_array)
var
  check_array: array of string;


        for i := 0 to sizeof(check_array)-1 do
            begin
                if kort = check_array[i] then
                begin
                        exit;
                end;
            end;
        end;

fejlen ser således ud: http://nicetrade.dk/fejl1.jpg
Avatar billede erikjacobsen Ekspert
13. april 2005 - 22:40 #1
sizeof giver dig antal bytes, ikke antal indgange. Hvor kommer check_array fra?
Avatar billede krab Praktikant
13. april 2005 - 22:42 #2
Nå for søren, kender heller ikk til den,,. hvordan ka jeg så gøre så den løbe alle poster igennem der er i check_array?? Til at starte med er der ingen, men det er meningen der skal komme nogle når lykken køre..
Avatar billede erikjacobsen Ekspert
13. april 2005 - 22:43 #3
Hvor kommer check_array fra?
Avatar billede krab Praktikant
13. april 2005 - 22:45 #4
Humm, ikk rigtig fra noget :).. altså jeg har bare skrevet den ind oppe ved det globale... jamen der er jo ikke noget i den til at starte med, skal den så komme nogle steder fra? :) er ikk så go til det her
Avatar billede erikjacobsen Ekspert
13. april 2005 - 22:46 #5
Måske ikke, men har du hørt om Control-C, Control-V. Det kunne være vi skulle se hvad du har gjort?
Avatar billede krab Praktikant
13. april 2005 - 22:48 #6
hehe,.. ok...

Men nu tænker du sikkert, sikke en skod newbie... men hva,,.. her er koden:

var
  Game21: TGame21;
  antal_kort, kort_nummer, kort_type:integer;
  spiller_kort_array, spiller_type_array: array of integer;
  check_array: array of string;
  kort:string;

implementation

{$R *.dfm}

procedure TGame21.FormCreate(Sender: TObject);
var
kort_nummer:array[1..18] of integer;
kort_type:array[1..4] of integer;
i, i_def, i_start, i_stop:integer;
begin
        for i := 1 to 18 do
        begin
                kort_nummer[i] := i;
        end;

        for i := 0 to 4 do
        begin
                kort_type[i] := i;
        end;

        antal_kort := 7;
        i_def := 0;
        i_start := 0;
        i_stop := antal_kort -1;
end;

Function givkort(spiller_nr:string):Boolean;
var count, i:integer;
begin
Randomize;
count := 0;
while count < antal_kort do
        begin
        //disse er globale variabeler!
        kort_nummer := random(51);
        kort_type := random(3);
        kort := inttostr(kort_type+1) + inttostr(kort_nummer+1);
        count := count+1;

        for i := 0 to sizeof(check_array)-1 do
            begin
                if kort = check_array[i] then
                begin
                        exit;
                end;
            end;
        end;
end;
Avatar billede erikjacobsen Ekspert
13. april 2005 - 22:52 #7
Det ved jeg såmænd ikke.

Du har et "dynamic array" - ja, flere. Du ved godt man skal bruge SetLength for
at give dem en ønsket længde, og kan bruge disse funktioner for at finde størrelser på dem:

Once a dynamic array has been allocated, you can pass it to the standard functions Length, High, and Low. Length returns the number of elements in the array, High returns the array’s highest index (that is, Length – 1),
Avatar billede krab Praktikant
13. april 2005 - 22:54 #8
humm.. ok,,.. som sagt,, jeg er taber til det her sprog,. men meget sjovt at prøve :)
Avatar billede erikjacobsen Ekspert
13. april 2005 - 22:54 #9
Så kan du evt starte med arrays af fast længde.
Avatar billede siz23 Nybegynder
28. april 2005 - 04:48 #10
var
  check_array: array of string;
  kort:string;
  i:integer;
begin
    randomize;
    Kort:='1';
    //laver en tilfældig længde på dit array
    SetLength(check_array,random(1000));
    for  i := LOW(check_array) to HIGH(check_array)-1 do
    begin
          //kører det dynamiske array igennem og sætter et tilfældigt tal
          check_array[i]:=inttostr(random(100));
    end;

    for i := LOW(check_array) to HIGH(check_array)-1 do
    begin
          //kører det dynamiske array igennem
          if '1' = check_array[i] then
          begin
              //viser en besked der engiver hvor i arrayet, der er et tal der er 1.
              Showmessage(inttostr(i));
          end;
    end;
end;
-------------------------------------------------------
ved ikke om det er det du kigger efter, har ikek tid til at kigge kommentare efeter
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