VB.net: aiuto e dubbi[RISOLTO]

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Chry1991
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 461
Iscrizione: giovedì 23 maggio 2013, 20:20
Desktop: Linux Mint 16.04
Distribuzione: Linux Mint 16.04 Xubuntu 16.04
Sesso: Maschile

VB.net: aiuto e dubbi[RISOLTO]

Messaggio da Chry1991 »

Salve amici

allora ho una problematica che mi si verifica unatantum su dei file xml che non sono di mia appartenenza ma mi vengono ricevuti da grandi società.
Questi file mi servono per importare dati sul db tramite un eseguibile x windows che importa i dati nel db.
Solo che in questi file ogni tanto appaiono caratteri ascii ed il codice scritto dai miei colleghi di lavoro non intercetta questi caratteri.
Allora sto cercando di fare un eseguibile che ricompila i fogli xml e che li riscriva eliminando sti caratteri ascii ma sono ad un punto fermo e siccome x me il linguaggio è nuovo chiedo a voi una mano su come sistemare il codice
posto il codice

Codice: Seleziona tutto

Imports System.Xml
Imports System.IO

Public Class Form1

    Dim myFileDlog As New Windows.Forms.OpenFileDialog()
    Dim filepath As String
    Dim ascii(255) As String
    

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_1.Click

        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = 5
        ProgressBar1.Value = 0

        'look for files in the c drive
        myFileDlog.InitialDirectory = "c:\"

        'specifies what type of data files to look for
        myFileDlog.Filter = "All Files (*.*)|*.*" & _
            "|File Xml (*.xml)|*.xml"

        'specifies which data type is focused on start up
        myFileDlog.FilterIndex = 2

        'Gets or sets a value indicating whether the dialog box restores the current directory before closing.
        myFileDlog.RestoreDirectory = True

        'seperates message outputs for files found or not found
        If myFileDlog.ShowDialog() = _
            Windows.Forms.DialogResult.OK Then
            If Dir(myFileDlog.FileName) <> "" Then
                MsgBox("File Exists: " & _
                       myFileDlog.FileName, _
                       MsgBoxStyle.Information)
            Else
                MsgBox("File Not Found", _
                       MsgBoxStyle.Critical)
            End If
        End If

        'Adds the file directory to the text box
        TextBox1.Text = myFileDlog.FileName

        'carichiamo la stringa nella textbox se il file è stato scelto'
        TextBox2.Enabled = False
        TextBox2.Text = " nessun file caricato "
        If (TextBox1.Text <> "") Then
            TextBox2.Text = " caricato il file di conversione"
        End If
    End Sub

    Public Function LoadXMLDoc() As XmlDocument
        Dim xdoc As XmlDocument
        Dim lnum As Long
        'Dim pos As Long'
        'Dim Newxml As String'
        Try
            xdoc = New XmlDocument()
            xdoc.Load(filepath)
        Catch ex As XmlException
            'MessageBox.Show(ex.Message)
            lnum = ex.LineNumber
            ReplaceSpecialChars(lnum)

            xdoc = LoadXMLDoc()

        End Try
        Return (xdoc)
    End Function

   
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        filepath = myFileDlog.FileName
        Dim xmldoc As New XmlDocument()
        Dim num As New Long()
        xmldoc = LoadXMLDoc()
    End Sub

    Private Sub ReplaceSpecialChars(ByVal linenumber As Long)
        Dim strm As StreamReader
        Dim strline As String
        Dim strreplace As String = " "

        Dim tempfile As String = "C:\temp.xml"
        Try
            FileCopy(filepath, tempfile)
        Catch ex As Exception

        End Try

        Dim strmwriter As New StreamWriter(filepath)
        strmwriter.AutoFlush = True
        strm = New StreamReader(tempfile)

        Dim i As Long = 0
        While i < linenumber - 1
            strline = strm.ReadLine
            strmwriter.WriteLine(strline)
            i = i + 1

        End While

        Dim lineposition As Int32
        Dim str_vuoto As String = " "
        Dim carattere_strano As String

        strline = strm.ReadLine

        For k As Integer = 0 To ascii.Length
            ascii(k) = Chr(k)
            carattere_strano = ascii(k)
            lineposition = InStr(strline, carattere_strano)
            If lineposition > 0 Then
                strreplace = str_vuoto
                strline = Mid(strline, 1, lineposition - 1) + strreplace + Mid(strline, lineposition + 1)
                strmwriter.WriteLine(strline)
            End If
            
            Exit For
        Next
        'strline = Mid(strline, 1, lineposition - 1) + strreplace + Mid(strline, lineposition + 1)'
        'strmwriter.WriteLine(strline)'

        'strline = Mid(strline, 1, lineposition - 1) + strreplace + Mid(strline, lineposition - 1)'


        'Exit For'


        strline = strm.ReadToEnd
        strmwriter.WriteLine(strline)

        strm.Close()
        strm = Nothing

        strmwriter.Flush()
        strmwriter.Close()
        strmwriter = Nothing



    End Sub


    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Me.Close()
    End Sub
End Class
ho cercato di passare in un array tutti i caratteri ascii ma mi sa che sbaglio qualcosa.
Confido in voi per i suggerimenti da applicare a questo eseguibile e soprattutto scusate se c 'è qualcosa di sbagliato ma x me è un linguaggio nuovo
Ultima modifica di Chry1991 il lunedì 13 luglio 2015, 17:07, modificato 1 volta in totale.
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: [VB.net aiuto e dubbi]

Messaggio da SuperStep »

scusa ma non avevi provato a fare la stessa cosa in questo altro post con java http://forum.ubuntu-it.org/viewtopic.ph ... 5#p4766175

quali sono questi caratteri ascii?
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Chry1991
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 461
Iscrizione: giovedì 23 maggio 2013, 20:20
Desktop: Linux Mint 16.04
Distribuzione: Linux Mint 16.04 Xubuntu 16.04
Sesso: Maschile

Re: [VB.net aiuto e dubbi]

Messaggio da Chry1991 »

a me capitano la e la →.... sono una t rovesciata e la freccia... ma vorrei intercettarli tutti... In java ho scritto il programma e non ho problemi ma i miei colleghi usano VB e non sanno usare Java :) per quello l'ho riscritto


io vorrei inserire in un array tutti i caratteri ascii in modo tale che io controllo che nel file xml non ce ne sia neanche uno di quel carattere... perchè siccome sono file che a noi vengono forniti non ne sappiamo il contenuto
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: [VB.net aiuto e dubbi]

Messaggio da SuperStep »

secondo me come ti aveva suggerito zoff e' la strada migliore. E' meglio utilizzare un software gia' scritto che si occupa di queste cose, usa sed.
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Chry1991
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 461
Iscrizione: giovedì 23 maggio 2013, 20:20
Desktop: Linux Mint 16.04
Distribuzione: Linux Mint 16.04 Xubuntu 16.04
Sesso: Maschile

Re: [VB.net aiuto e dubbi]

Messaggio da Chry1991 »

si ma noi dobbiamo integrarlo nel nostro software che vendiamo e usare un tool non è fattibile
Chry1991
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 461
Iscrizione: giovedì 23 maggio 2013, 20:20
Desktop: Linux Mint 16.04
Distribuzione: Linux Mint 16.04 Xubuntu 16.04
Sesso: Maschile

Re: [VB.net aiuto e dubbi]

Messaggio da Chry1991 »

comunque il mio codice di sbagliato aveva l'exit for messo in un posto sbagliato.... pero questa istruzione

Codice: Seleziona tutto

strline = Mid(strline, 1, lineposition - 1) + strreplace + Mid(strline, lineposition + 1)
eliminerebbe il primo carattere ascii che trova sulla riga e la riscrive ma se i caratteri ascii fossero due eliminerebbe solo il primo...
come posso sistemarla??
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti