[vb.net]suppression d'un fichier

cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011 - 8 nov. 2005 à 15:36
cs_trabice Messages postés 328 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 24 novembre 2005 - 9 nov. 2005 à 13:52
bonsoir
bon voila j'ai le code suivant pour redimensionner des images pour les enregistrer dans une base de données le seul probleme c'est qu'il m'enregistre l'image une seconde fois modifié a l'emplacement de l'autre image sous la forme : " CheminDeMonImage.jpeg(1)"
c'est pour savoir si il n'y a pas moyen de supprimer ce fichier une fois l'enregistrement fai ds ma base avec les bonnes dimensions.
Wala MERCI!!!

If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
strImg = OpenFileDialog1.FileName
img = Image.FromFile(strImg)

Me.PictureBox3().SizeMode = PictureBoxSizeMode.AutoSize
PictureBox3.Image = System.Drawing.Image.FromFile(strImg)
W1 = Me.PictureBox3.Width
H1 = Me.PictureBox3.Height

W2 = 100
H2 = 75

Dim bm_source As New Bitmap(Me.PictureBox3.Image)

Dim bm_dest As New Bitmap(W2, H2)

Dim gr_dest As Graphics = Graphics.FromImage(bm_dest)

gr_dest.DrawImage(bm_source, 0, 0, W2, H2)

Me.PictureBox1.Left = 5
Me.PictureBox1.Top = 5

Me.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage

Me.PictureBox1.Width = W2
Me.PictureBox1.Height = H2
Me.PictureBox1.Image = bm_dest
strImg = strImg + "(1)"
Me.PictureBox1.Image.Save(strImg, System.Drawing.Imaging.ImageFormat.Jpeg)

tabImgByt = images.ConvertirImageByte(strImg)

End If

20 réponses

cs_trabice Messages postés 328 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 24 novembre 2005 1
8 nov. 2005 à 16:17
lu

Imports Scripting.FileSystemObjectClass



Public fso As FileSystemObject


Public fichier As File

fso = New FileSystemObject


File= fso2.GetFile(chemin d'accès du fichier)



fichier.Delete(true)

fabrice
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
8 nov. 2005 à 17:10
salut

Imports system.io

file.delete(chemin_du_fichier)

@+
LIM
0
cs_trabice Messages postés 328 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 24 novembre 2005 1
9 nov. 2005 à 09:31
euh..oui ca marche aussi :-)
ma méthode marche quand le fichier est utilisé.on peut forcer la suppression.
si je dis pas de bétise..
0
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011
9 nov. 2005 à 09:44
oki merci a vous deux je vais essayer tout ca!
je vous tiens o courant
0

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

Posez votre question
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011
9 nov. 2005 à 09:49
Imports Scripting.FileSystemObjectClass

Je ne peux pas importer ca...
Je dois ajouter une dll, si oui laquelle!???
Merci
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
9 nov. 2005 à 09:51
Salut

Pour Imports Scripting.FileSystemObjectClass je ne sais pas.

Ce que je sais c'est que ce n'est pas du .NET

Essaye plutôt IMPORTS SYSTEM.IO,

@+
LIM
0
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011
9 nov. 2005 à 10:20
avec cette methode adapté au vb.net j'ai l'erreur suivante:

Une exception non gérée du type 'System.Security.SecurityException' s'est produite dans testimg.exe


Informations supplémentaires : Exception de HRESULT : 0x800A0046 (CTL_E_PERMISSIONDENIED).
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
9 nov. 2005 à 10:27
Salut

Ton fichier doit être utilisé par ton propgramme, donc tu ne peux pas le supprimer.
il faut libérer le fichier avant de pouvoir le supprimer. C'est ce que je comprend de ton message d'erreur.
Si le fichier que tu veux supprimer est l'image dans ta picturebox tu ne pourras pas le supprimer. Il faudra libérer la picturebox et l'objet image avant de passer à la suppression du fichier

@+
LIM
0
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011
9 nov. 2005 à 10:31
le fichier que je veux supprimer est le nouveau fichier créé a de bonnes dimensions pour ma base de données
mais pour libere ma picture box je fais bien picturebox1=nothing et idem pour limage img=nothing mais cela ne marche pas
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
9 nov. 2005 à 10:40
im=Nothing ne libère pas la ressource

Voilà un bout de solution

Soit
PBOX (une picturebox)
IM (objet IMAGE)

'Charge une image
IM=new BITMAP(TA_PHOTO)
PBOX.IMAGE=IM

'Décharge une image
PBOX.Dispose
IM.dispose

Avec dispose tu libères les ressources utilisées par ton image

@+
LIM
0
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011
9 nov. 2005 à 10:58
Mais meme en libérant ma picture box et mon img cela me sort le meme probleme je ne comprend pas
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
9 nov. 2005 à 11:02
là je vois pas

met un try catch dans ton code pour voir l'erreur exacte

TRY

'TON CODE

CATCH EX AS EXCEPTION
MSGBOX(ex.tostring)
END TRY

dans la msgbox tu auras une peut-être une xplcation plus claire de ton problème

@+
LIM
0
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011
9 nov. 2005 à 11:18
Eh bien il medit:
"System.SecurityException : Exception de HRESULT : 0x800A0046(CTL_E_PERMISSIONIED)
at scrpting.FileClass.Delete(Boolean Force)
at testimg.form1.btnsave_click(object sender, EventArgs e) in E:\Visual Studio Projects\testimg\form1.vb:line 300

Je ne suis pas beaucoup plus avancé...
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
9 nov. 2005 à 11:26
si car tu as la ligne de code qui plante

in E:\Visual Studio Projects\testimg\form1.vb:line 300

@+
LIM
0
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011
9 nov. 2005 à 11:26
je crois que c'est lorsque j'appelle la conversion de mon image en byte pour la mettre dans un tableau de byte qui pose pb:

tabImgByt = images.ConvertirImageByte(strImg)

il n'y a pas un moyen comme "dispose" pour les tableaux de byte??
0
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011
9 nov. 2005 à 11:35
bah oui mais la ligne 300 c'est:

fichiers.Delete(
True)

dc je c po trop koi faire!
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
9 nov. 2005 à 11:35
Petit bout de prog que je viens de tester

Soit une Form, 2 boutons et 1 picturebox


Imports System.IO


Dim IM
As Image

'Charge une image dans la picturebox
Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click
'Si mon objet image n'est pas vide je le vide

If
Not (IM
Is
Nothing)
Then
IM.Dispose()

End
If
'Affectation de l'image à mon objet
IM =
New Bitmap("C:\test.jpg")
'Affichage de l'image dans la picture box
PictureBox1.Image = IM

End
Sub



'Sauve l'image
'Vide la picture box
'Libère la ressource objet image
'Supprimer le fichier de départ
'Renomme de nouveau fichier en fichier de départ (pour que l'application puisse touner en boucle)
'Suprimer le fichier temporaire
Private
Sub Button2_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button2.Click
'Sauvegarde mon image
PictureBox1.Image.Save("C:\test1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
'Vide la picture box
PictureBox1.Image =
Nothing
'Vide mon objet image
IM.Dispose()
'Supprimer le fichier de départ
File.Delete("C:\test.jpg")
'Copie le ficher sauvagarder sous le nom du fichier de départ
File.Copy("C:\test1.jpg", "C:\test.jpg")
'Supprimer le fichier sauvagarder
File.Delete("C:\test1.jpg")

End
Sub

A toi de voir si çà peut t'aider

@+
LIM
0
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011
9 nov. 2005 à 12:15
Bah merci mais non cela ne m'avance pas car en fait mon image redimensionnée est juste pour ma base de données il faut que je garde l'image originale sur mon pc!
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
9 nov. 2005 à 12:18
je suis d'accord avec toi mais ceci servait d'exemple pour te montrer un raisonnement, il est évident que tu dois adapter le bout de solution que je te propose à ton cas précis

@+
LIM
0
cs_trabice Messages postés 328 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 24 novembre 2005 1
9 nov. 2005 à 13:52
sisi c'est du .net
extrait de l'aide .net

Pour créer une référence à la bibliothèque de types Scripting (Scrrun.dll)
Dans le menu Projet, cliquez sur Ajouter une référence, puis sur l'onglet COM.
Sélectionnez Microsoft Scripting Runtime dans la liste Nom du composant, puis cliquez sur Sélectionner.
Vous pouvez à présent utiliser l'Explorateur d'objets pour visualiser les objets, les collections, les propriétés, les méthodes, les événements et les constantes du modèle FSO.
Pour créer un objet FileSystemObject
Dimensionnez une variable comme type FileSystemObject, comme dans le code suivant :
Dim fso As New FileSystemObject
- ou -
Utilisez la méthode CreateObject pour créer un objet FileSystemObject, comme dans le code suivant :
fso = CreateObject("Scripting.FileSystemObject")
0
Rejoignez-nous