כותב |
|
בכר נסים אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 24 August 2008 בשעה 00:45 | | IP רשוּם
|
|
|
|
כתבתי תכנית בשפת c שהתארכה עד שהמחשב לא יכל לבצע הרצה וקרס.
הבנתי שצריך לחלק את התכנית לכמה קבצים קטנים, לקשור בניהם בצורה כל שהיא,
אך זה מהלך שאיני יודע לבצע.
אבקש עזרה בבניית פרוייקט כזה.
תודה מראש,
בכר נסים.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 24 August 2008 בשעה 21:38 | | IP רשוּם
|
|
|
|
WTF - המחשב קרס - לא הגיוני ...
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
בכר נסים משתמש מתחיל
הצטרף / הצטרפה: 25 August 2008 מדינה: Israel
משתמש: מנותק/ת הודעות: 3
|
נשלח בתאריך: 28 August 2008 בשעה 12:45 | | IP רשוּם
|
|
|
|
אולי המחשב לא קרס אבל התכנית נתקעת ומוציאה הודעה על גלישה מהזיכרון.
צריך לפתור את הבעיה בחלוקת הקובץ הגדול לקבצים קטנים, ליצור פרוייקט ולאחר
מכן להריץ את התכנית, דבר שאינני יודע לבצע.
אודה מאוד על עזרה בכך.
בכר נסים.
|
חזרה לתחילת העמוד |
|
|
אלצ'קו אחראי פורומים
ג2ר פ33תי
הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת הודעות: 609
|
נשלח בתאריך: 29 August 2008 בשעה 03:32 | | IP רשוּם
|
|
|
|
נראה לי שיש לך באג.
נראה לך שהבאת מספיק פרטים כדי לקבל עזרה?
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 30 August 2008 בשעה 10:41 | | IP רשוּם
|
|
|
|
זה באג. אין הגיון ש-"התוכנה ארוכה מדי אז המחשב קרס"
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
בכר נסים משתמש מתחיל
הצטרף / הצטרפה: 25 August 2008 מדינה: Israel
משתמש: מנותק/ת הודעות: 3
|
נשלח בתאריך: 03 September 2008 בשעה 05:00 | | IP רשוּם
|
|
|
|
אלצ'קו שלום !
אני חושב שהבהרתי את הבעיה יפה וקל מאוד, למרות שפתרון הבעיה שלי קשה עבורי לכן פניתי בבקשה לעזרה.
התכנית שבניתי גדולה מאוד ולא ניתן לבצע הידור.
עד כמה שידיעתי משגת, יש צורך לחלק את הקובץ לכמה קבצים קטנים ולכלול את כולם בפרוייקט ואז לבצע הידור.
אודה מאוד על עזרה בפתרון הבעיה.
תודה מראש,
בכר נסים.
|
חזרה לתחילת העמוד |
|
|
אלצ'קו אחראי פורומים
ג2ר פ33תי
הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת הודעות: 609
|
נשלח בתאריך: 04 September 2008 בשעה 19:41 | | IP רשוּם
|
|
|
|
ניסים שלום.
לדעתי, אתה צריך לתאר מה בדיוק עשית, ומה בדיוק קרה. עד עכשיו הצלחת לומר שהמחשב קרס, ואחר כך טענת שהתוכנה נתקעה וקרסה.
אם אתה יודע מה הפיתרון, שאתה חוזר עליו כל הזמן - "לחלק את התוכנה להמון קבצים קטנים" - מה אתה רוצה מאיתנו?
אם אתה רוצה עזרה, אתה צריך להסביר בדיוק מה הבעיה, ואנחנו ננסה למצוא עבורך פיתרון.
|
חזרה לתחילת העמוד |
|
|
בכר נסים משתמש מתחיל
הצטרף / הצטרפה: 25 August 2008 מדינה: Israel
משתמש: מנותק/ת הודעות: 3
|
נשלח בתאריך: 07 September 2008 בשעה 03:19 | | IP רשוּם
|
|
|
|
אלצ'קו שלום !
כתבתי תכנית גדולה בת כמה אלפי שורות, במהלך הכתיבה, מדי פעם בצעתי הידור של התכנית ותמיד הצלחתי, עד שכנראה התכנית כל כך גדלה והגיע למצב שהמחשב לא יכול לבצע הידור, ההרצה נתקעת והמחשב מוציא הודעה על חריגה מהזכרון וכך אני תקוע.
בזמנו, התיעצתי עם מתכנת מומחה וזה הסביר לי כי לא בונים תכנית אחת כזו ארוכה וגדולה, אלה מחלקים אותה לכמה קבצים קטנים יותר ואז לכלול את כל הקבצים בפרויקט ואז יהיה ניתן לבצע הידור.
עבר זמן מאז ואבד הקשר ביני לבין המתכנת ואיני יודע כיצד לבצע את הפרויקט ידוע לי כי מבצעים זאת באמצעות התפריט למעלה עם האופציה "project"
מודה אני לך על על ההתייחסות והמענה אלי ואני תקוה שהפעם הבהרתי את הבעיה ותוכל לסייע בפתרונה.
תודה מראש,
בכר נסים.
|
חזרה לתחילת העמוד |
|
|
אלצ'קו אחראי פורומים
ג2ר פ33תי
הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת הודעות: 609
|
נשלח בתאריך: 09 September 2008 בשעה 16:25 | | IP רשוּם
|
|
|
|
הבנתי.
מה שאתה רוצה לעשות הוא דבר כזה, לכתוב מספר קבצי C, בהם יימצא הקוד שלך, ולקמפל כל אחד מהם בנפרד. בשלב הבא, אתה תלנקג' את קבצי ה-OBJ שקיבלת בסוף הקודם לקובץ EXE אחד.
איך מפרידים? איך שבא לך. מומלץ כמובן לחלק לקטגוריות ולשים פונקציות בעלות מכנה משותף באותו קובץ C. לדוגמה, אולי היום יש לך את הפונקציות הבאות:
קוד:
BUFFER compress_buffer(BUFFER buffer, COMPRESSION_ALGORITHM algorithm) { ... }
BUFFER decompress_buffer(BUFFER buffer, COMPRESSION_ALGORITHM algorithm) { ... }
BUFFER create_directory_buffer(char* path) { ... }
bool dump_buffer_to_directory(BUFFER buffer, char* path) { ... }
int main() { // do something with argc and argv switch (bla) { case x: create_directory_buffer(); compress_buffer(); case y: decompress_buffer(); dump_buffer_to_directory(); } return 0; }; |
|
|
אתה יכול לחלק את הפונקציות לשלוש קטגוריות, לשים את הפונקציות של הכיווץ ב-compress.c, את הפונקציות של הטיפול בתיקייה ב-dir.c ואת ה-main ב-main.c. עכשיו הבעיה שנותרת לך היא שב-main לא קיימות הפונקציות compress_buffer וכו'. כדי שהקימפול של main.c יעבור, אתה תיצור קובץ h מקביל לכל קובץ c, שבו תשים רק את ההצהרות על הפונקציות. לדוגמה:
קוד:
//compress.h BUFFER compress_buffer(BUFFER buffer, COMPRESSION_ALGORITHM algorithm);
BUFFER decompress_buffer(BUFFER buffer, COMPRESSION_ALGORITHM algorithm); |
|
|
ב-main.c תעשה include לקבצי ה-h הנחוצים, ושלום על ישראל.
|
חזרה לתחילת העמוד |
|
|
בכר נסים אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 10 September 2008 בשעה 00:28 | | IP רשוּם
|
|
|
|
אלצ'קו שוב שלום ותודה מראש על ההבנה והסבלנות.
אני לא יודע, אבל כנראה שאתה חייב לסייע לי.
סיפרתי לך על המומחה ל-c שהכרתי בעבר ואנסה לשחזר בפנך את שהיה.
בגלל אורך התכנית, כמה אלפי שורות, כאמור, המומחה הסביר לי כיצד כותבים תכניות בגודל שהמהדר לא יוכל לבצע הדור וסייע לי לפרק את התכנית הכדולה לכ-30 קבצי c ו-h וכך שבתי אליו, החילוק מצא חן בעיניו והיה תקין, העלה את כל הקבצים לקומפיילר, נכנס לאופציה project שבתפריט הראשי העליון והשתמש בתת האופציה add וכך הוסיף בכל פעם אחד מקבצי המשנה שערכתי ובסיום הפעולה, ביצע הידור וראה איזה פלא, זה עבד.
כמו כן הסביר עד כמ שזכור לי, שאם בונים תכנית אחת גדולה או מחלקים אותה לקבתי "הדר" שנכללים בראש התכנית, מבחינת המהדר, זה אותו דבר משום שבהדור הוא מכניס ושומר את כולם בזיכרון עד שנגמר המקום.
ואילו בשיטה שהסביר לי, הקומפיילר מבצע הדור של כל קובץ בנפרד מול הקובץ הראשי ובסיומו, שומט את הקובץ המשני מהזיכרון וכך עובר להדר את הקובץ המשני הבא, יוצא עד כמה שהבננתי שלמעשה, גודל הזכרון שנתפס בעת ההדור, קטן מאוד.
אני מקווה שהפעם הצלחתי להסביר נכון את בעייתי אולם הפתרון קשה לי ורחוק. אני מאמין שעם הסבלנות והרצון לעזור שאתה מגלה כלפי, בסוף הבעיה תפתר.
שוב תודה מראש,
בכר נסים.
|
חזרה לתחילת העמוד |
|
|
אלצ'קו אחראי פורומים
ג2ר פ33תי
הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת הודעות: 609
|
נשלח בתאריך: 10 September 2008 בשעה 01:21 | | IP רשוּם
|
|
|
|
אז הוא פתר לך את הבעיה או לא?
|
חזרה לתחילת העמוד |
|
|
בכר נסים אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 10 September 2008 בשעה 23:18 | | IP רשוּם
|
|
|
|
בזמנו הבעיה נפתרה, אולם כפי שהסברתי, שמתי את כל התכנית בדיסק וידעתי כי הבעיה פתורה, אולם כאשר שבתי לבצע כמה עדכונים ושיפורים לתכנית, הדיסק לא נמצא והפכתי את כל ביתי בחיפושים, נשארתי שוב עם התכנית שמחולקת לכ-30 קבצים וכמו כן אבד הקשר ביני לבין המומחה שסייע לי. כיום אני עומד שוב באותו המקום ואיני יכול לשחזר את הפרוייקט והקישור שעשה בזמנו.
אודה לך על המשך החיפוש והפתרון של הבעיה.
בכר נסים.
|
חזרה לתחילת העמוד |
|
|
אלצ'קו אחראי פורומים
ג2ר פ33תי
הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת הודעות: 609
|
נשלח בתאריך: 12 September 2008 בשעה 09:36 | | IP רשוּם
|
|
|
|
מה לא ברור לך במה שהסברתי למעלה?
|
חזרה לתחילת העמוד |
|
|
בכר נסים אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 14 September 2008 בשעה 02:28 | | IP רשוּם
|
|
|
|
אליצ'קו !!!
כל התכנית הארוכה, מחולקת כראוי כפי שכתבתי ובזמנו המתכנת שסייע לי, ביצע את הקישור בניהם כפי שציינתי באמצעות האופציה project ובתוכה עם תת האופציה add. והתכנית סיימה הידור ויצרה קובץ exe.
לא מדובר בתכנית בעלת 2 או 3 קבצי עזר, כאמור מדובר בתכנית בעלת כ- 30 קבצי עזר, כאשר כל אחד מהם, מונה כמה מאות שורות קוד.
הבעיה והבקשה שלי היא, כיצד לבצע את פעולת הקישור בניהם באופציה project ובסיום, כיצד לבצע הידור ולקבל בסוף גם קובץ exe.
|
חזרה לתחילת העמוד |
|
|
אלצ'קו אחראי פורומים
ג2ר פ33תי
הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת הודעות: 609
|
נשלח בתאריך: 14 September 2008 בשעה 03:19 | | IP רשוּם
|
|
|
|
באיזו סביבת פיתוח אתה משתמש?
|
חזרה לתחילת העמוד |
|
|
בכר נסים אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 14 September 2008 בשעה 22:34 | | IP רשוּם
|
|
|
|
יש לי כמעט את כל הקומפיילרים של בורלנד אבל אני אוהב להשתמש
ב- bc3 , גירסה ישנה יחסית אבל משמשת אותי היטב.
|
חזרה לתחילת העמוד |
|
|
אלצ'קו אחראי פורומים
ג2ר פ33תי
הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת הודעות: 609
|
נשלח בתאריך: 20 September 2008 בשעה 19:52 | | IP רשוּם
|
|
|
|
יופי, אז קמפל כל קובץ בנפרד (נדמה לי שהקומפיילר הוא BC.EXE), ואז לנקג' את כל קבצי ה-OBJ שלך ל-executable עם הלינקר (למיטב זכרוני, LINK.EXE). מה הסיפור?
|
חזרה לתחילת העמוד |
|
|
בכר נסים אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 20 September 2008 בשעה 21:13 | | IP רשוּם
|
|
|
|
נדמה לי שאתה מדבר עכשיו בשפה שקרובה אלי, אולי ההצעה שהצעת היא הפתרון, אולם דיברת על פעולות שאיני יודע לבצע, אולי מעט יותר פירוט יסייע יותר.
אודה לך אם תפרט את הפעולות שעלי לבצע משום שהן חדשות לי לגמרי.
תודה,
בכר נסים.
|
חזרה לתחילת העמוד |
|
|
אלצ'קו אחראי פורומים
ג2ר פ33תי
הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת הודעות: 609
|
נשלח בתאריך: 20 September 2008 בשעה 22:17 | | IP רשוּם
|
|
|
|
יש לך קומפיילר? הקומפיילר הוא קובץ EXE שמריצים? תריץ אותו עם /HELP או /? ותקרא איך בדיוק צריך להשתמש בו.
יש לך סביבת פיתוח שלמה? בא איתה תיעוד. תקרא בתיעוד איך מריצים את הקומפיילר והלינקר.
|
חזרה לתחילת העמוד |
|
|