10 messaggi dal 21 gennaio 2013
Nessuno in grado di aiutarmi?
383 messaggi dal 23 aprile 2007
Non sono esperto di vb, comunque notavo questa riga:

Dim Traduzione As Traduci = New Traduci("home1", "EN")

che penso tu abbia già cambiato in

Dim Traduzione As String = New Traduci("home1", "EN").

La domanda è:
Traduci è un metodo, corretto? perchè usare il new? (non so in vb ma in c# serve ad istanziare una classe e non a chiamare il metodo)

Sergio
10 messaggi dal 21 gennaio 2013
Grazie per la risposta Sergio, avevo già cambiato in

Dim Traduzione As String = New Traduci("home1", "EN").


come mi hai suggerito, il problema deve essere nel codice del metodo, forse non l'ho scritto in modo corretto.

Se tolgo il "New" come mi hai suggerito, ho questo errore:

"Traduci" è un tipo e non può essere usato come espressione. Che mi ga appunto pensare di non aver scritto bene il metodo.

Purtroppo mi sto cimentando per la prima volta con la programmazione ad oggetti...sono abituato con le funzioni del C...

Riporto qui per intero il codice completo che ho scritto nel file "Traduci.vb":

Imports Microsoft.VisualBasic
Imports System.Xml
Imports System.Web.Configuration
Imports System.Object

Public Class Traduci

    Private _p1 As String
    Private _p2 As String

    Sub New(p1 As String, p2 As String)
        ' TODO: Complete member initialization 
        _p1 = p1
        _p2 = p2
    End Sub

    Public Function Traduci(Termine As String, Lingua As String) As String
        Dim Trad As String
        Dim XMLDoc As New XmlDocument
        Dim node As XmlNode
        Dim percorsoFile As String = HttpContext.Current.Server.MapPath("diz_" & Lingua & ".xml")
        XMLDoc.Load(percorsoFile)
        node = XMLDoc.SelectSingleNode("//translation [@name=""" & Termine & """]")
        Trad = node.Value
        Return Trad
    End Function

    Public Sub a()

    End Sub

End Class


Grazie per l'aiuto!
383 messaggi dal 23 aprile 2007
ho ricreato la tua situazione, ed ho visto che non ottengo errori facendo così:

Dim Traduzione As Traduci = New Traduci("home1", "EN") 'qui istanzi l'oggetto Traduci
Dim retString As String = Traduzione.Traduci("as", "as") ' qui chiami il metodo Traduci dell'oggetto appena istanziato

Non ne sono sicuro( il vb lo conosco solo di nome, non di fatto :D )
prova e vedi se si comporta come vorresti.
10 messaggi dal 21 gennaio 2013
Ciao e grazie dell'aiuto! Modificando come mi hai indicato si presenta un altro problema. Quando va ha costruire il percorso del file qui:

Dim percorsoFile As String = HttpContext.Current.Server.MapPath("diz_" & Lingua & ".xml")


Mi restituisce "diz_as". Giusto per provare ho modificato così:

Dim retString As String = Traduzione.Traduci("home1", "EN")


e vado avanti, solo che mi da un'altro errore dopo. Nella funzione traduci alla riga

Trad = node.Value

mi dice: Riferimento a un oggetto non impostato su un'istanza di oggetto.
383 messaggi dal 23 aprile 2007
considera che i due parametri del costruttore sono inutili, poichè quando chiami la funzione Traduci vai ad utilizzare quelli passati a quest'ultima chiamata. (ecco perchè nel "mio codice" veniva ricercato il file diz_as.xml).

Per l'ultimo errore probabilmente c'è un problema con la query, non so se potrò esserti utili a riguardo(se lavoro con Xpath o simili io vado ancora per tentativi al momento :D ), ma in ogni modo posta l'xml che vai a leggere, così sarà più semplice aiutarti su questo punto.
10 messaggi dal 21 gennaio 2013
Il contenuto del file xml è molto semplice poiché sto ancora cercando di capire come far funzionare il tutto. Per adesso è fatto così:

<?xml version="1.0" encoding="iso-8859-1"?>
<lingua>
  <lang name="english">
    <translation name="home01">Welcome in my site</translation>
  </lang>
</lingua>


che si chiama diz_EN.

Grazie mille per l'aiuto!

P.S. quindi la definizione del costruttore è inutile?
383 messaggi dal 23 aprile 2007
prova a dare il path completo nell'xml

node = XMLDoc.SelectSingleNode("lingua/lang/translation [@name=""" & Termine & """]")
o
node = XMLDoc.SelectSingleNode("//lingua/lang/translation [@name=""" & Termine & """]")

In ogni caso dai un'occhiata qui:
http://msdn.microsoft.com/en-us/library/fb63z0tw.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.