Avatar billede michael-schou Novice
10. maj 2002 - 11:21 Der er 6 kommentarer og
1 løsning

Random fra ListBox?

Hvis man har en ListBox med alle alfabetets bogstaver, hvordan kan man så lave en random som udskriver de 18 bogstaver til hver deres edit felt.

NB : Bogstaverne skal selvfølgelig være forskellige

//Michael S
Avatar billede martinlind Nybegynder
10. maj 2002 - 11:27 #1
alle alfabetets bogstaver = 18 ????????
Avatar billede hermandsen Juniormester
10. maj 2002 - 15:15 #2
private
  Edits: array [1..28] of TEdit;

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  Randomize;
  for I := 1 to 28 do
  begin
    Edits[I] := TImage.Create(Form1);
    Edits[I].Parent := Form1;
    Edits[I].Top := (y-1)*16;
    Edits[I].Tag := I;
  end;
end;

procedure TForm1.ButtonClick(Sender: TObject);
var
  I, Index: Integer;
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.Strings := ListBox1.Items.Strings;
  for I := 1 to 28 do
  begin
    Index := Random(sl.Count);
    Edits[I].Text := sl.Strings[Index];
    sl.Delete(Index);
  end;
end;

Jeg har altså ikke testet det, men det burde virke... Hvis Edit'sne ikke kommer på formen, så smæk evt. et panel på, og så skriv

    Edits[I] := TImage.Create(Panel1);
    Edits[I].Parent := Panel1;

i stedet for.

//hermandsen
Avatar billede athlon-pascal Juniormester
11. maj 2002 - 18:27 #3
"§ 1. Bogstaverne

(1)ALFABETET
Det danske alfabet består af 29 bogstaver. Hvert af bogstaverne findes både som lille bogstav og stort bogstav:

a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å"

Starten af § 1 i Retskrivningsordbogen 3. udgave udgivet 2001 af Dansk Sprognævn, http://www.dsn.dk/
Avatar billede athlon-pascal Juniormester
11. maj 2002 - 18:29 #4
hermandsen -> Husk "W" ("array [1..28]") :-)
Avatar billede hermandsen Juniormester
11. maj 2002 - 18:34 #5
Hehe... Sorry! ;)
Avatar billede hreiff Nybegynder
12. maj 2002 - 19:16 #6
Her er noget som laver en tilfældig streng af forskellige tegn
(ingen gentagne).

Function GetRandomString:string;
{returnerer en tilfældig alfabetstreng}
Var
  Temp,Alfabet:string;
  J,I:integer;
Begin
  Randomize;
  Alfabet := 'ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ';
  J := length(Alfabet);
  Temp := '';
  While (J > 0) do
  Begin
    I := random(J)+1;
    Temp := Temp + Alfabet[I];
    Delete(Alfabet,I,1);
    Dec(J);
  End;
  Result := Temp;
End;

Kaldes med:
strn:= GetRandomString;
og de 18 bogstaver kan tages som de 18 første, dvs.
Edit1.Text:=Strn[1];
Edit2.Text:=Strn[2];
...
Edit18.Text:=Strn[18];

evt. kan man lave noget som fordeler strengen i editbox´e:

procedure IndsaetText(strn:string);
{fordeler strn i tilgængelige EditBox'e}
var
  i,j: integer;
begin
  j:= 0;
  for i:= 0 to componentcount-1 do
    if components[i] is TEdit then
    begin
      inc(j);
      TEdit(Components[i]).Text := strn[j];
    end;
end;

Kaldes med:
  IndsaetText(GetRandomString);

Fordeler de tilfældige bogstaver i de EditBox'e der er på formen.
(dvs. hvis der er 18 Editbox'e får man 18 tilfældige forskellige bogstaver i dem)

//hreiff
Avatar billede michael-schou Novice
16. maj 2002 - 11:22 #7
Til hreiff

Jeg har fået løst mit problem ved at sætte ALFABET := Edit19.Text;
Tak for hjælpen alle sammen :-)

//Michael S
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