Lire un fichier binaire sur le CDRom [Résolu]

Signaler
Messages postés
17
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
17 juillet 2006
-
Messages postés
17
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
17 juillet 2006
-
Salut à tous.
J'ai un petit souci. J'ai besoin de lire un fichier binaire sur un CDRom.(2 Go)  J'ai essayé la méthode Octet par Octet et la méthode avec BlockRead.

J'ai à chaque fois un message me disant Accès refusé.

Je peu lire les fichiers Texte sans problème.

Alors je me suis rabattu sur Visual Basic 6 qui lui me fait ça sans problème hormis
le temps d'éxécution.

Si vous avez une solution surtout avec BlockRead je suis preneur.
Merci d'avance                   
Votre PapyJo.

[:D]
 
PapyJo

6 réponses

Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
Salut,

ben c'était utile de donner ton code puisqu'il ma permis de voir que tu utilisais la mauvaise méthode.

Essaye ceci :

procedure TForm1.Button2Click(Sender: TObject);
Var Source , Dest : TFileStream;
begin
  Source := TFileStream.Create('h:\Video_ts\video_ts.ifo', fmOpenRead);
  Dest   := TFileStream.Create('c:\Essais\video_ts.ifo', fmCreate);
  Dest.CopyFrom( Source, Source.Size);
  Dest.Free;
  Source.Free;
end;


<hr />




 n'oubliez pas de cliquer sur
Réponse Acceptée





si elle vous convient



<hr />













@+
Cirec
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
en fait c'est la méthode d'accès au fichier qui n'était pas la bonne :

procedure TForm1.Button1Click(Sender: TObject);
Var
S,T:Fileof char;
pt: integer;
Source:string;
Cible:string;
ch:char;
Longueur:integer;
begin
  Source:= 'h:\Video_ts\video_ts.ifo'; // DVDROM
// Acces refusé sur le DvdRom (File acces denied)
//Source:='D:\Video_ts.ifo';  //Copié sur disque dur
// Fonctionne sur disque dur...
// Il faut que je le lise Octet par Octet sur le DVD.
  Cible:= Path.APPDIR + '\video_ts.ifo';
  AssignFile(S,Source);
{Les valeurs FileMode valides sont les suivantes :




0 Lecture seule
1 Écriture seule
2 Lecture/Écriture }



  FileMode := 0;

  Reset(S);
  AssignFile(T,Cible);
  FileMode := 2;
  Rewrite(T);
  Longueur:=Filesize(S);
  for pt: =1 to Longueur do
  begin
    Read(S,ch);
    Write(T,ch);
    end;
  closeFile(S);
  CloseFile(T);
end;


<hr />




 n'oubliez pas de cliquer sur
Réponse Acceptée





si elle vous convient



<hr />













@+
Cirec
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
Salut,

le stricte minimum pour essayer de comprendre ce qui cloche c'est de nous fournir le code responsable du problème non ?

@+
Cirec
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

au cas ou ça n'est pas clair pour toi, ce que Cirec et Francky veulent dire c'est que Delphi peut parfaitement lire un fichier sur un cdrom (encore heureux), donc t'as surement une erreur de prog.

d'ou le besoin d'avoir le code pour t'aider...

ps:
un DVD (enfin je supoose, hein parceque un cd de 2go...) n'est pas different d'un disque du dur si tu fait seulement de la lecture. tu peux faire de test avec une copie du fichier.

A+
Messages postés
17
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
17 juillet 2006

Chers amis.
Je pensais qu'il était inutile de vous donner mon code car ma question était
Pourquoi ne puis je lire un fichier binaire Octet par octet sur le DVDRom.
Essayez avant de conclure, et vous vous rendrez compte par vous mème.
Bien sur si je copie le fichier sur le disque dur celà fonctionne très bien.

Je vous joins le code à toutes fins utiles.
'----------------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
Var
S,T:File of char;
pt: integer;
Source:string;
Cible:string;
ch:char;
Longueur:integer;
begin
Source:='h:\Video_ts\video_ts.ifo'; // DVDROM
// Acces refusé sur le DvdRom (File acces denied)
//Source:='D:\Video_ts.ifo';  //Copié sur disque dur
// Fonctionne sur disque dur...
// Il faut que je le lise Octet par Octet sur le DVD.
Cible:='c:\Essais\video_ts.ifo';
AssignFile(S,Source);
Reset(S);
AssignFile(T,Cible);
Rewrite(T);
Longueur:=Filesize(S);
for pt:=1 to Longueur do
begin
Read(S,ch);
Write(T,ch);
end;
closeFile(S);
CloseFile(T);
end;


{Bien sur si c'est un fichier texte que je lis en TextFile ça marche.
Une copie avec les API fonctionne aussi.
Mais avec Blockread et BlockWrite  cette erreur également est présente.


Donc j'ai codeé mon programme avec Visual Basic et là c'est bon.???????
Si vous vous ètes heurté à ce problême avez vous la solution ?
Les donneurs de leçons s'abstenir.


PapyJo  }

[:D]
 
PapyJo
Messages postés
17
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
17 juillet 2006

Ok Merci du tuyau pour le FileMode car je ne connaissait pas.
Je vais refaire mon code comme ça et c'est évident que ça vamarcher.
Pardonnez moi mais je ne suis qu'un amateur.
PapyJo...........

[:D]
 
PapyJo