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

 

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

FLOW για το .ΝΕΤ [SOLVED]

Îåêßíçóå áðü ôï ìÝëïò ABS. Τελευταία δημοσίευση από το μέλος ABS στις 21-02-2011, 18:41. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-02-2011, 16:11 63491

    Geeked [8-|] FLOW για το .ΝΕΤ [SOLVED]

    Thanx!
  •  21-02-2011, 16:50 63495 σε απάντηση της 63491

    Απ: MEGA BUG / FLOW για το .ΝΕΤ 2.0, 3.0, 3.5 και 4.0!!!

    Είσαι σίγουρος? Μήπως διαβάζεις λάθος αρχείο? Μήπως το αρχείο σου περιέχει λιγότερα | απ' ότι νομίζεις? Αν υπήρχε τόσο χοντρό πρόβλημα θα είχε εντοπιστεί 12 χρόνια πριν, άσε που θα επηρέαζε όλους τους προγραμματιστές.

    Και μόνο το ότι περίμενες η Split να χρησιμοποιήσει την μνήμη του StringArray μου λέει ότι δεν έχεις καταλάβει πως δουλεύουν τα assignments. Το περιεχόμενο του StringArray έχει αντικατασταθεί από το αποτέλεσμα της string.Split, δεν έχει γεμίσει από αυτό. Αν είχες 15 | στο αρχείο σου, θα έβλεπες ένα array με 15 elements.

    Το ότι δεν μπορώ να επαναλάβω τα αποτελέσματα σου φυσικά είναι αυτονόητο. Το παρακάτω τρέχει χωρίς κανένα πρόβλημα. Πρόσεξε και το Object.ReferenceEquals στο τέλος, που μου λέει ότι η String.Split επιστρέφει πάντα διαφορετικό object, δεν ξαναχρησιμοποιεί τον ίδιο πίνακα:

    static void Main(string[] args)
            {
                using (var reader = new StreamReader("TextFile1.txt"))
                {
                    string theString=null;
                    string[] stringArray=new string[5];                
                    Debug.Assert(stringArray.Length==5);
    
                    Array.Clear(stringArray, 0, 4);
                    Debug.Assert(stringArray.Length == 5);
    
                    string pipes = reader.ReadLine();
                    Debug.Assert(pipes.Length == 4);
                    Debug.Assert(pipes == "||||");
    
                    string[] splits = pipes.Split('|');
                    Debug.Assert(splits.Length == 5);
                    stringArray=pipes.Split('|');
                    Debug.Assert(stringArray.Length == 5);
    
                    Debug.Assert(!Object.ReferenceEquals(splits, stringArray));
                }
            }

    Άσε που δεν υπήρχε και κανένας λόγος να γράψεις τόσο κώδικα. Θα μπορούσες να γράψεις απλά:

    using (var reader = new StreamReader("TextFile1.txt"))
    {
        string pipes = reader.ReadLine();
        string[] splits = pipes.Split('|');
        Debug.Assert(splits.Length == 5);
    }

    Επειδή έχεις βάλει και ονόματα εταιρειών μήπως θα προτιμούσες να αλλάξεις το post, ή ακόμα και να το διαγράψουμε?

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  21-02-2011, 16:55 63496 σε απάντηση της 63495

    Απ: MEGA BUG / FLOW για το .ΝΕΤ 2.0, 3.0, 3.5 και 4.0!!!

    Please clarify and delete it
  •  21-02-2011, 18:24 63508 σε απάντηση της 63491

    Απ: MEGA BUG / FLOW για το .ΝΕΤ 2.0, 3.0, 3.5 και 4.0!!!

    ABS:


    // Το αρχείο έχει μέσα μόνο 4 ορίστματα χωρισμένα με "|"


    Σωστά "έφαγες" exception. Αν το αρχείο έχει 4 ορίσματα χωρισμένα με "|", αυτό σημαίνει ότι το πλήθος των "|" χαρακτήρων είναι 3. Αν το πλήθος των delimiters (π.χ. "|") είναι n, το πλήθος των τιμών είναι n+1. Μόνος σου, λοιπόν, λες ότι οι τιμές είναι τέσσερις και όχι πέντε.

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  21-02-2011, 18:27 63509 σε απάντηση της 63491

    Απ: FLOW για το .ΝΕΤ [SOLVED]

    Χμ... Γιατί έσβησες το post; Τώρα υπάρχουν απαντήσεις χωρίς την αρχική ερώτηση!!

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  21-02-2011, 18:41 63511 σε απάντηση της 63508

    Απ: MEGA BUG / FLOW για το .ΝΕΤ 2.0, 3.0, 3.5 και 4.0!!!

    Δε μετρούσα τον αριθμό των delimiters αλλά ανάμεσά τους τα ορίσματα.

    Ο κ. Παναγιώτης κατάλαβε ακριβώς και απάντησε ορθός.

    Αυτό που λες δεν έχει να κάνει με το τί ανέφερα.
    Ευχαριστώ πάντως.

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