Capacité d'un CD ou d'un DVD

Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017 - 1 mai 2009 à 20:02
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017 - 4 mai 2009 à 12:22
Bonjour,

   Je souhaiterais connaître la capacité totale d'un CD ou d'un DVD

J'ai utilisé l'Api      SHGetDiskFreeSpace   qui ne me donne pas le résultat attendu.

Merci pour votre aide 

14 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
1 mai 2009 à 20:26
Bonjour,

la fonction GetDiskFreeSpaceEx  de la librairie kernel32 de l'API de windows te permet celà !
Un exemple d'utilisation en est donné tout cuit sur le site de All-API ...
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
2 mai 2009 à 16:11
Système Windows XP.

J'ai un CD de 650 Meg

soit: 650.000 Ko      -  soit  à peu près    650.000.000 Octets.
<hr />
Avec l'Api  GetDiskFreeSpaceEx  j'ai au retour:
Secteur  8   -   Bytes 512   - Total  =  63.348 311

E n calculant le Nbre de bytes:   Secteur * Bytes * Total --> J'obtiens : 259.474.681.856 Bytes 

Soit:  259.474.681 Octets  -  Soit  259.474  Ko  - soit    259 Megs  au lieu de650 Megs  
<hr />
Je suis loin de mes 650 Megs

Il y a quelque chose qui m'échape. Pouvez vous m'expliquer 

Merci
 

J'ai l'impression que je ne suis pas le seul sur le Net à avoir ce problème.
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
2 mai 2009 à 19:03
Re,

Ton CD est-il bien vierge ?
Est-il formaté ? Si oui : comment ?
Est-il configuré ? si oui : comment ?

Je te rappelle qu'une fois écrit par la procédure normale et le formatage "normal" (c'est à dire CD fermé et non CD configuré comme un DD), la capacité totale de ton CD est celle du BOT jusqu'au EOT (et non la capacité qu'il avait au départ), raison ppour laquelle tu ne peux plus y ajouter quoi que ce soit..
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
2 mai 2009 à 19:53
J'ai essayé avec plusieurs CD. Les résultats ne correspondent jamais à la réalité.

Pour répondre à ta question:

Ce CD, contient 65Mo de données. Il à été effacé puis enregistré  avec RecordNow.
J'ai vérifié la place disponible en affichant avec l'explorateur les propriétés du CD.


<hr />
Mon besoin:  
 J'ai développé un projet qui affiche mes librairies de Photos. Les Directories et les Noms  de photos sont enregistrés dans une base DAO. L'outil permet de ne sauvegarder sur CD que les nouvelles photos enregistrées dans mes albums.
La sauvegarde sur CD d'une photo entraîne l'enregistrement de sa date de sauvegarde sur la base DAO et le N° du CD.

Je procède actuellement de la manière suivante pour sauvegarder les dernières photos enregistrées dans mon album.
     - Connaissant le N° du dernier CD, je remets à blanc sur la base DAO, les dates de sauvegardes des photos qui se trouvent sur ce CD.
     - Je demande la capacité du CD   
     - Je balaye ma base DAO pour identifiées les photos qui n'ont pas de date de Sauvegarde.
     - Je les Sauvegarde sur un disque temporaire en cumulant leur taille.  
     - Lorsque la taille "cumulée" correspont à la capacité du CD, je Grave 

A priori, l'utilisateur de cet outil peut utiliser des CD ou DVD Vierges, formatés ou pas ou contenir déja des informations.

Je souhaite revoir cette procédure de sauvegarde qui ne me donne pas satisfaction, déterminer moi même la capacité du CD, et graver directement sur le CD sans passer par un disque temporaire.

Par avance merci pour la solution que vous pourrez me donner.

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
2 mai 2009 à 20:51
Je ne peux que confirmer ce que t'expose mon message précédent.
J'ignore (et veux ignorer) ce qu'es "RecordNow" !!!
Je souhaite par contre (et je n'ai pas eu ta réponse) savoir ce qu'il en est du type de formatage et de configuration de ton CD (apparemment un CD Rewrite)
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
2 mai 2009 à 20:53
Ah oui :

Et que se passe-t-il (as-tu essayé ? si non : fais-le donc, hein ...) de voir ce que tu obtiens en allant dans l'explorateur et en ouvrant l'onglet "propriétés" sur ton volume ??? ===>> il y a de très fortes chances que le résultat soit le même, bien évidemment !
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
3 mai 2009 à 09:48
Pour les propriétés par l'explorateur, j'en parle dans ma dernière réponse

Ca ne fait rien

Merci.
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
3 mai 2009 à 12:00
Obtenant chez moi le même résultat avec la fonction de l'Api de Windows et l'onglet "propriétés" de l'explorateur (qui utilise d'ailleurs lui-même l'Api de Windows ...) je ne peux qu'en conclure que tu "prends ta mesure" alors que l'espace total de ton CD n'est pas encore restitué (et celà est une autre paire de manches n'ayant plus rien à voir avec VB)
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
3 mai 2009 à 12:26
J'ai fait un autre test et ça me donne le même résultat.

Donne mois les instructions qui calcul l'espace total d'un CD
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
3 mai 2009 à 14:02
Je te les ai données, me semble-t-il ...!!!

Et elles marchent bien chez moi (même résultat entre propriétés et Api... pour, bien entendu, un CD dans le même état au même instant !)
Je ne peux rien "inventer" d'autre !
C'est l'état de ton CD au moment de ta "mesure", qui est mis en cause, apparemment (et - une autre fois - VB n'y est là pour rien, lui !)
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
3 mai 2009 à 14:21
  Merci.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 mai 2009 à 11:28
a quoi ressemble ton code autour de SHGetDiskFreeSpace ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 mai 2009 à 11:30
parce que la doc indique qu'il faut des ULARGE_INTEGER (64 bits)

s'agit donc de bien récuperer et de bien interpreter les resultats...
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
4 mai 2009 à 12:22
Un essai fait avec Fso donne le même résultat sur CD NON VIERGE
J'ai essayé plusieurs sources récupérées sur le Net. Toujours le même résultat pour des CD NON VIERGES

J'abandonne. Merci


<hr />




Source prise dans le guide ApiPrivateSub Form_Load()





'KPD-Team 1998








'URL: http://www.allapi.net/








'E-Mail: KPDTeam@Allapi.net








Dim

Sectors


as





Long

,Bytes


as





Long

,FreeC


as





Long

, TotalC


as





Long

,Total


as





Long

,Freeb


as





Long








'Retrieve information about the C:\


GetDiskFreeSpace





"C:"

, Sectors, Bytes, Freec, Totalc



'Set graphic mode to persistent


Me.AutoRedraw =





True








'Print the information to the form


Me.Print





" Path: C:"


Me.Print





" Sectors per Cluster:"

+ Str$(Sector)Me.Print



" Bytes per sector:"

+ Str$(Bytes)Me.Print



" Number Of Free Clusters:"

+ Str$(Freec)Me.Print



" Total Number Of Clusters:"

+ Str$(Totalc)Total = rTotalc& * rSector& * rBytes&

Me.Print



" Total number of bytes in path:"

+ Str$(Total)Freeb = rFreec& * rSector& * rBytes&

Me.Print



" Free bytes:"

+ Str$(Freeb)



End







sub








Source prise sur le Net

Public Function Espace_Disque(Unité As String) As StringDim SectorsPerCluster As Long

Dim BytesPerCluster As Long

Dim NumberOfFreeClusters As Long

Dim TtoalNumberOfClusters As Long

Dim Espace_Libre As Currency

Dim Espace_Total As Currency

Dim Espace_Utilise As Currency

GetDiskFreeSpace Unité, SectorsPerCluster, _

BytesPerSector, _

NumberOfFreeClusters, _

TtoalNumberOfClusters

Espace_Libre = NumberOfFreeClusters * BytesPerSector * SectorsPerCluster

Espace_Total = BytesPerSector * TtoalNumberOfClusters * SectorsPerCluster

Espace_Utilise = Espace_Total - Espace_Libre

Espace_Disque = "Espace Libre : " & conversion(Espace_Libre) & vbCrLf & _

"Espace Total : " & conversion(Espace_Total) & vbCrLf & _

"Espace Utilisé : " & conversion(Espace_Utilise)

Msgbox Espace_Disque

End Function
0
Rejoignez-nous