Toon posts:

[Delphi]Shuffle knop bij mediaplayer?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Als je nu bij mij de shuffle knop indrukt, dan doet het programma shuffle, alleen weet hij niet welke hij gehad heeft en welke niet. Nu staat er het volgende:

randomize;
listbox1.itemindex:=random(listbox1.items.count);

Kan iemand mij helpen?
Mike

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Tja, je zult dan moeten onthouden welke nummers je al gedraaid hebt... Wat snap je er niet van?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Ik weet niet hoe je dat moet definieren. Nu onthoudt hij niet degene die hij gespeeld heeft. Weet jij hoe je ervoor kunt zorgen dat dat wel zo is?

Mike

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

1: Je hoeft je naam niet onder elke post neer te zetten..
2: Welke taal gebruik je eigenlijk..


Makkelijkste manier is om aan het begin een lijst (oid) te maken met alle nummers, en hier random telkens 1tje uit te nemen. Deze haal je dan uit die lijst en speel je af.. Die doe je net zo lang totdat je lijst leeg is, en dan maak je van je playlist weer een nieuwe lijst.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 08:06

Tomatoman

Fulltime prutser

Randomize is maar één keer nodig per keer dat je programma draait. Dat kan bijvoorbeeld in OnCreate van je form.

Een werkend voorbeeld *D met een TListBox (gevuld met een paar items), een TButton en een TLabel:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Label1: TLabel;
    ButtonNext: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ButtonNextClick(Sender: TObject);
  private
    List: TStringList;
  public
    procedure Shuffle;
    procedure SelectNext;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  List := TStringList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  List.Free;
end;

procedure TForm1.Shuffle;
begin
  List.Clear;
  List.Assign(ListBox1.Items);
end;

procedure TForm1.SelectNext;
var
  Index: Integer;
begin
  if List.Count = 0 then
    Shuffle;
  Index := Random(List.Count);
  Label1.Caption := List[Index]; // Doe er wat mee
  List.Delete(Index);
end;

procedure TForm1.ButtonNextClick(Sender: TObject);
begin
  SelectNext;
end;

end.

Een goede grap mag vrienden kosten.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15-09 19:59

Creepy

Tactical Espionage Splatterer

Of kort gezegd:

Je moet niet random een item uit de lijst pakken, maar de items IN de lijst random neerzetten.

En dan ga je gewoon de lijst weer af zoals je normaal ook doet.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1