none
No se si se puede hacer mejor este System.IO.Path.Combine(Application.StartupPath? RRS feed

  • Pregunta

  • Buenas tengo varias lineas en distintas sub del codigo como estas

    Archivo = obj.CreateTextFile("recetas/" & Nombre_cerveza & fecha & "/Mediciones.xml", True

    Dim path As String = "recetas/" & Nombre_cerveza & fecha & "/Mediciones.xml"

    Dim Mediciones_vacio As String = System.IO.File.ReadAllText("recetas/" & Nombre_cerveza & fecha & "/Mediciones.xml")

    tengo estas 2 lineas arriba del todo en Public Class Mediciones

    Private Archivo_Recetas_1 As String = System.IO.Path.Combine(Application.StartupPath, "Recetas/")
    Private Archivo_Recetas_2 As String = System.IO.Path.Combine(Application.StartupPath, "/Mediciones.xml")

    he metido "recetas/" en una y "/mediciones.xml" en otra

    la pregunta es se puede hacer en una sola line de codigo?

    Gracias


    lunes, 20 de abril de 2020 19:36

Respuestas

  • hola

    >>la pregunta es se puede hacer en una sola line de codigo?

    estas asignando dos variables diferentes, porque quieres una sola linea?

    Ademas no esta bueno que declares y asignes el valor a nivel de class, para eso existe el constructor, declara als variables

    pero la asignacion del valor la debes realizar en el constructor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Diablo_Rojo viernes, 24 de abril de 2020 19:03
    lunes, 20 de abril de 2020 19:54

Todas las respuestas

  • hola

    >>la pregunta es se puede hacer en una sola line de codigo?

    estas asignando dos variables diferentes, porque quieres una sola linea?

    Ademas no esta bueno que declares y asignes el valor a nivel de class, para eso existe el constructor, declara als variables

    pero la asignacion del valor la debes realizar en el constructor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Diablo_Rojo viernes, 24 de abril de 2020 19:03
    lunes, 20 de abril de 2020 19:54
  • Buenas gracias por responder Leandro

    la quiero poner en una sola linea por las 2 variables corresponde para hacer esta linea 

    "recetas/" & Nombre_cerveza & fecha & "/Mediciones.xml" 

    lo que pasa que como tiene estas 2 variables Nombre_cerveza y Fecha y estan en un sub donde no estan estas 2 lineas 

    Private Archivo_Recetas_1 As String = System.IO.Path.Combine(Application.StartupPath, "Recetas/")
    Private Archivo_Recetas_2 As String = System.IO.Path.Combine(Application.StartupPath, "/Mediciones.xml")

    Lo tengo puesto aqui 

    Public Class Mediciones
    
        'VARIABLES PRIVADAS MEDICIONES
        Private Archivo_Correccion As String = System.IO.Path.Combine(Application.StartupPath, "Configuracion\Correccion.xml")
        Private Archivo_Recetas_1 As String = System.IO.Path.Combine(Application.StartupPath, "Recetas/")
        Private Archivo_Recetas_2 As String = System.IO.Path.Combine(Application.StartupPath, "/Mediciones.xml")
        'VARIABLES PRIVADAS MEDICIONES
        Private Sub Mediciones_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'Me.Show()
            Receta_Nueva.Estimaciones()
    
            Recursivo(Me) 'BORRA TEXTBOX HACIENDO CLIK
    
            Me.DGVMediciones.ColumnHeadersDefaultCellStyle.Font = New Font("Microsoft Sans Serif", 8, System.Drawing.FontStyle.Bold)
    
            Call Lectura_Original()
            Call Carga_Mediciones_Cerveza()
            Call Señala_Ultima_fila_dgv()
            Call Config_Correccion()
    
        End Sub

    y tengo varios sub que contiene esas lineas que quiero modificar por eso las puse fuera y no en cada sub

    Sub Carga_Mediciones_Cerveza()
    
            Try
                Dim fecha As String
                Dim Nombre_cerveza As String
                fecha = Inicio.DataGridView1.CurrentRow.Cells(1).Value 'DateTimeInput1.Text
                Nombre_cerveza = Inicio.DataGridView1.CurrentRow.Cells(0).Value & "_"
                fecha = Replace(fecha, "/", "_")
                Dim existe As Boolean
                existe = System.IO.File.Exists(Archivo_Recetas_1 & Nombre_cerveza & fecha & Archivo_Recetas_2)
                If existe = False Then
    
                    Dim crear_archivo As String = MsgBox("Desea crear el Archivo de las mediciones Ahora", MsgBoxStyle.YesNoCancel, "Crear Archivo")
                    If crear_archivo = vbYes Then
                        Dim path As String = Archivo_Recetas_1 & Nombre_cerveza & fecha & Archivo_Recetas_2
    
                        ' Create or overwrite the file. 
                        Dim fs As FileStream = File.Create(path)
                        fs.Close()
                        Call Carga_Mediciones_Cerveza()
                    Else
                        'Call Lectura_Original()
                    End If
    
                Else
                    Dim Mediciones_vacio As String = System.IO.File.ReadAllText(Archivo_Recetas_1 & Nombre_cerveza & fecha & Archivo_Recetas_2)
    
                    If Mediciones_vacio.Length = 0 Then
                        Call Lectura_Original()
                    Else
    
                        Dim Documentoxml As XmlDocument = New XmlDocument()
                        Dim nodelist_Mediciones As XmlNodeList
                        Dim nodelist_Mediciones2 As XmlNodeList
    
                        '' ''Dim nodeToFind As XmlNode 'PARA BUSCAR EL NODO
                        Dim node2 As XmlNode
                        Dim nodeToFind2 As XmlNode 'PARA BUSCAR EL NODO
    
                        Documentoxml.Load(Archivo_Recetas_1 & Nombre_cerveza & fecha & Archivo_Recetas_2)
                        nodelist_Mediciones = Documentoxml.SelectNodes("dataroot/Cervezas")
                        nodelist_Mediciones2 = Documentoxml.SelectNodes("dataroot/Mediciones")
    
                        Dim root As XmlElement = Documentoxml.DocumentElement 'PARA BUSCAR EL NODO
                        nodeToFind2 = root.SelectSingleNode("//dataroot/Mediciones") 'PARA BUSCAR EL NODO
    
    
                        For Each node As Xml.XmlNode In nodelist_Mediciones
    
                            If node.ChildNodes.Item(0).Name = "Id" Then
                                node.RemoveChild(node.ChildNodes.Item(0)) 'Borra el node "Id"
                            End If
    
                            Dim Fecha2 = Format(CDate(node.ChildNodes(0).InnerText), "dd/MM/yyyy")
    
                            Dim DF = node.ChildNodes(1).InnerText
                            Dim DfBrix = node.ChildNodes(2).InnerText
                            Dim Temperatura = node.ChildNodes(3).InnerText
                            DGVMediciones.Rows.Add(Fecha2, DF, DfBrix, Temperatura)
                            Call Señala_Ultima_fila_dgv()
                        Next
    
                        If (Not (nodeToFind2) Is Nothing) Then 'PARA BUSCAR EL NODO
                            For Each node2 In nodelist_Mediciones2
    
                                TBDeOriginal.Text = node2.ChildNodes(0).InnerText
                                TBBrOriginal.Text = node2.ChildNodes(1).InnerText
                                TBbrixActual.Text = node2.ChildNodes(2).InnerText
                                TBGravedadActual.Text = node2.ChildNodes(3).InnerText
    
                            Next
                        Else
    
                            TBDeOriginal.Text = 0
                            TBBrOriginal.Text = 0
                            TBbrixActual.Text = 0
                            TBGravedadActual.Text = 0
                            LB_SG_Corregida.Text = 0
                            LB_SG_FInal.Text = 0
                            LBGO_Estimada.Text = 0
                        End If
                        Call Señala_Ultima_fila_dgv()
    
                    End If
                End If
    
            Catch ex As Exception
                MsgBox(ex.ToString())
    
            End Try
    
        End Sub

    lunes, 20 de abril de 2020 20:07