לזרוס 1.2, או: היה באג?

בשקט בשקט יצאה לאוויר העולם גרסה 1.2 הרשמית של FPC/Lazarus, סביבת הפיתוח בקוד פתוח לשפת Object Pascal. נכון להיום, זו האופציה המודרנית היחידה עבור מי שרוצה לתכנת בשפה זו, ולא מוכן למכור כליה בשביל לקנות גרסה מלאה של Delphi. יש בגרסה הזו גם באג קטן ומעצבן מאד, אבל…

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

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

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

אני יודע, הסיכוי שמישהו מכם אשכרה יתקין את לזרוס ויזדקק לתיקון הזה הוא זעיר… אבל למען הסדר הטוב, הנה הפתרון. אי-שם בספריית ההתקנה נמצא קובץ בשם application.inc . שם, בשורה 117, נמצא הטקסט הבא:

  LCLGetLanguageIDs(LangDefault, LangFallback);
  if LangDefault <> '' then
    FBidiMode := Direction(LangDefault) 
  else
    FBidiMode := Direction(LangFallback);

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

  FBidiMode := bdLeftToRight;

שמרתי את הקובץ ואז, בתפריט הראשי של סביבת הפיתוח, בחרתי Tools->Build Lazarus with Profile: Normal IDE. הקימפול לקח שתיים-שלוש דקות, סביבת הפיתוח נסגרה ונפתחה שוב, וזהו – הכל עובד כמו שצריך. אם רוצים בכל זאת טופס עם אלמנטים מיושרים לימין, אז בוחרים כרגיל בפאנל של תכונות הטופס את הערך bdRightToLeft עבור הפרמטר BiDiMode.

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

להרשמה
הודע לי על
8 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

אני לא מצליח לכתוב תגובה מכיון שאני נמצא בחו״ל ונחשב ע״י המערכת כספאמר

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

בא לי היום לחזור לתכנת.

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

תודה.

מצאתי את האתר הזה המצורף למטה
http://www.pascal-programming.info/index.php

כמו כן יש לי עותקים ב-pdfים חוקיים שקניתי עם הספרים וכן כל החבילה ללימוד לאזארוס, העניין יחסית פשוט אבל דורש זמן עצום ללימוד, (אני לא חושב שההבנה שלי מספיק טובה לאחר הקריאה מכיון שמדובר על כמות עצומה של מידע שיש צורך ליישם בעת התרגול) אשמח לשתף….

ודיווחת כאן? http://bugs.freepascal.org/my_view_page.php

יהיה אפילו יותר נחמד אם תציע להם טלאי.