Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : fichier .wav [ Mutimédia / Audio ] (AmineTheGreat)

mercredi 13 juin 2007 à 12:20:05 | fichier .wav

AmineTheGreat

bonjour,
j'ai un problème c'est que je veux écrire des données sur un fichier .wav mais il me donne à chaque fois une erreur d'entrée sortie:
i/o error 32 ou  i/o error 1784. le fichier où je veux écrire si il existe les données ne sont pas écrite et il me donne des fois une erreur des deux. voici le code que j'ai utiliser(c'est un code pour faire l'expérience seulement):

procedure TForm1.Button2Click(Sender: TObject);
var f:file;nom_rep:string;o:integer;i:integer;
begin
nom_rep:='C:\Documents and Settings\conversation téléphonique';
   if(fileexists(nom_rep+'\conv1'+'.wav')=false) then
        begin
            FileCreate(nom_rep+'\conv1'+'.wav');
        end;
AssignFile(F,nom_rep+'\conv1'+'.wav');
   for i:=1 to 1000 do
      begin
         o:=i;
         Reset(F,1000*sizeof(o));
         blockwrite(F,o,sizeof(o));
   end;
end;

mercredi 13 juin 2007 à 12:34:07 | Re : fichier .wav

CptPingu

Un reset dans une boucle ca me parait bizarre... De plus tu ne close jamais ton fichier avant de le réouvrir.

mercredi 13 juin 2007 à 13:00:11 | Re : fichier .wav

Francky23012301

Membre Club
Salut

CptPingu a raison mais surtout il y a une autre erreur Reset(F,1000*sizeof(o));

----Citation : ----
The Reset procedure opens a file given by FileHandle for read, write or read and write access.
 
You must use AssignFile to assign a file to the FileHandle before using Reset.
 
Use Write or WriteLn to write to the file after this Reset is executed.
 
Version 1
 
Is used for text files. They can only be read after opening with Reset.
 
Version 2
 
Is for binary files. Before using Reset, you must set FileMode to one of the following:
 
fmOpenRead  : Read only
fmOpenWrite  : Write only
fmOpenReadWrite  : Read and write
--------------------------------

Voila ta procédure modifiée (et ca fonctionne) :

procedure TForm1.Button1Click(Sender: TObject);
var f:file;MyFile:string;i:integer;
begin
   MyFile:='C:\conv1.Wav';//On fait un test =>On utilise MyFile : plus simple pour la suite
   Button1.Enabled:=False;// Permet de savoir quand la procedure est finit : évite les beugs
   if not fileexists(MyFile) then FileCreate(MyFile);
   for i:=1 to 1000 do
      begin
         AssignFile(F,MyFile);
         //O:=I : Ca ne sert à rien du tout
         Rewrite(F,1);// Et c'est quoi ce truc pas beau à la place du 1 (1=
Write only)
         blockwrite(F,i,sizeof(i));
         CloseFile(F);//On ferme aussi le fichier
   end;
   Button1.Enabled:=True;
end;

Pour finir : les Blocks c'est finit, on utilise les streams maintenant

@+

mercredi 13 juin 2007 à 13:58:33 | Re : fichier .wav

AmineTheGreat

je viens d'utiliser les streams mais j'ai le boutton qui se bloque, voici le code:

procedure TForm1.Button1Click(Sender: TObject);
var i:integer; stream:Tstream;MyFile:String;
begin
MyFile:='C:\Documents and Settings\conversation téléphonique\conv.wav';//On fait un test =>On utilise MyFile : plus simple pour la suite
   Button1.Enabled:=False;// Permet de savoir quand la procedure est finit : évite les beugs
   if not fileexists(MyFile) then Stream := TFileStream.Create(MyFile, fmcreate);
   for i:=1 to 1000 do
      begin
         Stream.Write(i, SizeOf(i));
      end;
   Button1.Enabled:=True;
   Stream.Free;
end;
 

"Si tu veux du miel, résiste au piqure des abeilles"


mercredi 13 juin 2007 à 14:14:25 | Re : fichier .wav

Francky23012301

Membre Club
Re,

Chez moi il ya rien qui se bloque . Par contre il y avait un message d'alerte parlant d'initialisation du Stream : tu l'as pas vu celui la ?

Cette procédure fonctionne sans beug de boutons.

procedure TForm1.Button1Click(Sender: TObject);
var i:integer; stream:Tstream;MyFile:String;
begin
  MyFile:='C:\conv.wav';
  If FileExists(MyFile) then exit;
  Button1.Enabled:=False;
  Stream := TFileStream.Create(MyFile, fmcreate);
  for i:=1 to 1000 do
    Stream.Write(i, SizeOf(i));
  Stream.Free;
  Button1.Enabled:=True;
end;


Tu peux retirer les instructions en rouge.

@+ et n'oublie pas de valider le message

mercredi 13 juin 2007 à 16:38:21 | Re : fichier .wav

AmineTheGreat

je ne comprends pas, il arrive une chose bizzard: Quand j'excécute le programme et je clique sur le boutton, le fichier est créé et les données sont envoyées vers le fichier. mais quand je clique sur le boutton une deuxieme fois il disparrait...
voici le code de tout le programme:

unit Unit2;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;

    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  f:file;
  nom_rep:string;
  const MyFile:string='C:\aaa\conv.wav';
  CONST HEADER:ARRAY[0..43]OF BYTE=(
$52,$49,$46,$46, $00,$00,$00,$00, $57,$41,$56,$45, $66,$6D,$74,$20,
$10,$00,$00,$00, $01,$00,$01,$00, $44,$AC,$00,$00, $88,$58,$01,$00,
$02,$00,$10,$00, $64,$61,$74,$61, $00,$00,$00,$00);
implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var i:integer; stream:Tstream;
begin
  If not FileExists(MyFile) then Stream := TFileStream.Create(MyFile, fmcreate);
 for i:=1 to 100 do
    Stream.Write(i,SizeOf(i));
  Stream.Free;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
halt;
end;

end.

"Si tu veux du miel, résiste au piqure des abeilles"


mercredi 13 juin 2007 à 17:14:29 | Re : fichier .wav

f0xi

Membre Club Administrateur CodeS-SourceS




begin
  if FileExists(MyFile) then
     { code pour fichier existant }

  with TFileStream.Create(MyFile, fmCreate) do
  try
    { code }
  finally
    Free;
  end;
end;

mercredi 13 juin 2007 à 19:04:19 | Re : fichier .wav

AmineTheGreat

je veux faire un programme qui va copier les échantillons que je récuppere de mon port parallèle sur un fichier .wav. mais le truc c'est que j'arrive même pas à écrire dans un fichier .wav, ça me donne des erreurs. j'utilise mnt les streams et toujours des problemes: ça ne s'enregistre que lorsque le fichier est créé pour la premiere fois. est ce que quelqu'un connait comment faire pour écrire des données à la fin d'un fichier .wav et quesque je dois écris à l'entete du dichier si je veux un son 8 bits, mono.
merci.  

"Si tu veux du miel, résiste au piqure des abeilles"


mercredi 13 juin 2007 à 20:47:39 | Re : fichier .wav

Francky23012301

Membre Club
Je me demande si tu formules bien ta question :  Déjà ta procédure avec les blocks ne rajoutait pas les donnés mais les substituait. Ensuite, la derniere procédure fonctionne parfaitement que l'on clicke une fois ou plusieurs fois : le fichier est toujours recréé.

Si maintenant tu veux rajouter des données à un fichier existant, il est normal qu'avec TStreamFile.Create('myfile.abc',fmCreate) détruise le fichier précédent.

Pour rajouter des données à un fichier existant il faut l'ouvrir en écriture
(MySteam := TStreamFile.Create('myfile.abc',fmOpenWrite) puis se placer à la fin du flux (MySteam.Position:=MyStream.Size).

Maintenant si ce n'est pas ca, j'abandonne : j'y comprends rien à ton probleme moi

jeudi 14 juin 2007 à 11:20:13 | Re : fichier .wav

AmineTheGreat

bjr,
pour ajouter des données à la fin de mon fichier .wav j'ai utilisé l'instruction (MySteam := TStreamFile.Create('myfile.abc',fmOpenWrite)) ( merci Franky ).
j'ai écrit une procedure Delay pour provoquer le retard en lecture de deux bits qui arrive sur une pin du port parallèle. le problème c que je ne sais pas combien dure cette procedure....
le code de cette procedure est simple:
procedure Delay(i:integer);
   begin
      for j:=1 to i do 
         begin 
         end;
   end;
par exemple pour Delay(1000) combien cela va durer
merci pour tous.

"Si tu veux du miel, résiste au piqure des abeilles"



1 2

Cette discussion est classé dans : fichier, end, rep, wav, conv1


Répondre à ce message

Sujets en rapport avec ce message

sauvegarder un fichier [ par lnicos ] Lu, je cherche un moyen d'être averti à chaque fois qu'un fichier que j'aurais spécifier est enregistrer sur le DD, par ex à chaque fois que j'enregis StringGrid et Fichier text pour lire [ par ahmed12 ] oubadjSalut tout le mande Je veux savoir comment j' ouvrir le contenue d'un fichier texte dans un TstringGrid Ling par ling. Comme avec le memo , j'a Lecture de fichier [ par trollnumber1 ] TrollBonjours ,mon probleme est de lire le fichier que j'ai créé voici la procedure d'enregistrement que j'ai fait mais je ne sais pas comment faire p Problème avec BlockRead/BlockWrite [ par broidsy ] Bonjour, J'ai un problème avec BlockRead/BlockWrite : L'objectif est de créer un petit programme qui gère des enregistrements d'élèves, de matière limite StringGrid? [ par jlmcom ] Bonjour,1. Est-ce que quelqu?un connaît la limite de capacité d?un StringGrid ?J?ai voulu charger dans ce composant un fichier de plus de 1 Mo et me s Copie de fichiers [ par natie_49 ] La fonction ci-dessous ne fonctionne pas correctement, aidez moi svp!!Merci davance.function Copiefichier(srctmp, dsttmp : TRes) : Boolean; export;var Envoyer un son d'un client sur un serveur [ par Francky23012301 ] Salut à tous Voilà une question tordue. Description : vous avez un serveur et un client. Vous voulez faire jouer un fichier Wav sur le serveur (il a Fichier Wav [ par MAsterC ] Quand je fait ceci; sndPlaySound(PChar('son.wav'), SND_LOOP); sa joue mon wav, mais à la fin il ne recommence pas la boucle? et en plus mon fichier wa Lire un fichier wav rapidement [ par Francky23012301 ] Salut à tous, Il est possible de lire un fichier wav via la commande shellexecute. Cependant il faut le temps que le média player se charge. Il y a t Enregistrer et ouvrir "détails" [ par darky93 ] J’ai Réussit à trouver un programme dans lequel il y avait Enregistrer et Ouvrir  mais pour une StringGrid. Je l’ai bidouillé  et j’ai "regroupé" mes


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.