שאלה על casting

Mapisto

New member
שאלה על casting

AfxMessageBox((LPTSTR)CH);​
מסרב להתקמפל כאשר CH הוא מסוג BOOL.
 

gmorphus

New member
מתקמפל...

אתה בטח עשית משהו אחר לא בסדר. תראה את הודעת השגיאה שהוא מעלה לך וככה נוכל לעזור לך הרבה יותר טוב. בכל מקרה, אני לא חושב שאתה רוצה לעשות את מה שעשית, כי אתה רק תגרום לתוכנית לקרוס. למשתנה ch שהוא בעצם מספר לכל דבר יתייחסו כמצביע אבל למעשה לא בטוח שהערך של המשתנה הוא מקום חוקי בזיכרון ששייך לך וזה יצור access violation ב run time.
 

Mapisto

New member
כן כן

זה מתקפל אבל גם שעשיתי קאסט לCSTRING הוא לא הציג לי :|
 

cganir

New member
ומה תצפה לראות מכזו המרה ?

BOOL ל CSTRING ? אם כבר, עשה כך :
AfxMessageBox(CH ? "TRUE":"FALSE");​
כך תקבל את הערך של CH בתצורה של מחרוזת.
 

Mapisto

New member
K , אבל השאלה היא כללית

אני רוצה המרה לדוגמא של int..
 

selalerer

New member
מה שעשית זאת המרה אבל זה עושה

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

cganir

New member
כמובן שאפשר פשוט לרשת את המחלקות

הבסיסיות, ולממש בהן אופרטור char* או CString
.
 

cganir

New member
ספר מה עשית כדי לפתור את הבעיה

איך התגברת על החוסר באופרטור המרה מתאים ?
 

Mapisto

New member
בדוק על הפונקציה _Itoa

רציתי להציג את זה רק לבדיקה, ואמרתי טוב נעשה דיבגין כמו נורמליים ונשתמש בווצ'ס.
 

selalerer

New member
הפונקציה sprintf תשרת אותך יותר טוב

לדוגמא:
int i; char str[512]={0}; sprintf(str,"myProg:i=%d",i); AfxMessageBox(str);​
 

cganir

New member
דרך אגב, אם תכתוב את התוכנה ב #C

אם אני לא טועה שם חלק ממחלקות הבסיס מכילות המרות, כמו למשל int.ToStr() שמחזירה לך את הייצוג המחרוזתי של המספר.
 

Mapisto

New member
מה פשר השגיאה

Linking... MainFrm.obj : error LNK2005: "protected: void __thiscall CMainFrame::OnUpdateMyNewPane(class CCmdUI *)" (?OnUpdateMyNewPane@CMainFrame@@IAEXPAVCCmdUI@@@Z) already defined in Status.obj Debug/Status.exe : fatal error LNK1169: one or more multiply defined symbols found Error executing link.exe.​
והפונקציות השונות
//{{AFX_MSG(CMainFrame) afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnFileChangestring(); //}}AFX_MSG afx_msg void OnUpdateMyNewPane(CCmdUI * pCmdUI); DECLARE_MESSAGE_MAP() }; void CMainFrame::OnUpdateMyNewPane(CCmdUI *pCmdUI) { pCmdUI->Enable(); pCmdUI->SetText(m_paneString); }​
 

vinney

Well-known member
המם

יכול להיות שכתבת את גוף הפונקציה OnUpdateMyNewPane בקובץ H?
 

Mapisto

New member
בטעות כן אבל זה עדיין לא עובד

Status.obj : error LNK2005: "protected: void __thiscall CMainFrame::OnUpdateMyNewPane(class CCmdUI *)" (?OnUpdateMyNewPane@CMainFrame@@IAEXPAVCCmdUI@@@Z) already defined in MainFrm.obj Debug/Status.exe : fatal error LNK1169: one or more multiply defined symbols found​
 
למעלה