Χρονομετρηση εφαρμογης

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

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
geo1st487
Δημοσιεύσεις: 82
Εγγραφή: 05 Φεβ 2009 21:52

Χρονομετρηση εφαρμογης

Δημοσίευση από geo1st487 » 06 Μαρ 2009 13:09

Πως μπορω σε VB6 να χρονομετρησω την διαρκεια της εφαρμογης; Δηλαδη ποσο χρονο εχει ανοικτη ο χρηστης την εφαρμογη. Δεν θελω να χρησιμοποιησω το timer control, αλλα ουτε και την datediff διοτι ο χρηστης μπορει να αλλαξει ημερομηνια και ωρα και να μπερδεψει την εφαρμογη. Μπορω να παρω ημερομηνια και ωρα απο timer server αλλα μπορει ο χρηστης να αποσυνδεθει απο το internet οποτε παλι θα εχω προβλημα. Μια λυση που βρηκα ειναι η API συναρτηση GetTickCount η οποια επιστρεφει τον αριθμο των χιλιοστοδευτερολεπτων που εχουν περασει απο την στιγμη που μπηκε ο χρηστης στα windows. Η συναρτηση επιστρεφει ενα Long ακεραιο αριθμο και το προβλημα ειναι οτι αν ο χρηστης εχει αφησει τον υπολογιστη πανω απο 24 ημερες χωρις να κανει τερματισμο ή επανεκκινηση, δεν θα μπορεσει η συναρτηση να επιστρεψει ενα τοσο μεγαλο νουμερο (χιλιοστα δευτερολεπτου για πανω απο 24 ημερες). Υπαρχει κατι αλλο που μπορω να χρησιμοποιησω για να μην εχω αυτο τον χρονικο περιορισμο;
Ευχαριστω

papas2
Δημοσιεύσεις: 59
Εγγραφή: 15 Μάιος 2004 18:16

Χρονομετρηση εφαρμογης

Δημοσίευση από papas2 » 06 Μαρ 2009 14:43

Δες αν βοηθαει:Φτιαξε μια νεα εφαρμογη και βαλε ενα timer1,ενα text1 και ενα text2.
Στο Frorm_load γραψε:Text2 = Timer.
Στο Timer1_Timer γραψε:Text1 = Int(Timer - Text2)
Δε φενεται να επειρεαζεται απο τιποτε.

geo1st487
Δημοσιεύσεις: 82
Εγγραφή: 05 Φεβ 2009 21:52

Χρονομετρηση εφαρμογης

Δημοσίευση από geo1st487 » 06 Μαρ 2009 15:06

H συναρτηση Timer επιστρεφει τα δευτερολεπτα που εχουν περασει απο τα μεσανυχτα. Αυτο σημαινει οτι στα μεσανυχτα μηδενιζεται και αρχιζει να μετραει απο την αρχη.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Χρονομετρηση εφαρμογης

Δημοσίευση από dva_dev » 06 Μαρ 2009 17:00

Ισως χρησιμοποιώντας το GetTickCount μπορείς κάθε 24 ώρες ή κάθε εβδομάδα ή κάθε 20 μέρες να αυξάνεις έναν μετρητή (που να λέει ότι τρέχει για Χ μέρες) και να ξαναμετράς το GetTickCount από την αρχή.
Φυσικά το αντίστοιχο μπορείς να κάνεις με οποιονδήποτε timer, ίσως βέβαια χρειαστεί το ενδιάμεσο διάστημα που θα παίρνεις τις μετρήσεις για να τις κρατήσεις να είναι μικρότερο των 24 ωρών.

geo1st487
Δημοσιεύσεις: 82
Εγγραφή: 05 Φεβ 2009 21:52

Χρονομετρηση εφαρμογης

Δημοσίευση από geo1st487 » 06 Μαρ 2009 17:06

dva_dev έγραψε:Ισως χρησιμοποιώντας το GetTickCount μπορείς κάθε 24 ώρες ή κάθε εβδομάδα ή κάθε 20 μέρες να αυξάνεις έναν μετρητή (που να λέει ότι τρέχει για Χ μέρες) και να ξαναμετράς το GetTickCount από την αρχή.
Φυσικά το αντίστοιχο μπορείς να κάνεις με οποιονδήποτε timer, ίσως βέβαια χρειαστεί το ενδιάμεσο διάστημα που θα παίρνεις τις μετρήσεις για να τις κρατήσεις να είναι μικρότερο των 24 ωρών.
Το σκεφτηκα αυτο που λες αλλα πρακτικα πως γινεται αν δεν χρησιμοποιησω Timer control;
Πως θα το προγραμματισω καθε Χ μερες να αυξανει ενα μετρητη;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Χρονομετρηση εφαρμογης

Δημοσίευση από dva_dev » 06 Μαρ 2009 22:53

Μπορείς να δοκιμάσεις με threads και events.
Σε ένα thread ξεκινάς την διαδικασία σου, και στο άλλο κρατάς χρόνο. Περιμένεις μερικές ώρες και αυξάνεις τους μετρητές σου (WaitForSingleObject) ή μέχρι να πάρεις event ότι τέλειωσε η διαδικασία σου (αναλόγως το αποτέλεσμα που θα επιστρέψει η wait).

Συνοπτικά:
1) Δημιουργείς event
2) Reset event
3) Κρατάς αρχικό χρόνο
4) Δημιουργείς thread (που τρέχει τη διαδικασία)
5) Wait Χ ώρες/λεπτά/... για το event να γίνει set
6) Αν έχεις timeout, κρατάς τη διαφορά του χρόνου, ξανακρατάς αρχικό χρόνο, αυξάνεις τους μετρητές σου και GOTO 5
7) Υπολογίζεις τη διαφορά του χρόνου, αυξάνεις τους μετρητές σου και τους εμφανίζεις.

Το thread που τρέχει τη διαδικασία
1) Τρέχει τη διαδικασία
2) Οταν ολοκληρωθεί, κάνει set to event

Μήπως να προτιμούσες να ξανασκευτείς τον timer;

geo1st487
Δημοσιεύσεις: 82
Εγγραφή: 05 Φεβ 2009 21:52

Χρονομετρηση εφαρμογης

Δημοσίευση από geo1st487 » 07 Μαρ 2009 14:26

dva_dev έγραψε:Μπορείς να δοκιμάσεις με threads και events.
Σε ένα thread ξεκινάς την διαδικασία σου, και στο άλλο κρατάς χρόνο. Περιμένεις μερικές ώρες και αυξάνεις τους μετρητές σου (WaitForSingleObject) ή μέχρι να πάρεις event ότι τέλειωσε η διαδικασία σου (αναλόγως το αποτέλεσμα που θα επιστρέψει η wait).

Συνοπτικά:
1) Δημιουργείς event
2) Reset event
3) Κρατάς αρχικό χρόνο
4) Δημιουργείς thread (που τρέχει τη διαδικασία)
5) Wait Χ ώρες/λεπτά/... για το event να γίνει set
6) Αν έχεις timeout, κρατάς τη διαφορά του χρόνου, ξανακρατάς αρχικό χρόνο, αυξάνεις τους μετρητές σου και GOTO 5
7) Υπολογίζεις τη διαφορά του χρόνου, αυξάνεις τους μετρητές σου και τους εμφανίζεις.

Το thread που τρέχει τη διαδικασία
1) Τρέχει τη διαδικασία
2) Οταν ολοκληρωθεί, κάνει set to event

Μήπως να προτιμούσες να ξανασκευτείς τον timer;
Πρακτικα πως γινεται;

Απάντηση

Επιστροφή στο “γλώσσες προγραμματισμού - γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης