HELP

Brasilero

New member
HELP

שלום. אני רוצה לבנות תוכנה בDELPHI שכאשר אני לוחץ על כפתור היא לוקחת תמונה ממקום בהארדיסק שאני מגדיר לה ומגדירה אותו כרקע של חלונות. הרצתי חיפוש ומצאתי את הקוד הבא: procedure ChangeDesktop(Filename: string); var lpBuffer: Array [0..MAX_PATH] of Char; begin StrPCopy(lpBuffer, Filename); SystemParametersInfo(SPI_SETDESKWALLPAPER,0,@lpBuffer, 0); end; אני לא ממש מבין איך הקוד הזה עובד ואיך אני מריץ אותו אז אם מישהו יכול להסביר לי איך הוא עובד ואיך אני מריץ אותו אז הוא יעזור לי מאוד. תודה לכולם !! יוני
 

galh

New member
הסבר.

יש הבדל בין ייצוג של מחרוזות ב- C לבין פסקל. ב- C המחרוזות הן רצף של תווים שמסתיימות בתו 0 (בלעז null terminated strings). בפסקל, לעומת זאת, התו הראשון מכיל את אורך המחרוזת ואחריו יש את רצף התוים. מה שקורה בפונקציה שלך היא שאתה מקבל שם קובץ שאותו אתה רוצה לקבוע כתמונת רקע. את השם הקובץ אתה מקבל כמחרוזת של פסקל. ממירים את שם הקובץ למחרוזת של C ע"י StrPCopy ואז קוראים לפונקציית API של חלונות (שמקבלת פרמטר בצורה של מחרוזת C) שקובעת את תמונת הרקע. ה- lpBuffer@ מעביר את הכתובת של lpBuffer (אפשר גם לרשום Addr במקום @). העברה של הכתובת של lpBuffer בעצם את התו הראשון ברצף התוים של המחרוזות וחלונות "יודעת" לקרוא את הרצף הזה עד לתו 0 (סוף המחרוזת). עזרתי לך מאוד?
 

Brasilero

New member
מאד אבל....

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