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

 

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

Πρόβλημα με string σε C# και VS2008

Îåêßíçóå áðü ôï ìÝëïò miket969. Τελευταία δημοσίευση από το μέλος miket969 στις 17-06-2009, 13:07. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  17-06-2009, 11:57 51751

    Πρόβλημα με string σε C# και VS2008

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

    1
    2
    3
    4
    5
    6
     
    string item = "28:1 (TPL)"
    string[] s = item.Split(':');
    string dec = "";
    dec = s[1];
    //...
    double d = Convert.ToDouble(dec);


    To περίεργο της υπόθεσης είναι ότι στο dec δεν ανατίθεται καμία τιμή και φυσικά το Convert χτυπάει. Με breakpoint στη γραμμή 4 βλέπω ότι το Array s έχει γίνει populated σωστά αλλά το dec δεν παίρνει καμία τιμή. Ακόμα πιο παράξενο μου φαίνεται το γεγονός ότι όταν το item έχει μια τιμή "25:13 (TPL)" (δηλαδή μια τιμή με 2 ψηφία δεξιά του ':') ή οποιοδήποτε συνδυασμό ψηφίων χωρίς το "(TPL)" όλα δουλεύουν καλά. Το έχω δοκιμάσει και με Substring αλλά πάλι είχα το ίδιο πρόβλημα. Μάλλον κάτι έχει να κάνει με το string που εισάγεται. Αλλά τι;



  •  17-06-2009, 12:04 51753 σε απάντηση της 51751

    Απ: Πρόβλημα με string σε C# και VS2008

    Μήπως δεν χτυπάει επειδή είναι άδειο το dec αλλά επειδή έχει χαρακτήρες μέσα; Αφού κάνεις split στο ":" και αναθέτεις το δεύτερο item από το array (dec=s[1]) θα πάρεις το κομμάτι "1 (TPL)" οπότε στο convert θα σκάσει.


    Vir prudens non contra ventum mingit
  •  17-06-2009, 12:13 51754 σε απάντηση της 51753

    Απ: Πρόβλημα με string σε C# και VS2008

    Συγνώμη, ξέχασα να αναφέρω ότι μετά ακριβώς από την ανάθεση στο dec κάνω έλεγχο για dec.EndsWith("(TPL)") και το αφαιρώ. και πάλι δουλεύει κανονικά με όλα τα strings εκτός από την περίπτωση με ένα ψηφίο δεξιά του ':'. Αλλά το θέμα είναι ότι ότι ούτε στην EndsWith το dec περιέχει κάτι. To έχω εξακριβώσει με breakpoints, MessageBoxes κλπ κλπ
  •  17-06-2009, 12:22 51755 σε απάντηση της 51754

    Απ: Πρόβλημα με string σε C# και VS2008

    Καλύτερα να γράψεις επακριβώς τον κώδικα που χρησιμοποιείς καθώς επίσης και να μας πεις το exception που εμφανίζεται. Μην κουβεντιάζουμε στον αέρα...


    Vir prudens non contra ventum mingit
  •  17-06-2009, 12:34 51758 σε απάντηση της 51755

    Απ: Πρόβλημα με string σε C# και VS2008

    string[] s = item.Split(':');
    string dec = "";
    dec = s[1];
    if (dec.EndsWith("(TPL)"))
    {
        dec = dec.Substring(0, dec.IndexOf(' ') - 1);
    }
    double ddec = Convert.ToDouble(dec);

    Είναι μέσα σε ένα foreach loop για τα items ενός listbox και π.χ. για item = "23:45", item = "12:2", item = "21:45 (TPL)" δουλεύει κανονικά, κολλάει στην περίπτωση όπου item = "33:1 (TPL)"
    Αν χρειάζεσαι τπτ άλλο μου λες... και thnx για τις απαντησεις σου μέχρι τώρα
  •  17-06-2009, 12:55 51765 σε απάντηση της 51758

    Απ: Πρόβλημα με string σε C# και VS2008

    Δεν έχω VS μπροστά μου αλλά νομίζω δεν χρειάζεται το -1 στο Substring(0, dec.IndexOf(' ') - 1)


    Vir prudens non contra ventum mingit
  •  17-06-2009, 13:07 51769 σε απάντηση της 51765

    Απ: Πρόβλημα με string σε C# και VS2008

    Πράγματι αυτό δουλεύει, σ'ευχαριστώ...
    Αλλά όταν χτυπούσε και ο debugger και με πηγαίνει στην Convert, γιατί όταν τσεκάρω τις τιμές των μεταβλητών το dec είναι κενό string; (από τη στιγμή της ανάθεσης) . Με αποπροσανατόλισε αυτό. Είναι λογικό;
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems