שאלה על זמן ב c++

MaorCS

New member
שאלה על זמן ב c++

אחרי חיפוש מעמיק בגוגל מצאתי המון פונקציה שמחזירות את השעה הנוכחית, רק שכולם מחזירות את השעה, דקות, ושניות. מישהו במקרה יודע איך אפשר לשמור את המאיות? תודה.
 

the new L

New member
אין דרך

אין בשפה עצמה פונקציה כזאת. במערכות הפעלה שונות יש system calls שמאפשרות לעשות זאת. אם תגיד לנו באיזו מערכת הפעלה מדובר נוכל לעזור לך.
 

MaorCS

New member
קודם כל תודה על התגובה המהירה..

ואני עובד על xp ובמכללה שלי יש וינדוס 2000 אז יש אפשרות כזאת?
 

vinney

Well-known member
מה אתה צריך לעשות?

עקרונית בחלונות אפשר להגיע לאלפיות שניה, אבל לא כחלק מהזמן הנוכחי, אלא בTIMER TICKS. די אין טעם להכליל את זה בפונקציות הסטנדרטיות של תאריך/זמן, כי זה לא נתמך בחלק גדול ממערכות, אבל אם אתה רוצה לעשות TIMER על מאיות השניה, אתה יכול לעשות או אם SLEEP או עם GetTickCount
 

MaorCS

New member
אחרי שחשבתי על זה שוב, גם timer

כזה יכול לעזור לי.. אז איך משתמשים בפונקציה הזאת של GetTickCount? צריך איזה ספריה? איזה ערך היא מחזירה?
 

gmorph

New member
תשתמש ב GetLocalTime

זה ייתן לך אלפיות שנייה. אתה יכול לשלב את בשימוש ב mktime ואם אני זוכר נכון אתה מסודר.
 

MaorCS

New member
טוב, אז חיפשתי ב-MSDN את

GetLocalTime והגעתי לזה:
GetLocalTime( LPSYSTEMTIME lpSystemTime );​
היה כתוב שם ש: lpSystemTime הוא מצביע למבנה שבו קיימים התאריך והשעה (כולל המילישניות). אז כתבתי את זה:
int i; i = lpSystemTime.wMillieconds;​
ה-wMilliseconds הוא משתנה בתוך המבנה שבו קיימים השעה וזה בדוק (לפי MSDN). אחרי שכתבתי את זה אני מקבל 2 שגיאות: error C2065: 'lpSystemTime' : undeclared identifier error C2228: left of '.wMilliseconds' must have class/struct/union type הסתכלתי בתוך הקובץ windows.h וראיתי שכן קיימת שם הצהרה של lpSystemTime אז למה אני מקבל את השגיאות האלה?
 

gmorph

New member
חבריקו, תבדוק שוב

אתה צריך להצהיר על משתנה מטיפוס SYSTEMTIME ואז להעביר לפונקציה את הכתובת של המשתנה בעזרת &. אח"כ תחזור לMSDN ותבדוק מאיזה טיפוס wMilli...תזכות דבר נוסף: הערך שם הוא לא כל המילי שניות שמייצגות את השעה, אלא זה מה שנשאר אחרי השניות. כלומר הערך הזה תמיד יהיה קטן מאלף.
 

MaorCS

New member
או קיי, אז עשיתי דבר כזה:

SYSTEMTIME *time; GetLocalTime(time); cout << time->wMilliseconds;​
התוכנית עוברת קומפילציה והכל, ורק ברגע שאני מריץ אני הודעה על פעולה לא חוקית והוא סוגר לי את החלון למה?? מה עשיתי לו?
 

MaorCS

New member
דרך אגב, אם אני עושה, כמו שאמרת:

GetLocalTime(&time);​
כלומר מעביר לפונקציה את הכתובת של המשתנה, אני מקבל שגיאה: error C2664: 'GetLocalTime' : cannot convert parameter 1 from 'struct _SYSTEMTIME ** ' to 'struct _SYSTEMTIME *'
 

MaorCS

New member
הסתדרתי!

הורדתי את הכוכבית מההצהרה של המשתנה וזה עבד! תודה לכולם!!
 
למעלה