Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

C#.net2010 Πρόβλημα με "using"

Îåêßíçóå áðü ôï ìÝëïò AlKiS. Τελευταία δημοσίευση από το μέλος AlKiS στις 30-11-2011, 15:47. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  29-11-2011, 20:32 68422

    C#.net2010 Πρόβλημα με "using"

    Καλησπέρα,

    - Προτού πω οτιδήποτε άλλο, να τονίσω ότι έχω δουλέψει με Visual Basic, αλλά πρώτη φορά στη ζωή μου βλέπω C# -

    Θέλω να δημιουργήσω ένα GUI για ένα "πρόγραμμα" γραμμένο σε R, μέσω του Visual Studio 2010. Βρήκα αυτό: http://www.codeproject.com/KB/cs/RtoCSharp.aspx

    Το Θέμα είναι ότι κάνω ακριβώς αυτό που λέει, και μου βγάζει πρόβλημα απο τα πρώτο κιόλας βήματα.. Είναι σημαντικό για την εργασία μου στη σχολή γιατί η R έχει όλες τις μεθόδους στατιστικής που χρειάζομαι - απλώς δεν δημιουργεί GUI. Για την ακρίβεια δεν δημιουργεί ούτε καν ένα .exe ώστε να πεις θα κάνεις ένα GUI που θα καλεί το exe με arguments.

    Ο τρόπος που γράφει η σελίδα πρέπει να δουλεύει κάπως, αλλά δεν ξέρω πως να ξεπεράσω το πρόβλημα.


    Τι έκανα:

    1) Έβαλα τα References που θέλει, και τα 3

    2) Έβαλα τα Using που λέει,

    3) Πάτησα αντιγραφή/επικόλληση μια φορά μέσα στο "public form1()" και μια φορά στο Form1_Load (Δεν έχω ιδέα γιατί έχει 1, στην basic είχε μόνο 1), τον εξής κώδικα:

    "object o1;
    int n=20;
    StatConnector sc1 = new StatConnectorSRVLib.StatConnectorClass();
    Sc1.Init(“R”);
    Sc1.SetSymbol(“n1”,n);
    Sc1.Evaluate(“x1<-rnorm(n1)”);
    O1=sc1.GetSymbol(“x1”);
    Xrnd=(double) o1;"

    Α) Μου βγάζει λάθος: Type or namespace Name 'StatConnectorSRVLib' could not be found (are you missing a using directive or an assembly refference?)

    Ε λέω, αφού έβαλα το reference, έβαλα και το using, θα είναι ηλίθιο αυτό και θα θέλει να τα κάνω όλα κεφαλαία όπως στο Using (Τότε στο website γτ τάχει με μικρά?)

    Β) Το αλλάζω σε κεφαλαία να είναι ίδιο με το using, και το πρόβλημα αλλάζει στο εξής:

    "STATCONNECTORSRVLib.StatConnectorClass()

    Error:

        Interop typ 'STATCONECTORSRVLib.StatConnectorClass' cannot be embedded. Use the applicable interface instead."


    Τι πρέπει να κάνω δηλαδή?

    Μήπως είναι εντελώς κακογραμμένο το Tutorial σε εκείνη τι σελίδα? ή μήπως είναι φάρσα? 

    Δεν ξέρω, πάντως εμένα σωστό μου φαινόταν ρε γαμώτο..


  •  29-11-2011, 21:02 68425 σε απάντηση της 68422

    Απ: C#.net2010 Πρόβλημα με "using"

    Κοίτα πρώτα μήπως μπορείς να δουλέψεις με πραγματική R. Για παράδειγμα, μήπως σου κάνει το R.NET?  Η χρήση COM είναι πάντα ένα "θεματάκι" στο .NET και μπορεί να βρεις φίδια αν δοκιμάσεις να τρέξεις την εφαρμογή σε 64bit λειτουργικό.

    Όσο για το αρχικό άρθρο, ε, ναι, αν κρίνεις από τον αριθμό των comments, (όπως το Please Fix Article and Links) θα έλεγα ότι είναι αρκετά κακογραμμένο και εγκατελλειμένο από τον αρθρογράφο. Ειδικά το δικό σου πρόβλημα περιγράφεται στο "Use the Interface Instead?" και η λύση είναι να πας στο reference και να αλλάξεις το Embed Interop Types property σε False:

     

    Steps to fix problem:
      
     1. Right click on the STATCONNECTORSRVLib reference in Visual Studio
     2. Click on Properties
     3. Change the "Embed Interop Types" to False.
     4. Rebuild project.
     
     
    Πέρα από αυτό θα πρέπει να φροντίσεις να κατεβάσεις συμβατές εκδόσεις των R και StatConn. Επιπλέον, θα πρέπει να προσέξεις να κάνεις compile σε 32 bit αν έχεις 64bit Windows
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  29-11-2011, 21:08 68426 σε απάντηση της 68425

    Απ: C#.net2010 Πρόβλημα με "using"

    Υ.Γ. Αν δεν περιορίζεσαι σε .NET, υπάρχει  native έκδοση της R για JVM  (Renjin) καθώς και ένα interface για Python (RPy)
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  29-11-2011, 21:28 68427 σε απάντηση της 68426

    Απ: C#.net2010 Πρόβλημα με "using"

    Η αλήθεια είναι ότι δεν διάβασα κανένα comment. Πήρα το άρθρο και είμαι ακόμα στην αρχή..

    Το "πρόγραμμα" της R δεν είναι δικό μου, είναι του καθηγητή μου, και δεν μπορώ να επέμβω σε αυτό. Εκτός αυτού, όταν πάει να το χρησιμοποιήσει ένας γιατρός σε ένα νοσοκομείο για παράδειγμα, για να βγάλει μέσω στατιστικής αν κάποιος έχει ή μπορεί να παρουσιάσει καρκίνο και πότε, δεν θα ξέρει να χειρίζεται την R.

    Άρα το πρόγραμμα δεν θα μπορεί να προωθηθεί, Άρα το να δουλέψω με την πραγματική R δεν είναι λύση δυστυχώς (btw, οι εξισώσεις κτλ στην R είναι τελειωμένα και δουλεύουν σωστά. ότι ήταν να γίνει στην R δλδ, έγινε ήδη)

    Η R.Net αν και ακούγεται καλή, βλέπω ότι τρέχει πάλι σε κάτι σαν command prompt. Δυστυχώς χρειάζομαι κανονικό Graphic User Interface.

    64bit Windows 7 έχω!! τι εννοείς με το "Η χρήση COM είναι πάντα ένα "θεματάκι" στο .NET και μπορεί να βρεις φίδια αν δοκιμάσεις να τρέξεις την εφαρμογή σε 64bit λειτουργικό." ?? Δεν είχα ιδέα ότι υπάρχουν τέτοια προβλήματα. Δώσε μου ένα παράδειγμα να καταλάβω τι ακριβώς εννοείς.

    Ευχαριστώ που είδες τα comments και βρήκες τη λύση! Προσωπικά δεν ήξερα καν ότι υπήρχαν comments, δεν είχα πάει τόσο κάτω... (τα παίρνω με τη σειρά)

    δυστυχώς περιορίζομαι σε .Net, και για την ακρίβεια σε Visual Basic, αν και προσπαθώ τώρα να καταλάβω τα αντίστοιχα σε C#.


    Τέλος, ευχαριστώ πολύ για τις απαντήσεις σου. Ελπίζω ότι θα συνεχίσουμε έτσι απο δω και πέρα (γιατί παλιά ούτε λίγο ούτε πολύ με πρόσβαλες). Και να ξέρεις ότι αν καταφέρουμε να βρούμε τρόπω να το φτιάξω αυτό το GUI, θα είμαι για πάντα ευγνώμον σε όλους όσους βοήθησαν. Μπορεί σαν πρόγραμμα να μην είναι τίποτα, αλλά θα με βοηθήσει ακόμα και με μεταπτυχιακά, και ακόμα πιο μετά επίσης


  •  30-11-2011, 00:43 68435 σε απάντηση της 68427

    Απ: C#.net2010 Πρόβλημα με "using"

    Μετά απο αρκετό ψάξιμο βρήκα ότι πολλά άτομα έχουν προβλήματα με το (D)COM Server, και μιλάμε σε πάρα πολλά φόρουμς.

    Το πρόβλημα μου βγαίνει στο .Init() το οποίο Init υπάγεται στο (D)COM Server, και το οποίο πρόβλημα λέει: "installation problem: unable to load connector". Το documentation του ίδιου του (D)COM Server λέει τα εξής για το installation problem: unable to load connector


    "R proxy library could not be loaded. The cause of this common failure can be: 

    the environment variable %R_HOME% points to a directory where R is not installed and
    the registry key corresponding to your R installation does not point to the installation folder of R and
    rproxy.dll and R.dll cannot be found in the %PATH%"

    Έβαλα το   %R_HOME% να δείχνει στον φάκελο της R, και το δοκίμασα κιόλας πατώντας winkey+r και μετά   %R_HOME%, και μου άνοιξε κανονικά ο φάκελος.

    Το κλειδί του μητρόει δείχνει επίσης στον φάκελο που είναι εγκατεστημένη η R.

    και τέλος, το    %PATH% βγαίνει στον φάκελο που είναι τα 2 αρχεία που ζητάει, το έλεγξα επίσης.


    Λοιπών πιο είναι το πρόβλημα τότε?!? Μπορεί κανείς να βοηθήσει?  


  •  30-11-2011, 13:55 68444 σε απάντηση της 68435

    Απ: C#.net2010 Πρόβλημα με "using"

    “Κατάφερα” να μεταφράσω τον κώδικα σε VB.NET, το έκανα έτσι:
    (το έχω σε εισαγωγικά γιατί καταλαβαίνω ότι για τους υπόλοιπους είναι παιχνιδάκι. Απλώς για κάποιον που δεν έχει ξαναδει C#.. δεν είναι τόσο εύκολο.)

    Imports STATCONNECTORSRVLib
    Private Sub btnTest1_Click(sender As System.Object, e As System.EventArgs) Handles btnTest1.Click

    Try
    Dim Object2 As Object
    Dim n As Integer = 20

    StatConnector2.Init("R")
    StatConnector2.SetSymbol("n2", n) StatConnector2.Evaluate("x2<-rnorm(n2)")
    Object2 = StatConnector2.GetSymbol("x2")
                Dim Xrnd As Double = CDbl(Object2)
                MsgBox(Xrnd)         
                MsgBox(Object2)
                StatConnector2.Close()
     
            Catch ex As Exception
                My.Computer.Clipboard.SetText(StatConnector2.GetErrorText())
                MsgBox("Stat Connector: " & StatConnector2.GetErrorText() & vbCrLf & vbCrLf & ex.ToString, MsgBoxStyle.Critical)
            End Try
        End Sub
     
    End Class
     
    Το κατάφερα να “δουλέψει” ΜΟΛΙΣ τώρα!
    Για να δουλέψει πρέπει να διαγραφτούν ΟΛΕΣ οι εγκαταστάσεις της R και του R (D)COM Server, και να γραφτεί το RAndFriends: http://rcom.univie.ac.at/download/RAndFriends.distro/RAndFriendsSetup2140V3.2-1-1.exe
    Η εγκατάσταση πρέπει να γίνει στο default path C:\Program Files αλλιώς ενδέχεται να μην δουλέψει πάλι. (πολύ προβληματικά είναι ρε γαμώτο..)
    Δυστυχώς όποιος ψάξει στο google για το R (D)COM Server θα παραπεμφθεί σε μια παλιά version αυτού, γιαυτό και δεν μου δούλευε πριν. με το RAndFriends όμως είναι εντάξει.
    Πέρασα λοιπών το σημείο που κολλούσε στο init(), αλλά το πρόβλημά μου τώρα είναι ότι δεν μπορώ να πάρω πίσω τιμές
    Το MsgBox(Object2) και το MsgBox(Xrnd) βγάζουν το ίδιο πρόβλημα:
    System.InvalidCastException: Conversion from type 'Double()' to type 'Double' is not valid.
    Το θέμα είναι να μπορώ να μετατρέψω τις τιμές σε double και string ώστε να μπορώ να κάνω πράξεις με αυτές (double) και να μπορώ να τις σώζω σε αρχεία (string).
    Πιστεύω ότι το πρόβλημα μου σχεδόν έχει λυθεί. Αφού κατάφερα να κάνω την επικοινωνία με την R, λογικά θα μπορέσουμε να περάσουμε το εμπόδιο της μετατροπής, σωστά?

  •  30-11-2011, 15:47 68448 σε απάντηση της 68444

    Απ: C#.net2010 Πρόβλημα με "using"

    Έλυσα το πρόβλημα, όλα ΟΚ :)

    Το πιο πιθανό είναι οτι αργότερα θα χρειαστώ βοήθεια με το πως να καλώ γραφικές παραστάσεις απο την R.. αλλά θα ανοίξω καινούργιο thread για αυτό (αφού είναι και διαφορετικό πρόβλημα).


Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems