CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Lire du wave en boucle ? [DELPHI]

Nicoboss3
Nicoboss3
Niveau 6
28 novembre 2004 à 14:45:46

Salut j´voudrait savoir ce que je doit modifier pour que la lecture du wave se fasse en boucle dans se code :

implementation
uses mmsystem;
{$R *.DFM}
{$R testressources.RES}

/ / pour obtenir le . RES, on a compilé le script . RC
/ / en faisant BRCC32 nom du fichier . rc

procedure TForm1.Button1Click(Sender: TObject);
var
AdrSon: PChar;
hRessourceVoulue : THandle;
/ / handle désignant la ressource située dans l´exe
hBlockMemoireRes : THandle;
/ / handle sur le bloc mémoire contenant la ressource

begin
/ / Initialisation du handle désignant la ressource située dans l´exe
hRessourceVoulue:=FindResource(HInstance, ´Cloche´, ´WAVE´);
if hRessourceVoulue<>0 then / / s´il l´a trouvé
begin
/ / chargement de la ressource en mémoire
hBlockMemoireRes:=LoadResource(HInstance, hRessourceVoulue);
if hBlockMemoireRes<>0 then / /si cela s´est bien passé
begin
/ / on bloque la mémoire contenant le bloc mémoire
/ / et au passage on récupère le pointeur désignant le premier
/ / octet de la ressource
AdrSon:=LockResource(hBlockMemoireRes);
/ / on joue le son par SndPlaySound
if Assigned(AdrSon) then SndPlaySound(AdrSon, snd_ASync or snd_Memory);
UnlockResource(hBlockMemoireRes); / / on débloque la mémoire
end;
FreeResource(hRessourceVoulue); / / libération de la mèmoire
end;
end;

end.

Merci ( Ma ressource s´appelle testressource.res )

Nicoboss3
Nicoboss3
Niveau 6
08 décembre 2004 à 14:42:15

UP !

Technix59
Technix59
Niveau 5
08 décembre 2004 à 20:36:08

Salut,

Tu ajoutes SND_LOOP à ta fonction SndPlaySound.

Nicoboss3
Nicoboss3
Niveau 6
09 décembre 2004 à 10:42:40

Ben c´est ce que je faisais mais quand je teste , au lieu de me lire le son de la ressource, sa fait le son de l´erreur de windows ( Bip ! ´) ! ! Mais répété , alors que si je teste avec le code normal tt va bien ( mais c´est pas en boucle ! )

Technix59
Technix59
Niveau 5
09 décembre 2004 à 12:26:30

Bon ben je ferais un essai de code et je te tiendrais au courant.

Technix59
Technix59
Niveau 5
09 décembre 2004 à 23:55:11

Salut, j´ai recréé une ressource comme je n´avais pas la tienne et à part ça, j´ai gardé les mêmes variables:

unit uWAV_Loop_mn;

/ /WAV_FILE.res Contient juste un fichier WAV
{$R WAV_File.res}

interface

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

type
TFRM_Main = class(TForm)
BTN_Play: TButton;
BTN_Stop: TButton;
procedure BTN_PlayClick(Sender: TObject);
procedure BTN_StopClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FRM_Main: TFRM_Main;

var
AdrSon: PChar;
hRessourceVoulue: THandle;
hBlockMemoireRes: THandle;

implementation

{$R *.dfm}

procedure TFRM_Main.BTN_PlayClick(Sender: TObject);
begin
hRessourceVoulue:= FindResource(hInstance, ´CLOCHE´, ´WAVE´);
IF hRessourceVoulue < > 0
THEN
BEGIN
hBlockMemoireRes:= LoadResource(hInstance, hRessourceVoulue);
IF hBlockMemoireRes < >0
THEN
BEGIN
AdrSon:=LockResource(hBlockMemoireRes);
IF Assigned(AdrSon) THEN
SndPlaySound(AdrSon, SND_ASYNC OR SND_LOOP OR SND_MEMORY);
END
ELSE MessageDlg(´Ressource non chargée´, mtError, [mbOk], 0);
UnlockResource(hBlockMemoireRes);
END
ELSE MessageDlg(´Ressource non trouvée´, mtError, [mbOk], 0);
FreeResource(hRessourceVoulue);
end;

procedure TFRM_Main.BTN_StopClick(Sender: TObject);
begin
SndPlaySound(0, SND_ASYNC OR SND_MEMORY);
end;

end.

Nicoboss3
Nicoboss3
Niveau 6
11 décembre 2004 à 13:30:34

Merci sa marche ! @++

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment