עבור לתוכן

string^ to WCHAR * המרות

Featured Replies

פורסם

שלום לכולם

אני כבר זמן מתעסק עם הסטרינגים בvisual c++ בכל אופן מישהו יודע אולי על הליך מסודר לבצע את ההמרה הנ"ל?

בגדול אני רוצה לקחת את הסארניג מtextbox שהוא string^ ולהמיר אותו לטובת פונקצייה שמקבלת WHCAR* ? => LPARAM

(הפונקצייה היא getwindow(

תודה לעוזרים

פורסם

אתה מדבר על C++/CLI (מה שפעם היה managed C++).

אתה יכול או להעתיק את המחרוזת, או לעשות pin למצביע, כדי שה-runtime לא יזיז לך אותו.

קל מאוד למצוא תשובות בגוגל. אני לא מבין כמעט כלום ב-.NET ובכל זאת מצאתי את התשובה תוך 10 שניות.

פורסם

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

אני ממליץ לך להתשמש בפונקציות של Marshal

StringToHGlobalUniיעשה את העבודה.

רק אל תשכח לשחרר את הפוינטר עם FreeHGlobal.

פורסם
  • מחבר

תודה על התשובות

ברור שחיפשתי קודם בגוגל. והגעתי בערך לאותם עמודים. שם גםלמדתי על StringToHGlobalUni שדווקא מקבל string^ ולא מחזיר.

השאלה שלי היא יחסית פשוטה יש לי טקסט בוקס נניח בשם המפתיע textbox1 אני רוצה לשים בו משתנה מסוג wchar* איך עושים את זה?

ואותה שאלה אבל הפוך כלומר כלומר לקחת את המידע מ textbox1 ולשים אותו בתוך ה *wchar .

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

באשר לכיוון אחד אני חושב שזה זה אבל ממש לא סגור כך שהערות תתקבלנה בברכה

// TCHAR *text=(TCHAR *)(void*)Marshal::StringToHGlobalAnsi(textbox1->Text);

תודה לכולם.

פורסם


TCHAR *text=(TCHAR *)Marshal::StringToHGlobalAnsi(textbox1->Text);
// Logic
Marshal::FreeHGlobal((void*)text);

והפוך:


textbox1->Text = Marshal::PtrToStringAnsi((void*)text);

פורסם
  • מחבר

תודה רבה חברה על התשובות, למען הסדר הטוב אני ארשום פה את הקוד הסופי למען דורות עתידיים

כאשר במקום char* אפשר לרשום כל סטרינג, W2SEARCH הוא טקסט בוקס

char *a = (char*) (void* )Marshal::StringToHGlobalAnsi(W2search->Text);

W2search->Text = Marshal::PtrToStringAnsi( (IntPtr) a );

שוב תודה רבה

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים