Net-Base מגזין

09.04.2026

החלפת חיבור מסד הנתונים של Borland BDE בדרייברים נייטיביים

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

09.04.2026

מהנושא במגזין ליישום בפרויקט

דפי שירות וטכניים רלוונטיים למאמר

Video-Botschaft

החלפת חיבור מסד הנתונים של Borland BDE בדרייברים נייטיביים

Warum die BDE heute im Betrieb zum Risiko wird und was „native Treiber“ praktisch lösen: weniger fragile Systemkonfiguration, besseres Deployment und kontrollierbare Transaktionen – ohne Big-Bang-Erneuerung.

Video mit KI erstellt

Transkript anzeigen

Hallo, ich bin Mark. Viele BDE-Probleme sind keine Bugs, sondern Betriebsrisiken.

Der Titel heute: „Borland BDE Datenbankanbindung durch native Treiber ersetzen“. Die BDE ist abgekündigt und hängt oft an globaler Maschinen-Konfiguration.

Das passt schlecht zu heutigen Rollouts, Terminalservern und restriktiven Rechten. Und: Sie bindet Sie häufig an 32-Bit, was 64-Bit-Strategien unnötig blockiert.

Native Treiber heißt: Die Anwendung spricht die Datenbank über aktuelle, unterstützte Treiber an, ohne BDE-Zwischenschicht. Damit werden Deployment und Konfiguration reproduzierbar.

Und Transaktionen, also klare Commit- und Rollback-Grenzen, lassen sich sauber kontrollieren. Wichtig: Das ist selten nur „Komponente tauschen“.

SQL, Datentypen und Zeichensätze müssen geprüft werden. Wenn Sie dazu Fragen haben, klären wir das gern im Kontext Ihrer Anwendung.

במסגרות רבות בארגונים רצות אפליקציות Delphi שהותאמו מקצועית במשך שנים ומהוות היום חלק משמעותי מערך הייצור. טכנית גישת הנתונים מבוססת לעיתים קרובות על Borland Database Engine (BDE) – לעתים צבר היסטורי, יציב דיו למשך שנים אך בגרסאות הפעלה מודרניות הופך לבעיה הולכת וגדלה. ה־BDE מועמד לפירוק, לוגיקת הדרייברים והקונפיגורציה שלה נשאבָה מתקופה שקדמה לדרישות אבטחה ופריסה של היום, והקישוריות לרכיבי 32‑ביט מתגברת כגורם מגביל בכל החלטת פלטפורמה.

החלפת BDE אינה פעולה קוסמטית אלא צעד מרכזי במודרניזציה: היפרדות מקונפיגורציית אליאסים גלובלית ומדרייברים ישנים לעבר דרייברים נייטיביים וגישה ברורה ונבדקת לנתונים. עבור ארגונים המשמעות היא: סיכון תפעולי מופחת, פריסה משוחזרת, מדרגיות טובה יותר ובסיס מהימן לצעדים עתידיים כגון REST‑Server, Windows‑ או Linux‑Services, תזרימי דוחות ולקוחות מולטי‑פלטפורמה.

חשוב להבין: המעבר רק לעתים רחוקות הוא „החלפת קומפוננטות בלבד“. מי שמחליף את ה־BDE באמת צריך לשכפל במדויק ככל האפשר התנהגויות SQL, טיפוסי נתונים, מערכי תווים, טרנזקציות, מנגנוני נעילה והתמודדות עם שגיאות — ובו בזמן לנצל את ההזדמנות לפירוק מבני של גישת הנתונים. כאן נוצר הערך התפקודי והכלכלי: לא רק שהאפליקציה „מריצת שוב“, אלא שהיא ניתנת לתחזוקה ובעלת עתיד.

מדוע ה־BDE מהווה היום סיכון

פריסה וקונפיגורציה: גלובלית, שבירה, קשה לאוטומציה

ה־BDE עובדת באופן טיפוסי עם קונפיגורציית מערכת או מכונה (BDE Administrator, Aliases, פרמטרים מרכזיים). בסביבות מודרניות עם רולאוטים סטנדרטיים, Terminal Server, VDI, הרשאות מחמירות וכשרשראות התקנה אוטומטיות זהו מקור קבוע למקרים מיוחדים:

  • תלות באליאסים גלובליים במקום קונפיגורציה קרובה לאפליקציה (למשל פר אינסטנס, פר לקוח).
  • קונפליקטים בהתקנות מקבילות של אפליקציות/גרסאות שונות על אותו המערכת.
  • חוסר או קושי באוטומציה ב‑CI/CD ובתפעול (למשל: setups שחזוריים).

נושאים של פלטפורמה ועתיד: 64‑ביט, ARM64, אקוסיסטמות דרייברים מודרניות

סצנריוים רבים של BDE קושרים אפליקציות ל־32‑ביט ולמערכת דרייברים מיושנת. גם אם אפליקציה „עדיין רצה“, מרחב הפעולה מצטמצם: 64‑ביט הוא סטנדרט בסביבות ארגוניות, ועם Windows 11 על ARM64 נושא התלויות הנייטיביות מקבל חשיבות נוספת. צעדי מודרניזציה כמו מעבר 64‑ביט מסודר או הכנה ל‑ARM64 נתקלים בפועל לעתים לא ב־Delphi עצמה אלא בשרשרות דרייברים וקונפיגורציה מיושנות.

טרנזקציות, נעילות ובעומס רב‑משתמשים: „עובד“ מול „נשלט“

רבות מהאפליקציות המצטברות משתמשות עם ה‑BDE בתערובת של טרנזקציות אימפליציטיות, התנהגות Auto‑Commit והנחות נעילה היסטוריות. זה עלול להיות חף תשומת לב בקבוצות משתמשים קטנות, אך תחת עומס הוא מציג סימפטומים טיפוסיים:

  • גבולות Commit/Rollback לא ברורים, במיוחד בתהליכים רב‑שלביים.
  • Deadlocks או זמני המתנה ארוכים לנעילות, כי אסטרטגיות הנעילה אינן מתאימות למערכת היעד.
  • טיפול בשגיאות שלא מתרגם באופן נקי חריגות טכניות למצבים עסקיים.

דרייברים נייטיביים ושכבות גישה מודרניות לנתונים (למשל דרך BDE‑Ablösung mit nativer Anbindung) מאפשרים כאן שליטה רבה יותר: אזורי טרנזקציה מבודדים, רמות איזולציה מוגדרות, ניתוח שגיאות עקבי ופרמטרי ביצועים ברורים.

מה הכוונה ב“דרייברים נייטיביים“ בDelphi בפועל

„דרייברים נייטיביים“ בהקשר ארגוני משמעותם: האפליקציה מדברת אל מסד היעד דרך סט דרייברים עדכני ומתוחזק, ללא שכבות ביניים כמו BDE וללא רכיבי ליגסי התלויים בקונפיגורציה גלובלית. בDelphi BDE-Ablosung mit nativer Anbindung הוא בדרך כלל התקן הטכני המוצק, מאחר שהוא יכול לפנות במס’ סוגי מסדי נתונים באופן אחיד ומשתמש בדרייברים מבוססים ומוכחים (תלוי ב‑DB: ODBC/OLE DB/Client‑Libs, אבל משולב בדרך מודרנית ומבוקרת).

התמונה הרצויה אינה רק „BDE החוצה, FireDAC פנימה“, אלא:

  • שכבת גישה לנתונים מוגדרת, שמכסה חיבור, טרנזקציות וקטגוריות שגיאות.
  • קונפיגורציה דרך הגדרות קרובות לאפליקציה (קובץ, Secret Store, Environment), לא מצב המכונה.
  • הפרדה נקייה בין UI, לוגיקה עסקית וגישה לנתונים (בדרך כלל כמימוש של Layer-3 Architektur).

מצבים טיפוסיים: אילו סצנריוים של BDE אנו רואים בשטח

Paradox/dBASE במערכת קבצים

רבות מהאפליקציות הישנות משתמשות בטבלאות Paradox ישירות ב‑Fileshare. מלבד בעיות ביצועים ונעילה זה מביא סיכונים תפעוליים משמעותיים (הפרעות רשת, קורופציה של קבצים, סיבוכיות בגיבוי/שחזור). החלפת דרייבר בלבד כאן אינה מספיקה בדרך כלל: לרוב נדרשת מיגרציה ל־Server‑RDBMS (למשל MariaDB, PostgreSQL, SQL Server) ודגם תפעולי חדש (משתמשים, תפקידים, גיבויים, ניטור).

BDE על InterBase/Firebird/Oracle/SQL Server דרך דרייברים ישנים

כאן שרת מסד הנתונים לעתים קרובות כבר „מודרני מספיק“, אבל הגישה מיושנת. בפרויקטים כאלה המעבר ל‑FireDAC נעשה לעתים בשלבים, כי מודל הנתונים כבר רלטיוני. העיקר בעבודה היא הבדלי SQL‑דיאלקט, פרמטרים, טיפוסי נתונים וטרנזקציות.

מצב מעורב: BDE בתוספת ממשקים נוספים

בחלק מהסביבות קיימים לצד ה‑BDE נתיבי גישה נוספים (ADO, ODBC, REST‑חיבורים, רכיבי ייבוא/ייצוא). זה מגדיל את הסיכון לאי‑התאמות: הנחות שונות לגבי מערכי תווים, לוגיקות נעילה מקבילות, כפילויות של כללי עסק. החלפת ה‑BDE היא אז גם הזדמנות לאחד את מסלולי הגישה ולרכז את כללי התחום במקום אחד.

מכשולים טכניים בהחלפת BDE – ואיך לפתור אותם נכונה

1) הבדלי SQL ודיאלקטים

SQL של BDE וה־SQL הממומש בפועל במסד היעד אינם זהים. נושאים שכיחים:

  • ליטרלים תאריכים, שרשור מחרוזות, פונקציות (למשל UPPER/LOWER, COALESCE/NVL, SUBSTRING).
  • תחביר JOIN ונוטציות של JOIN חיצוני (שיטות כתיבה ליגסיות).
  • ORDER BY על עמודות מחושבות, כללי GROUP BY, התנהגות DISTINCT.

במודרניזציה מבוקרת SQL לא „מפורטבע“ בעיוורון, אלא מקוטלג: אילו שאילתות קריטיות (ביצועים, תהליכים מרכזיים), אילו נדירות, אילו ניתן לארוז ב‑Views/Stored Procedures, והיכן משתלם רפקטור של לוגיקת השאילתות?

2) טיפוסי נתונים, סמנטיקת NULL ואורכי שדות

ה‑BDE יצר ברבות מפרויקטי המורשת הנחות לגבי טיפוסי נתונים שמופיעות אחרת בדרייברים נייטיביים. קונפליקטים טיפוסיים:

  • שדות בוליאניים: 0/1, T/F, Y/N, טיפוסי BOOL אמיתיים – כולל שימוש במדדים (indexes).
  • מחרוזות קבועות מול משתנות, חיתוך, ריפדינג והתנהגות השוואה.
  • NUMERIC/DECIMAL מול FLOAT: עיגול, חישובי סכום, שגיאות השוואה.
  • NULL מול מחרוזת ריקה: הבחנה עסקית, ולידציות, ערכי ברירת מחדל.

שחרור טוב של BDE כולל תמיד רשימת טיפוסי נתונים וקונבנציות. המטרה היא שלוגיקת המערכת ודוחות לא יהיו תלויות „במקרה“ בהתנהגויות אימפליציטיות, אלא שהכללים יהיו מפורשים.

3) מערכי תווים, Unicode ומיון (Collation)

רבות מהאפליקציות הוותיקות בDelphi/BDE נולדו בעידן ANSI. עם המעבר ל‑Unicode בDelphi ולשרתים מודרניים חייבים להבהיר:

  • איזו Codepage/Collation פעילה במסד הנתונים?
  • איך אוכפים מיון והשוואה עבור אותיות מיוחדות ואומלאוטים?
  • אילו שדות טכנית הם „טקסט“ ואילו הם „קודים“?

אם מיון והשוואה אינם מוסדרים, מתרחשים שגיאות שקשה לאתר: רשימות כפולות, תוצאות חיפוש לא עקביות, ערכים „שווים“ שמופיעים שונה ב־UI מאשר ב‑SQL. דרייברים נייטיביים מסייעים רק אם התנהגות היעד מוגדרת ונבדקת.

4) גבולות טרנזקציה ותחרותיות

תחת BDE טרנזקציות נעשה שימוש לעתים קרובות באופו אימפליציטי או דרך התנהגות קומפוננטות ש“מטפל בהן בעקיפין“. ב‑FireDAC ובדרייברים נייטיביים יש להבהיר וליישם:

  • אילו תהליכים עסקיים חייבים להיות אטומיים?
  • אילו רמות איזולציה מתאימות (למשל Read Committed מול Snapshot)?
  • איך מנקים בצורה rollback‑בטוחה במקרה של שגיאה?

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

5) BLOBים, שדות Memo ותזרימי מסמכים

האם הצעות כ‑PDF, אימיילים, תמונות או פרוטוקולים: שדות BLOB רגישים ברבות מהמערכות הישנות. דרייברים שונים עלולים להתייחס אחרת ל‑BLOB‑Streaming, לקידוד או למצבי קריאה/כתיבה. החלפה יציבה בודקת לכן:

  • Streaming לעומת טעינה מלאה (צריכת זיכרון, ביצועים).
  • גבולות ו‑Timeouts עבור מסמכים גדולים.
  • יחוס טרנזקציונלי: מתי מסמך נחשב באמת „committed“?

מודל גישה: החלפת BDE בלי Big‑Bang

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

שלב 1: מיפוי מצב קיים עם דגש על סיכון ותהליכים מרכזיים

בתחילה עומדת מלאי טכני:

  • אילו מסדי נתונים, טבלאות, Aliases וקונפיגורציות BDE קיימים?
  • אילו רכיבים (TTable/TQuery/TDatabase) בשימוש, היכן SQL „מוטמע“?
  • אילו תהליכים עסקיים הם קריטיים (חישוב, ניתוב, תחזוק נתוני יסוד)?
  • אילו בעיות ביצועים או יציבות ידועות?

התוצאה אינה מסמך אקדמי אלא סדר מיגרציה שניתן להסתמך עליו.

שלב 2: הגדרת ארכיטקטורת יעד (גישה לנתונים כמודול נפרד)

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

  • ניהול חיבורים ברור,
  • שליטה מרכזית בטרנזקציות,
  • תרגום שגיאות אחיד (טכני → עסקי/דיאגנוסטי),
  • יכולת בדיקה (Unit/Integration tests מול DB מוגדר).

בפרויקטים רבים בDelphi זהו השלב שבו „קוד מורשת“ הופך שוב לבסיס קוד ניתן לתחזוקה.

שלב 3: תפעול מקבילי (Strangler Pattern) במקום חיתוך חמור

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

שלב 4: מודרניזציה בצד מסד הנתונים היכן שהיא מביאה ערך עסקי

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

  • לבחון אינדקסים ולהתאימם לשאילתות הפועליות.
  • להשלים Constraints ו‑Foreign Keys כדי לאבטח איכות נתונים.
  • להשתמש ב‑Views או Stored Procedures כאשר זה משפר יציבות ותחזוקה.

שלב 5: החמה לתפעול ופריסה

החלפת הטכנית ‚גמורה‘ רק כשתפעול והרולאוט נמצאים בשליטה:

  • אסטרטגיית קונפיגורציה (פר סביבה, פר לקוח) ואחסון מאובטח של Credentials.
  • Logging/Tracing לשגיאות DB כולל Correlation‑IDs (חשוב לתמיכה ולאודיטים).
  • מנגנון Installer/Update ללא עבודות ידניות אחרי BDE.

FireDAC כסטאק יעד טיפוסי: מה ארגונים מעריכים בו

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

  • ניהול חיבורים נקי כולל פרמטריזציה, Timeouts ותבניות שגיאה.
  • טרנזקציות עם שליטה ברורה והתנהגות שחוזרת על עצמה.
  • כלי ביצועים (אפשרויות Fetch, Batch‑Updates, Prepared Statements) שמרגישים במאגרי נתונים גדולים.
  • גמישות בבחירת מסד הנתונים (למשל MariaDB, PostgreSQL, SQL Server) מבלי לכתוב את האפליקציה מחדש.

חשוב: גם FireDAC אינו „מטה קסם“. הערך נוצר באמצעות קונבנציות ברורות, רפקטור קפדני של מסלולי גישת הנתונים וקריטריוני קבלה תקיפים.

יותר מדרייבר: אילו אפשרויות מודרניזציה נפתחות לאחר מכן

REST‑Server ושירותים: לפתוח את הלוגיקה העסקית החוצה באופן מבוקר

עם גישה מבוקרת לנתונים קל יותר לספק לוגיקה עסקית קיימת כ‑REST‑API או להריץ עיבודים רקע כשירות. חברות רבות משתמשות בהחלפת ה־BDE כנקודת פתיחה כדי:

  • לבנות API פנימי למערכות נוספות (ERP, DMS, CRM),
  • לחבר פורטל לקוחות או פורטל שותפים,
  • להעביר תזרימי ייבוא/ייצוא ומשימות מתוזמנות לשירותים.

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

מולטי‑פלטפורמה ומערכות יעד חדשות (כולל Windows 11 ARM64)

ארגונים מתכננים יותר ויותר נוף לקוחות הטרוגני: שולחנות עבודה קלאסיים של Windows, סביבות וירטואליות, תחנות עבודה macOS, ועליה במכשירי ARM64. אפליקציה המוקשרת ל‑BDE מוגבלת מבחינה מבנית. בעזרת דרייברים נייטיביים ושכבת גישה מודרנית עולה הסבירות שהחלטות פלטפורמה לא יצאו אל מול חומת גישת נתונים.

משמעת ארכיטקטונית: היפרדות מלוגיקת UI‑קרובה למסד

אפליקציות BDE הוקמו היסטורית לעתים קרובות קרוב למסד: רכיבי UI קשורים ישירות ל‑TTable/TQuery, כללי עסק מפוזרים, וגישה לנתונים נעשית „באמצע הדרך“. המעבר מציע להזרים סדר:

  • לרכז לוגיקה עסקית בשירותים/מחלקות,
  • להפחית תלות ה‑UI,
  • ליצור Use‑Cases שניתן לאמת,
  • לטפל בשגיאות ומקרים מיוחדים בעקביות.

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

בדיקות איכות: איך מוודאים ש“תוצאה זהה“ אכן זהה

החלפת BDE נכשלת לעתים רחוקות בתחבורת חיבור, אלא במקרים קצה עסקיים. לכן צריך אסטרטגיית QA שעולה על „נוח לשימוש“:

  • Golden‑Master‑Tests עבור רשימות/דוחות מרכזיים (כניסה שווה → יציאה זהה).
  • בדיקות טרנזקציה לעיסקאות קריטיות/מעברי סטטוס (לגרום לשגיאות ולבדוק Rollback).
  • בדיקות עומס ותחרות על הטבלאות והאינדקסים הקריטיים במציאות.
  • בדיקות מיגרציה עבור מערכי תווים/Collation, בפרט בחיפוש, מיון ולוגיקת דובלטות.

עבור ארגונים זה ההבדל בין „טכנית הועבר“ לבין „מודרניזציה יציבה בתפעול“.

ניתוח עלות/תועלת: איך מודדים ROI של החלפת BDE

המאמץ של החלפת BDE משתנה מאוד לפי המצב ההתחלתי (Paradox מול Server‑DB, שיעור SQL, מצב הארכיטקטורה). עם זאת התועלת ניתנת להבחנה בתבניות חוזרות:

  • סיכונים תפעוליים מופחטים: פחות תלות, פחות קונפיגורציה ידנית, פחות שגיאות ריצת‑זמן מוזרות.
  • שינויי פיתוח מהירים יותר: לוגיקת SQL וגישה מרוכזת, ניתנת לבדיקה ומובנת.
  • מדרגיות טובה יותר: אופטימיזציית ביצועים ממוקדת, טרנזקציות מבוקרות, נעילות מתוכננות.
  • הכנה לצעדים הבאים: REST‑Server, שירותים, חיבור פורטל, 64‑ביט/ARM64, מולטי‑פלטפורמה.

באפליקציות עסקיות B2B האפקט העיקרי לרוב אינו „כמה אחוזים מהירות“, אלא תפעול יציב יותר, ניתן לתכנון וסף חסם נמוך יותר להמשך מודרניזציה.

סיכום: להחליף את ה‑BDE פירושו להחזיר את גישת הנתונים לשליטה

Borland BDE שימשה היסטורית כגשר פרקטי בין Delphi למסדי נתונים. בסביבות ארגוניות מודרניות היא הפכה לצוואר בקבוק: טכנית בוטלה, כבדה בפריסה, קשה לאוטומציה ולרבות אינה תואמת ליעדי פלטפורמה עכשוויים. החלפה מדויקת של BDE באמצעות דרייברים נייטיביים — לעתים קרובות דרך FireDAC — היא צעד אסטרטגי החורג מהחלפת ספריה בלבד.

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

אם אתם רוצים לתכנן את ההחלפה באופן מובנה וללא Big‑Bang מיותר, צעד ראשון מיטבי הוא מיפוי משותף של מצב ה‑Ist והכנת Roadmap מיגרציה אמין: https://net-base-software-gmbh.de/kontakt/

השלב הבא

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

אנו תומכים לא רק בשאלות נקודתיות, אלא גם כשמקטעי קוד מקור, נושאי Legacy או רעיונות פורטל אמורים להפוך לפרויקט ארגוני מהימן ועמיד.

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

שתף פוסט

לשתף את הפוסט הזה ישירות

LinkedIn, X, XING, Facebook, WhatsApp ודוא"ל זמינים מיידית. ל‑Instagram אנו מכינים קישור וטקסט קצר ישירות.

דוא״ל

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