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

 

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

String override

Îåêßíçóå áðü ôï ìÝëïò AlKiS. Τελευταία δημοσίευση από το μέλος AlKiS στις 08-01-2010, 01:16. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  23-12-2009, 23:18 56059

    String override

    Γεια σας,

    έχω ένα πρόβλημα.. έχω ενα textbox (με όνομα txtExistingMaps) στην κύρια φόρμα (frmMain)

    και γράφω στον κωδικό του ενός button:

    [code]txtExistingMaps.Text = (System.IO.Directory.GetFiles(txtSettings.Lines(3).Substring(10) + "Maps\Download\").ToString)[/code]

    (to "txtSettings.Lines(3).Substring(10)" βγάζει "C:\Games\Warcraft III\")

    και μου βγάζει το εξής: "system.string[]"


    το έχω δοκιμάσει επίσης σαν: 

    [code]txtExistingMaps.lines = System.IO.Directory.GetFiles(txtSettings.Lines(3).Substring(10) + "Maps\Download\")[/code]

    και μου βγάζει αυτά που θέλω, δηλαδή:

    [code]C:\Games\Warcraft III\Maps\Download\CLASTLE TD SKIBI.w3x
    C:\Games\Warcraft III\Maps\Download\Custom Hero Survival 7.0(p).w3x
    C:\Games\Warcraft III\Maps\Download\DotA Allstars v6.64 AI 0.213.w3x
    C:\Games\Warcraft III\Maps\Download\DotA Allstars v6.64.w3x
    C:\Games\Warcraft III\Maps\Download\Footmen vs Grunts htid v1.9.w3x
    C:\Games\Warcraft III\Maps\Download\Green TD WipeOut 6.3c.w3x
    C:\Games\Warcraft III\Maps\Download\X Hero Siege v3.32.w3x[/code]

    όμως όλος παραδόξως το "txtExistingMaps.lines.rank" είναι 1 ! ! ! !

    με το αποτέλεσμα που βγάζει θα έπρεπε να είναι 7 ! ! !

    Τι συμβαίνει? Νομίζω οτι αν καταφέρω να κάνω το πρώτο (δλδ "txtExistingMaps.Text=..") να δουλέψει θα βγάζει το σωστό rank. αλλά το θέμα είναι πως να γράψω τον κωδικό για το Public Overrides Function ToString() As String??????


  •  05-01-2010, 16:05 56229 σε απάντηση της 56059

    Απ: String override

    Μάλλον πρέπει να ξεκαθαρίσεις καταρχήν  τί κάνει ο κώδικας που έγραψες και μετά πως δουλεύουν οι πίνακες, τί είναι το Rank, Length κλπ.
    Η πρώτη γραμμή σωστά σου επιστρέφει system.string[] γιατί κάλεσες τη μέθοδο ToString() επάνω σε ένα string array. Η αναπαράσταση οποιουδήποτε τύπου δεν κάνει override την μέθοδο ToString() είναι το όνομα του τύπου.
    Όσον αφορά το Rank, αυτό σου επιστρέφει τον αριθμό των διαστάσεων του πίνακα. Σε ένα μονοδιάστατο πίνακα αυτό είναι 1. Αν θέλεις τον αριθμό των στοιχείων θα πρέπει να καλέσεις την Length.

    Αν γράψεις πιο καθαρά τον κώδικα σου θα δεις τί συμβαίνει. Η πρώτη σου προσπάθεια είναι :

    Dim root As String=txtSettings.Lines(3).Substring(10)
    Dim files as String() =System.IO.Directory.GetFiles(root + "Maps\Download")
    txtExistingMaps.Text = files.ToString()

    Η δεύτερη προσπάθεια θα επιστρέψει ένα πίνακα με τα ονόματα των αρχείων καθώς κάνει το εξής

    Dim root As String=txtSettings.Lines(3).Substring(10)
    Dim files as String() =System.IO.Directory.GetFiles(root + "Maps\Download")
    txtExistingMaps.Lines =files

    Αν αυτό που θέλεις είναι όντως να γεμίσεις ένα multi-line textbox με τα path των αρχείων που βρίσκονται στο Download folder ο παραπάνω κώδικας θα δουλέψει.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-01-2010, 12:23 56237 σε απάντηση της 56229

    Απ: String override

    Ναι ρε Alkis. Προσπάθησε να γράψεις λίγο πιο καθαρά τον κώδικα και όλα φαίνονται πιο εύκολα. Το ότι κατάφερες να γράψεις αυτό που θέλεις χρησιμοποιώντας μια γραμμή κώδικα δεν είναι κατόρθωμα. Μόνο μπέρδεμα είναι.


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  08-01-2010, 01:16 56276 σε απάντηση της 56229

    Απ: String override

    Παναγιώτης Καναβός:

    Μάλλον πρέπει να ξεκαθαρίσεις καταρχήν  τί κάνει ο κώδικας που έγραψες και μετά πως δουλεύουν οι πίνακες, τί είναι το Rank, Length κλπ.
    Η πρώτη γραμμή σωστά σου επιστρέφει system.string[] γιατί κάλεσες τη μέθοδο ToString() επάνω σε ένα string array. Η αναπαράσταση οποιουδήποτε τύπου δεν κάνει override την μέθοδο ToString() είναι το όνομα του τύπου.
    Όσον αφορά το Rank, αυτό σου επιστρέφει τον αριθμό των διαστάσεων του πίνακα. Σε ένα μονοδιάστατο πίνακα αυτό είναι 1. Αν θέλεις τον αριθμό των στοιχείων θα πρέπει να καλέσεις την Length.

    Αν γράψεις πιο καθαρά τον κώδικα σου θα δεις τί συμβαίνει. Η πρώτη σου προσπάθεια είναι :

    Dim root As String=txtSettings.Lines(3).Substring(10)
    Dim files as String() =System.IO.Directory.GetFiles(root + "Maps\Download")
    txtExistingMaps.Text = files.ToString()

    Η δεύτερη προσπάθεια θα επιστρέψει ένα πίνακα με τα ονόματα των αρχείων καθώς κάνει το εξής

    Dim root As String=txtSettings.Lines(3).Substring(10)
    Dim files as String() =System.IO.Directory.GetFiles(root + "Maps\Download")
    txtExistingMaps.Lines =files

    Αν αυτό που θέλεις είναι όντως να γεμίσεις ένα multi-line textbox με τα path των αρχείων που βρίσκονται στο Download folder ο παραπάνω κώδικας θα δουλέψει

    Έχεις δίκιο, το όλο θέμα έγινε γιατί μπέρδεψα το length με το rank!! με το που το άλλαξα δουλεύει τέλεια

    τώρα όταν ξαναβρώ χρόνο να ασχοληθώ με προγραμματισμό θα το γράψω πιο αναλυτικά όπως μου το έγραψες εσύ.

    Δεν ξέρω πως το μπέρδεψα αλλά στο μυαλό μου ήταν βέβαιο οτι το legth δεν έκανε αυτή τη δουλειά. Και πάλι σε ευχαριστώ.

    Dimitris Papadimitriou:
    Ναι ρε Alkis. Προσπάθησε να γράψεις λίγο πιο καθαρά τον κώδικα και όλα φαίνονται πιο εύκολα. Το ότι κατάφερες να γράψεις αυτό που θέλεις χρησιμοποιώντας μια γραμμή κώδικα δεν είναι κατόρθωμα. Μόνο μπέρδεμα είναι.

    Δεν είχα σκοπό να κάνω κάποιο κατόρθωμα, απλώς δεν ασχολούμαι πολύ με προγραμματισμό, αν και μου αρέσει πολύ, γιατί δεν έχω καθόλου ελεύθερο χρόνο.

    Συγνώμη αν σε νευρίασε ο άθλιος κωδικός μου αλλά είναι προφανές οτι δεν έχω τις γνώσις σου, και δυστυχώς δεν έχω ουτε χρόνο να αποκτίσω σοβαρές γνώσις. ασχολούμαι επειδή μου αρέσει και μόνο.

    όπως είπα κ πριν, συγνώμη.



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