IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[VB.NET] Une lecture de fichier difficile...


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut [VB.NET] Une lecture de fichier difficile...
    Il y a quelque chose que je ne comprends pas...

    J'aimerais que cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub textrecup(ByVal nomfichier As String)
            Dim sr As System.IO.StreamReader = Nothing
            Dim sw As System.IO.StreamWriter = Nothing
            Dim line As String
            Dim var As String
            sr = New System.IO.StreamReader(nomfichier)
            line = sr.ReadLine()
            Do While (Not line Is Nothing)
                line = line + sr.ReadLine()
            Loop
            If Not sr Is Nothing Then sr.Close()
            If Not sw Is Nothing Then sw.Close()
     
        End Sub
    me renvoie une variable ( disons MPrem de type string ), avec ce que contient le fichier en question... puis qu'il détruise le fichier après avoir récupéré son contenu...

    Est-ce possible ?

    aet, Ukyuu ^^
    S'il n'y a que les imbéciles qui ne changent pas d'avis, mes clients sont des génies.

    Aet, Ukyuu.

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Salut !

    ben ça fonctionne pas ???

    Sinon pour supprimer le fichier faut regarder dans System.IO.File il doit y avoir une méthode du genre Delete .
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut
    Ben non...

    Je viens de faire ceci :

    Fonction appelante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim message As New Mail.MailMessage
            Dim utilisateur, m, password, serveur, var As String
            Dim tabvar() As String
            message.From = Request.ServerVariables("LOGON_USER")
            message.To = "user@fai.extention"
            message.Subject = "creation article"
            tabvar = Split(Request.ServerVariables("logon_user"), "\")
            If tabvar.Length > 0 Then
                var = tabvar(1)
            Else
                var = tabvar(0)
            End If
            Me.textrecup("c:\tempo" + var + ".html", m)
            m = m + "<br><br>" & _
              "<b>Article à créer</b><br><br>" & _
              "Nom du client : " & Nomclient.Text & "<Br><Br>" & _
              "Subshape : " & qtecmd.Text & "<Br><Br>" & _
              "Demande du : " + DateTime.Now.ToString()
     
            message.BodyFormat = Mail.MailFormat.Html
            message.Priority = Mail.MailPriority.High
            message.Body = m
            utilisateur = ConfigurationSettings.AppSettings("SmtpUtilisateur")
            password = ConfigurationSettings.AppSettings("SmtpPassword")
            serveur = ConfigurationSettings.AppSettings("SmtpServeur")
     
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1")
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", utilisateur)
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password)
            SmtpMail.SmtpServer = serveur
     
            Try
                SmtpMail.Send(message)
            Catch ex As Exception
                var = ex.Message
            End Try
        End Sub
    et fonction appelée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub textrecup(ByVal nomfichier As String, ByVal m As String)
            Dim sr As System.IO.StreamReader = Nothing
            Dim sw As System.IO.StreamWriter = Nothing
            Dim line As String
            Dim var As String
            sr = New System.IO.StreamReader(nomfichier)
            line = sr.ReadLine()
            Do While (Not line Is Nothing)
                m = m + sr.ReadLine()
            Loop
            If Not sr Is Nothing Then sr.Close()
            If Not sw Is Nothing Then sw.Close()
        End Sub
    ça n'a pas l'air de fonctionner ( entre mon message qui ne s'envoie pas et ce satané fichier qui ne me renvoie pas ce que je veux -_- )
    S'il n'y a que les imbéciles qui ne changent pas d'avis, mes clients sont des génies.

    Aet, Ukyuu.

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut Re: [aspx][vb.net] Une lecture de fichier difficile...
    Citation Envoyé par Ukyuu

    me renvoie une variable ( disons MPrem de type string ), avec ce que contient le fichier en question... puis qu'il détruise le fichier après avoir récupéré son contenu...

    Est-ce possible ?
    Salut, moi je ferais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                Dim fichier As New System.IO.StreamReader(nomFichier)
                Dim buffer As String = fichier.ReadToEnd()
                fichier.Close()
                System.IO.File.Delete(nomFichier)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut
    Faut que je teste le delete ^^;

    Et bien plus de programmation pour au moins deux jours... Je ne peux plus faire de debug sans mettre mon UC à 100% avec la jauge rouge en permanence au dessus de 60.
    Le souci : même en killant le processus mon ordi reste traumatisé.
    S'il n'y a que les imbéciles qui ne changent pas d'avis, mes clients sont des génies.

    Aet, Ukyuu.

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    quand je débugge bcp, j'ai aussi ce problème.
    En quittant VS.Net, et en tuant le process ca va mieux

  7. #7
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Jamais ce problème moi. VS.NET est gourmand mais quand même.
    Vous avez VSNET 2002 ?

  8. #8
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    non, 2003 V.7.1.3088

    (j'ai lu vite, c'est vrai que c'est plutot la rame qui augmente plutot que la charge CPU)

  9. #9
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    il est buggé votre VS ou quoi

  10. #10
    Membre régulier
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Points : 97
    Points
    97
    Par défaut
    Mais ton paramètre m, ne faut il pas qu'il soit déclaré ByRef ? ou bien "out" (je ne sais pas l'équivalent VB de "out") ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub textrecup(ByVal nomfichier As String, ByRef m As String)

  11. #11
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par Pete
    Mais ton paramètre m, ne faut il pas qu'il soit déclaré ByRef ? ou bien "out" (je ne sais pas l'équivalent VB de "out") ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub textrecup(ByVal nomfichier As String, ByRef m As String)
    Non ByVal suffit car String est une classe et m est une réference à un objet String

  12. #12
    Membre régulier
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Points : 97
    Points
    97
    Par défaut
    Non ByVal suffit car String est une classe et m est une réference à un objet String
    Après reflexion je suis d'accord avec toi, et pourtant comme je suis un peu St Thomas sur les bord j'ai fait le test suivant (en C#)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void Page_Load(object sender, System.EventArgs e)
    {
        string m="";
        Test(m);
     
    }
     
    private void Test(ref string m)
    {
    	m="azeaze";
    }
    Et là m n'est pas modifié... Explications plz? (bien sur ça fonction avec le keyword "ref")
    :

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut
    Abelman :

    http://www.developpez.net/forums/vie...560941#1560941

    Je crois que c'est mon PC et non VS 2003 enterprise developper qui bugge...
    S'il n'y a que les imbéciles qui ne changent pas d'avis, mes clients sont des génies.

    Aet, Ukyuu.

  14. #14
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par Ukyuu
    Abdelman :

    http://www.developpez.net/forums/vie...560941#1560941

    Je crois que c'est mon PC et non VS 2003 enterprise developper qui bugge...
    OK .. C'est abelman (pas de d)

    Pete, on a raison tous les deux (c'est bien comme ça hein ?? )

    L'affection m ="machinchose" modifie la reference. Donc si l'argument est passé par valeur, il ne change pas.

    Par contre si string avait une méthode toto qui modifiait la chaine, en faisant m.toto() dans ta fonction Test, m aurait été modifié tout en étant passé par valeur. Manque de bol, les objets String sont immuables : On leur affecte une nouvelle valeur à chaque fois. On ne peut les modifier

    En fait tu as plus raison que moi finalement

    Ukyuu tu devrais donc mettre ByRef pour m comme te l'a suggeré pete

  15. #15
    Membre régulier
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Points : 97
    Points
    97
    Par défaut
    Ah oui merci abelman, je comprends mieux mainteant.
    C'est bô le .NET, mais à la fin, on ne sait plus ce qu'on fait !
    Faudrait rajouter quelque chose la dessus dans la partie système de la FAQ...

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut
    Rendez-moi mon ide que je puisses tester les solutions proposées...

    Ah oui, c'est vrai, le souci c'est le PC.

    /me prend un marteau...

    Petit petit petit ... viens mon petit PC, je ne te ferais pas de mal....

    /me demande un nouveau PC au service info.

    Bon il va falloir que j'attende le 700MH 512 MO ram pour pouvoir tester la solution... ou encore une fois que je bosse chez moi.

    aet, ukyuu.
    S'il n'y a que les imbéciles qui ne changent pas d'avis, mes clients sont des génies.

    Aet, Ukyuu.

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut
    Voilà dans ces procédures la varible m est passée correctement ( je crois ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Private Sub textrecup(ByVal nomfichier As String, ByRef m As String)
            Dim sr As System.IO.StreamReader = Nothing
            Dim sw As System.IO.StreamWriter = Nothing
            Dim line As String
            Dim var As String
            sr = New System.IO.StreamReader(nomfichier)
            line = sr.ReadLine()
            m = line
            If Not sr Is Nothing Then sr.Close()
            If Not sw Is Nothing Then sw.Close()
        End Sub
    Mais ne contient pas ce que je veux au final ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub fin_env_dem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles fin_env_dem.Click
            Dim message As New Mail.MailMessage
            Dim utilisateur, m, password, serveur, var As String
            Dim tabvar() As String
            message.From = Request.ServerVariables("LOGON_USER")
            message.To = "abalalojik@hotmail.com"
            message.Subject = "creation article"
            tabvar = Split(Request.ServerVariables("logon_user"), "\")
            If tabvar.Length > 0 Then
                var = tabvar(1)
            Else
                var = tabvar(0)
            End If
            Me.textrecup("c:\tempo" + var + ".html", m)
            m = m + "<br><br>" & _
              "<b>Article à créer</b><br><br>" & _
              "Nom du client : " & Nomclient.Text & "<Br><Br>" & _
              "Subshape : " & qtecmd.Text & "<Br><Br>" & _
              "Demande du : " + DateTime.Now.ToString()
     
            message.BodyFormat = Mail.MailFormat.Html
            message.Priority = Mail.MailPriority.High
            message.Body = m
            utilisateur = ConfigurationSettings.AppSettings("SmtpUtilisateur")
            password = ConfigurationSettings.AppSettings("SmtpPassword")
            serveur = ConfigurationSettings.AppSettings("SmtpServeur")
     
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1")
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", utilisateur)
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password)
            SmtpMail.SmtpServer = serveur
     
            Try
                SmtpMail.Send(message)
            Catch ex As Exception
                var = ex.Message
            End Try
        End Sub
    S'il n'y a que les imbéciles qui ne changent pas d'avis, mes clients sont des génies.

    Aet, Ukyuu.

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Pete
    Et là m n'est pas modifié... Explications plz? (bien sur ça fonction avec le keyword "ref")
    C'est déjà pas censé compiler. Une fonction qui reçoit un paramètre 'ref' doit être appelée en indiquant 'ref' aussi. Y a un truc bizarre dans ton code là :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  19. #19
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Ca serait pas un peu plus simple de bêtement faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Private Function textrecup(ByVal nomfichier as String) as String
    ...
    End Function
    et ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Dim m as String
    ...
    m = textrecup("machin.html")
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut
    J'ai tout mis dans la même fonction, mais ca ne marche toujours pas... Line ne prends pas ce qui est dans le fichier que je veux lire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     Private Sub fin_env_dem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles fin_env_dem.Click
            Dim message As New Mail.MailMessage
            Dim utilisateur, m, password, serveur, var, line As String
            Dim tabvar() As String
            Dim sr As System.IO.StreamReader = Nothing
     
            m = line
            message.From = Request.ServerVariables("LOGON_USER")
            message.To = "jennifer.moulard@saint-gobain.com"
            message.Subject = "creation article"
            tabvar = Split(Request.ServerVariables("logon_user"), "\")
            If tabvar.Length > 0 Then
                var = tabvar(1)
            Else
                var = tabvar(0)
            End If
            sr = New System.IO.StreamReader("c:\tempo" + var + ".html", m)
            line = sr.ReadLine()
            m = "<br><br>" & _
              "<b>Article à créer</b><br><br>" & _
              "Nom du client : " & Nomclient.Text & "<Br><Br>" & _
              "Subshape : " & qtecmd.Text & "<Br><Br>" & _
              "Demande du : " + DateTime.Now.ToString()
     
            message.BodyFormat = Mail.MailFormat.Html
            message.Priority = Mail.MailPriority.High
            message.Body = m
            utilisateur = ConfigurationSettings.AppSettings("SmtpUtilisateur")
            password = ConfigurationSettings.AppSettings("SmtpPassword")
            serveur = ConfigurationSettings.AppSettings("SmtpServeur")
     
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1")
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", utilisateur)
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password)
            SmtpMail.SmtpServer = serveur
     
            Try
                SmtpMail.Send(message)
            Catch ex As Exception
                var = ex.Message
            End Try
        End Sub
    S'il n'y a que les imbéciles qui ne changent pas d'avis, mes clients sont des génies.

    Aet, Ukyuu.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. stack smashing detected lors d'une lecture de fichier
    Par Dave62 dans le forum Débuter
    Réponses: 5
    Dernier message: 06/11/2009, 13h50
  2. creer un XMLNode sans une lecture de fichier XML
    Par bruman dans le forum Flash
    Réponses: 1
    Dernier message: 06/01/2009, 13h37
  3. Une lecture de fichier midi qui consomme trop de mémoire
    Par padodanle51 dans le forum Général Java
    Réponses: 6
    Dernier message: 12/04/2008, 11h52
  4. Besoin d'optimiser une lecture de fichier
    Par BakaOnigiri dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 19/02/2008, 10h12
  5. Réponses: 11
    Dernier message: 27/04/2006, 08h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo