KinigosPsixon Δημοσ. 17 Σεπτεμβρίου 2011 Δημοσ. 17 Σεπτεμβρίου 2011 καλησπερα γνωρίζει κανείς πως μπορούμε να πάρουμε την ημερομηνία του συστήματος σε c++ σε AnsiString αν ειναι δυνατών και για να γίνω πιο συγκεκριμένος αυτο που θέλω να κάνω είναι να πέρνω την ημερομηνία απο τον υπολογιστή και να την συγκρίνω με μία ημερ απο μια βάση
Directx Δημοσ. 17 Σεπτεμβρίου 2011 Δημοσ. 17 Σεπτεμβρίου 2011 καλησπερα γνωρίζει κανείς πως μπορούμε να πάρουμε την ημερομηνία του συστήματος σε c++ σε AnsiString αν ειναι δυνατών και για να γίνω πιο συγκεκριμένος αυτο που θέλω να κάνω είναι να πέρνω την ημερομηνία απο τον υπολογιστή και να την συγκρίνω με μία ημερ απο μια βάση Πιθανότατα εργάζεσαι με τον C++ Builder, αν ναι, ρίξε μια ματιά εδώ.
KinigosPsixon Δημοσ. 17 Σεπτεμβρίου 2011 Μέλος Δημοσ. 17 Σεπτεμβρίου 2011 ναι με c++ builder εργάζομαι... σας ευχαριστω για τις απαντησης με την βοηθεια σας και λιγο ψαξιμο καταφερα να παρω τελικα την ημερομηνια του συστηματος οπως την ηθελα (σε κομματια) αλλα για να μην ανοιγω αλλο θεμα μηπως μπορει καποιος να μ πει πως μπορω να σπασω ενα AnsiString ? δλδ απο 12/09/2011 να παρω 3 substrings 12 , 09 και 2011
Timonkaipumpa Δημοσ. 17 Σεπτεμβρίου 2011 Δημοσ. 17 Σεπτεμβρίου 2011 Χρησιμοποίησε την awk Όπα, άκυρο... σόρρυ. Δεν σου κάνει.
KinigosPsixon Δημοσ. 17 Σεπτεμβρίου 2011 Μέλος Δημοσ. 17 Σεπτεμβρίου 2011 για linux scripts δεν ειναι η awk? http://www.cplusplus.com/reference/clibrary/cstring/strtok/ κατι τέτοιο θελω μαλλον αλλα δεν το πολυ καταλαβαίνω
Timonkaipumpa Δημοσ. 17 Σεπτεμβρίου 2011 Δημοσ. 17 Σεπτεμβρίου 2011 για linux scripts δεν ειναι η awk? http://www.cplusplus.com/reference/clibrary/cstring/strtok/ κατι τέτοιο θελω μαλλον αλλα δεν το πολυ καταλαβαίνω Είναι για scripts, ναι. Απλά με το που είδα strings και μέρη... μου ήρθε αυτόματα στο μυαλό... και απάντησα χωρίς να δω ότι αναφέρεσαι σε C++ Δες εδώ.
KinigosPsixon Δημοσ. 17 Σεπτεμβρίου 2011 Μέλος Δημοσ. 17 Σεπτεμβρίου 2011 η ημερομηνια που εχω ειναι σε ansistring και κατι δεν δουλευει σωστα αλλα θα το βρω ... καπου εκει ειμαι.... αυτο που θελω να κανω για να γίνω κατανοητός είναι να πέρνω μια ημερομηνια απο μία εγραφη σε μια βάση και να την συγκρίνω με την ημερομηνια του συστηματος μεχρι τωρα εχω καταφερη να περνω την μερα τον μηνα και τον χρονο του συστηματος σε 3 μεταβλλητες (ansistirng) και απο την βαση σε μια (12/11/2011 π.χ παλι σε ansistring τωρα θελω να το σπασω και αυτο σε 3 μεταβλητες ολα οκ.. τα καταφερα με λιγο "μπακαλιστικο" τροπο μεν αλλα μου αρκει για τωρα αν καποιος εχει κατι καλυτερο ας κανει ενα ποστ... > str1="17/9/2011"; istringstream iss(str1); string token; int i=2; while(getline(iss, token, '/')) { str[i]=token.c_str() ; i++; } Edit2->Text=str[2].c_str(); Edit3->Text=str[3].c_str(); Edit4->Text=str[4].c_str();
migf1 Δημοσ. 17 Σεπτεμβρίου 2011 Δημοσ. 17 Σεπτεμβρίου 2011 Αν δεις το link που σου έδωσα στην αρχή, έχει πολλές έτοιμες συναρτήσεις για να κάνεις ότι θέλεις. Π.χ. καλώντας... > time_t tnow = time( NULL ); /* διάβασμα ώρας από το σύστημα */ struct tm *tmnow = localtime( &tnow ); /* μετατροπή της σε δομή tm */ έχεις μέσα στη δομή tmnow τα πάντα ως ξεχωριστά πεδία... > struct tm { int tm_sec; // Seconds after minute (from 0). int tm_min; // Minutes after hour (from 0). int tm_hour; // Hours since midnight (from 0). int tm_mday; // Day of month (from 1). int tm_mon; // Month (from 0). int tm_year; // Years since 1900 (from 0). int tm_wday; // Day of week (from 0, Sunday). int tm_yday; // Day of year (from 0, January 1). int tm_isdst; // Positive if daylight saving time zone (DST) is used, zero if DST is not used, and negative if DST status is unknown. }; Εδώ μια σχετική συνάρτηση που είχα φτιάξει στο παρελθόν... > /* -------------------------------------------------------------------------------- * Διαβάζει την ώρα από το σύστημα, την μετατρέπει σε string με Ελληνικούς χαρακτήρες * το οποίο string το αποθηκεύει στο όρισμα s και το επιστρέφει (σε περίπτωση * σφάλματος επιστρέφει NULL). * -------------------------------------------------------------------------------- */ char *s_currenttime( char *s, const int nchars ) { char *daynames[7] = { "Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ" }; char *monthnames[12] = { "Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ" }; /* Παράδειγμα: "Παρ, 10 Ιουν 2011 | 12:00:45" (28+1 χαρακτήρες) */ int maxssize = 3 /* κείμενο ημέρας: Κυρ, Δευ, ..., Σαβ */ + 2 /* κόμμα & κενό διάστημα */ + 2 /* ημέρα (διψήφιο νούμερο) */ + 1 /* κενό διάστημα */ + 4 /* κείμενο μήνα: Ιαν, ..., Ιουν, ... */ + 1 /* κενό διάστημα */ + 4 /* έτος (τετραψήφιο νούμερο) */ + 3 /* κενό + παύλα + κενό */ + 2 /* ώρα (διψήφιο νούμερο) */ + 1 /* άνω-κάτω τελεία */ + 2 /* λεπτά (διψήφιο νούμερο) */ + 1 /* άνω-κάτω τελεία */ + 2 /* δευτερόλεπτα (διψήφιο νούμερο) */ + 1 /* ΜΗΔΕΝΙΚΟΣ ΧΑΡΑΚΤΗΡΑΣ ΣΤΟ ΤΕΛΟΣ */ ; time_t tnow = time( NULL ); /* διάβασμα ώρας από το σύστημα */ struct tm *tmnow = localtime( &tnow ); /* μετατροπή της σε δομή tm */ if ( !s || !tmnow || nchars < maxssize )/* ελεγχοι ασφαλείας */ return NULL; memset(s, '\0', maxssize * sizeof(char) ); sprintf( s, "%s, %02d %s %d | %02d:%02d:%02d", daynames[ tmnow->tm_wday ], tmnow->tm_mday, monthnames[ tmnow->tm_mon ], tmnow->tm_year+1900, tmnow->tm_hour, tmnow->tm_min, tmnow->tm_sec ); return s; } (όπου nchars το μέγιστο πλήθος χαρακτήρων του c-string s που περνάς στη συνάρτηση) Τα παραπάνω είναι με την στάνταρ βιβλιοθήκη time της C (time.h) άρα δουλεύουν και με C++. Eίναι όμως όπως καταλαβαίνεις... χειροκίνητη δουλειά, μιας και ήθελα δικό μου custom output format. Μπορείς όμως να την προσαρμόσεις πολύ εύκολα σε ότι format θέλεις. Σε αυτό εδώ το link μπορείς να διαβάσεις διάφορους άλλους τρόπους: http://www.codeproject.com/KB/datetime/datetimedisc.aspx
KinigosPsixon Δημοσ. 17 Σεπτεμβρίου 2011 Μέλος Δημοσ. 17 Σεπτεμβρίου 2011 για την ημερομηνια του συστηματος δουλεψα με το link που μου εδωσες. αυτο το ηθελα για να διασπασω μια ημερομηνια που θα περνω απο βαση δεδομενων σε ευχαριστω για την βοηθεια και τα χρησιμα links.
migf1 Δημοσ. 17 Σεπτεμβρίου 2011 Δημοσ. 17 Σεπτεμβρίου 2011 ... αυτο το ηθελα για να διασπασω μια ημερομηνια που θα περνω απο βαση δεδομενων Α, οκ, τότε με την strtok που σου είπε κι ο timon. Εδώ μπορείς να δεις 2 υλοποιήσεις για generic string tokenizer στη C++: http://oopweb.com/CPP/Documents/CPPHOWTO/Volume/C++Programming-HOWTO-7.html. Κι εδώ κάτι αντίστοιχο της 1ης υλοποίησης, αλλά για C, που επίσης είχα φτιάξει στο παρελθόν... > // *********************************************************** // break a string up to maxtokens tokens and store them in *tokens[] // (uses any chars found inside delimiters as separators between tokens) // returns the number of tokens, or 0 on failure // *********************************************************** int s_tokenize(char *s, char *tokens[], int maxtokens, char *delimiters) { register int i=0; if ( !s || !tokens || !delimiters || maxtokens < 0 ) // sanity checks return 0; // ... early exit tokens[0] = strtok(s, delimiters); if (tokens[0] == NULL) return 0; for (i=1; i < maxtokens && (tokens[i]=strtok(NULL, delimiters)) != NULL; i++) ; return i; } σε ευχαριστω για την βοηθεια και τα χρησιμα links. Τίποτα ρε συ, για αυτό υπάρχουν τα φόρουμ ΥΓ. Τα links και τους κώδικες τα δίνω σε περίπτωση που φανούν χρήσιμα και σε άλλα παιδιά.
KinigosPsixon Δημοσ. 17 Σεπτεμβρίου 2011 Μέλος Δημοσ. 17 Σεπτεμβρίου 2011 και μια τελευταία απορία... πως μπορω να διαβάσω μια μια τις εγραφες απο μια βαση? θελω δλδ σε μια μεταβλητη να αποθηκεύω μια εγγραφή να κάνω κάποιες ενέργειες και μετα να πηγαίνω στην επομενη εγγραφη και να αποθηκεύετε στη ίδια μεταβλητη.... κατι τέτοιο δλδ αλλα με loop καπου μαλλον Form4->ADOQuery1->SQL->Clear(); Form4->ADOQuery1->SQL->Text = "SELECT εγγραφη from πινακα"; Form4->ADOQuery1->ExecSQL(); Form4->ADOQuery1->Active=True; μεταβλητή=Form4->ADOQuery1->FieldValues["εγγραφη"] ; μετα να κανω αυτα που είπαμε πιο πάνω και μετα να επαναλαμβάνετε η διαδικασία. μαλλον ευκολο πρεπει να είναι αλλα τωρα εχω σκαλώσει
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.