• توصیه هایی برای ایجاد رابط کاربری در دلفی. چکیده: استفاده از رابط های باز برنامه های محیط برنامه نویسی دلفی برای مدیریت کسب و کار شما

    ایجاد رابطکاربر به انتخاب از پالت مؤلفه‌ها، مؤلفه‌های دلفی لازم برای عملکرد برنامه کاهش می‌یابد. رابطمدیریت و همچنین رابطنمایش اطلاعات، و انتقال آنها به فرم با طرح بعدی.

    رابط کاربری که ایجاد می کنید باید از عناصر استاندارد و آشنا برای کاربر استفاده کند و حداکثر راحتی را ارائه دهد. همه اینها در نهایت با معیاری مانند اثربخشی رابط - حداکثر نتیجه با حداقل تلاش تعیین می شود.
    اصول ایجاد یک رابط کاربر پسند شناخته شده است. به عنوان کلی ترین اصول ایجاد رابط کاربری، سه نکته اصلی را می توان در نظر گرفت:

    1. برنامه باید به انجام کار کمک کند، نه اینکه تبدیل به کار شود.
    2. هنگام کار با برنامه، کاربر نباید خود را احمق احساس کند.
    3. برنامه باید به گونه ای کار کند که کاربر کامپیوتر را احمق نداند.
    اصل اول- این به اصطلاح "شفافیت" رابط است. رابط کاربری باید بصری، آسان برای یادگیری باشد و مشکلاتی را برای کاربر ایجاد نکند که در این فرآیند باید بر آنها غلبه کند. از اجزای استاندارد و بدون تزئین استفاده کنید، از کنترل های معمولی که توسط برنامه های مشابه استفاده می شود استفاده کنید و به معیارهای عملکرد دست یابید. اصل اول.

    اصل دومدر غفلت از توانایی های فکری کاربران نهفته است. از تجربه خودم می دانم که اغلب کاربران نه تنها نمی دانند چگونه با رایانه کار کنند، بلکه به سادگی از انجام هر کاری به تنهایی می ترسند. بنابراین، رابط کاربری باید تا حد امکان دوستانه باشد.
    علاوه بر این، ترس کاربران اغلب موجه است، زیرا هزینه برنامه و خود رایانه را نمی توان با هزینه، به عنوان مثال، یک پایگاه داده ایجاد شده توسط چندین سال تلاش مقایسه کرد. به همین دلیل است که برنامه نویس هنگام ایجاد یک رابط کاربری، همیشه باید "محافظت از احمق" را در برنامه ایجاد کند - از اقدامات اشتباه و ورودی داده های نادرست کاربر. اما برخی از برنامه نویسان با چنین محافظتی بیش از حد غرق می شوند، آن را بیش از حد مزاحم می کنند و در نتیجه عملکرد برنامه شبیه به معروف "گام به چپ، قدم راست فرار محسوب می شود" می شود! و آنچه یک برنامه نویس به عنوان راه حلی برای یک مشکل ایجاد می کند، خودش شروع به ایجاد مشکلات می کند.
    برای رعایت اصل دومنیازی به اجازه دادن به برنامه برای "تصحیح" اقدامات کاربر وجود ندارد و مشخص می کند که دقیقاً چه کاری را برای او انجام دهد و او را به یک چارچوب باریک سوق دهد. همچنین، نباید با نمایش پیام های راهنمایی اطلاعاتی، به ویژه پیام های گفتگو، زیاده روی کرد، زیرا این امر کاربر را از کار منحرف می کند. و بهتر است امکان غیرفعال کردن دستورات را به طور کلی فراهم کنید.

    اصل سومایجاد برنامه ای با بیشترین توانایی های "ذهنی" ممکن است. علیرغم توسعه سریع فناوری رایانه، حتی برنامه های گسترده را فقط می توان به طور مشروط دارای هوش مصنوعی نامید. آنها با نمایش کادرهای محاوره ای با سوالات احمقانه که حتی در ساده ترین شرایط باعث سردرگمی می شوند، در کار کاربر دخالت می کنند. در نتیجه، کاربران در قلب خود فریاد می زنند: "خب، این ماشین احمق است!"
    من شخصاً از سؤالات مداوم تقریباً همه ویرایشگرهای متن در مورد ذخیره متن تغییر یافته آزار می‌دهم، اگرچه متن اصلی و فعلی تنها یک کاراکتر با هم تفاوت ندارند. بله، من چیزی تایپ کردم، اما بعد همه چیز را برگرداندم، آیا واقعاً نمی توان آن را فهمید! باید چک کنم ببینم چیزی رو خراب کردم یا نه

    سعی کنید قوانین زیر را رعایت کنید:

    عناصر رابط استاندارد
    از اجزای استاندارد برای این عنصر رابط استفاده کنید. پس از ملاقات با برنامه شما، کاربر وقت خود را برای آشنایی با یکدیگر تلف نمی کند، بلکه بلافاصله شروع به کار می کند - این یکی از نشانه های یک برنامه حرفه ای ساخته شده است.
    پالت کوچک ابزار
    سعی کنید از اجزای مختلف زیاد استفاده نکنید. و البته با استفاده از یک جزء استاندارد در جایی در یک مکان، در یک مورد مشابه نیز از آن استفاده کنید.
    فاصله مساوی بین کنترل ها
    عناصر رابط را در یک فاصله از یکدیگر مرتب کنید. اجزای پراکنده تصادفی حس یک محصول غیرحرفه ای را ایجاد می کنند. و بالعکس، قرار دادن با دقت کالیبره شده روی فرم دکمه ها، سوئیچ ها، چک باکس ها و سایر اجزایی که رابط را تشکیل می دهند، نشانه کیفیت کار است.
    سفارش برگه "سفارش صحیح
    TabOrderترتیبی است که نشانگر صفحه هنگام فشار دادن یک کلید روی کنترل ها حرکت می کند Tab. در یک برنامه به درستی نوشته شده، مکان نما حرکت می کند، به دنبال منطق کار کاربر با برنامه. هنگام ایجاد یک برنامه، برنامه نویس اغلب اجزاء را تغییر می دهد، برخی را حذف می کند، برخی دیگر را در صورت نیاز اضافه می کند. در نتیجه، در برنامه تمام شده، مکان نما به طور تصادفی از روی فرم می پرد. پس از اتمام برنامه، تنظیم را فراموش نکنید TabOrder.
    انتخاب فونت
    فقط فونت ها را به حال خود رها کنید. فونت های پیش فرض دلفی برای هر سیستمی که ممکن است برنامه شما روی آن اجرا شود کار می کند. فقط برای برجسته کردن عناصر مهم از فونت پررنگ استفاده کنید. کاربرد خط شکستهو به خصوص خط کشی، که کاربر ممکن است آن را با یک لینک اشتباه اشتباه کند - فرم بد.
    انتخاب رنگ
    در مورد رنگ عناصر رابط، درست مانند فونت ها، بهتر است آنها را به طور پیش فرض استاندارد بگذارید. دلفی از پالت سیستم ویندوز استفاده می کند و کاربر با تغییر آن به راحتی می تواند رنگ ها را برای خود شخصی سازی کند.
    مدیریت جایگزین
    یک برنامه حرفه ای ساخته شده باید بتواند نه تنها با ماوس، بلکه با صفحه کلید نیز کنترل شود. نباید هیچ تابعی برای اجرا فقط با ماوس وجود داشته باشد (نقاشی در ویرایشگرهای گرافیکی حساب نمی شود!). برای توابع پر استفاده باید "کلیدهای داغ" برای دسترسی سریع آنها ارائه شود.
    بلوک های ساختمان رابط
    با توجه به عناصر خاص رابط کاربری، کیفیت تعامل کاربر با برنامه به موارد زیر بستگی دارد:
    • انطباق عنصر کنترل با وظیفه آن؛
    • قوانینی که بر اساس آن کنترل عمل می کند.
      این صفحه قوانین ایجاد برخی از عناصر رابط را مورد بحث قرار می دهد.
    و اکنون می‌خواهم نشان دهم که دلفی چه ابزارهایی را برای مدیریت مؤلفه‌ها در فرم، موقعیت نسبی آنها و رفتار مکان‌نما هنگام فشار دادن یک کلید ارائه می‌کند. Tab.

    برای اینکه اجزاء را نسبت به یکدیگر به ترتیب صحیح مرتب کنید، ابتدا باید آنها را برجسته کرد. به سادگی می توانید ماوس را روی ناحیه ای از فرم که شامل اجزای انتخاب شده است بکشید. یا با نگه داشتن تغییر مکان"، با همان ماوس هر جزء را که باید انتخاب شود، مشخص کنید. با کلیک مکرر ماوس روی جزء انتخاب شده (در حین فشار دادن " تغییر مکان") آن را از حالت انتخاب خارج می کند.

    اجزای انتخاب شده را می توان به عنوان یک کل مدیریت کرد - در اطراف Form جابجا شد، مقادیری را به همان ویژگی ها اختصاص داد، کپی کرد (برای نصب، به عنوان مثال، در یک فرم دیگر)، حتی حذف شد.

    اکنون روی یکی از اجزای مورد نظر کلیک راست کرده و از منوی "پاپ آپ" انتخاب کنید موقعیت -> تراز...یک کادر محاوره ای ظاهر می شود که به شما امکان می دهد موقعیت اجزای گروه را به صورت افقی و عمودی تنظیم کنید. به عنوان مثال، ما باید چهار دکمه خود را به سمت چپ تراز کنیم و مطمئن شویم که فاصله عمودی یکسانی بین آنها وجود دارد. برای این کار دکمه های رادیویی را انتخاب کنید افقی: سمت چپو عمودی: فاصله به طور مساوی.

    انتخاب یک مورد مرکز، اجزاء را طوری مرتب می کنیم که مرکز آنها به صورت افقی یا عمودی روی یک خط قرار گیرند و نقطه مرکز در پنجرهاجزاء را به مرکز پنجره، به صورت افقی یا عمودی، حرکت می دهد.

    در همان منو، خط Tab Oسفارش...باعث ظاهر شدن کادر محاوره ای می شود که حرکت مکان نما را از طریق عناصر رابط هنگام فشار دادن یک کلید کنترل می کند Tab. هنگامی که Form روی صفحه ظاهر می شود، مکان نما به طور طبیعی بر روی جزء واقع در خط اول کادر محاوره ای قرار می گیرد. و سپس به پایین لیست حرکت می کند. در کادر محاوره ای، دو فلش آبی "بالا" و "پایین" موقعیت جزء انتخاب شده را کنترل می کنند. جزء مورد نظر را انتخاب کنید، از فلش ها برای حرکت به خط مورد نظر در لیست استفاده کنید و غیره.

    هنگام انتخاب یک آیتم منو کنترل ->یک زیر منو با دو مورد ظاهر می شود:

    • به جلو بیاورید
    • ارسال به عقب
    اینها متدهای جزء هستند که به صورت برنامه نویسی نیز در دسترس هستند. Button1.SendToBackدکمه را به "پس زمینه" منتقل می کند، و Button1.BringToFront- به جلو بیاور». یعنی اگر یک جزء بالاتر از دیگری قرار گیرد، این روش ها آنها را با هم عوض می کنند. مواردی که این می تواند در آنها اعمال شود کاملاً واضح است.

    فقط برای نتایج

    رعایت دقیق ضرب الاجل ها

    شفافیت

    اجرای پروژه

    پشتیبانی فنی به عنوان هدیه

    برنامه نویسی، بهبود، مشاوره در 1C

    چگونه کار می کنیم

    1. مشکل را تلفنی در میان می گذاریم. اگر دسترسی از راه دور دارید - روی صفحه رایانه خود نشان دهید.

    2. اگر پروژه بزرگ باشد، کار را به روبل ارزیابی می کنیم، اگر نه - تعداد تقریبی ساعت.

    3. ما کار را انجام می دهیم.

    4. شما در برنامه خود کار می پذیرید، اگر نواقصی وجود دارد اصلاح می کنیم.

    5. ما یک فاکتور صادر می کنیم، شما پرداخت کنید.

    هزینه کار

    1. همه کارها به 3 دسته تقسیم می شوند: مشاوره، به روز رسانی یک پیکربندی معمولی، توسعه یا برنامه نویسی یک گزارش جدید، پردازش، دکمه ها و غیره.

    3. برای کارهای بالای 10 ساعت کار فنی از قبل با شرح و هزینه کار تهیه می شود. کار پس از تایید TOR با شما آغاز می شود.

    پشتیبانی فنی

    1. در صورت مشاهده هر گونه خطایی در آثار قبلی، ظرف 3 ماه به صورت رایگان آنها را اصلاح می کنیم.

    2. برای مشتریان دائمی، ما هر کاستی در کار خود را به صورت رایگان ظرف یک سال برطرف می کنیم.

    برنامه هایی برای مدیریت کسب و کار شما

    خرید 1C: Enterprise

    ما نماینده رسمی 1C هستیم، شما می توانید محصولات نرم افزاری و مجوزهای مختلف را از ما خریداری کنید. علاوه بر خرید "جعبه"، ما به شما در راه اندازی برنامه، مشاوره و انجام تنظیمات اولیه کمک خواهیم کرد.

    • حسابداری
    • اتوماسیون فروشگاه
    • عمده فروشی
    • راهنمای نصب و راه اندازی اولیه در بسته گنجانده شده است!
    • تنظیم دقیق تنظیمات مطابق با نیازهای مشتری، توسعه ماژول های جدید در صورت عدم وجود عملکردهای لازم در پیکربندی استاندارد.
    حسابداری 1c 1C: مدیریت تجارت 1C: خرده فروشی 1C: حقوق و دستمزد و مدیریت منابع انسانی
    از 3300 روبل. از 6700 روبل. از 3300 روبل. از 7400 روبل.

    ارائه سرور

    سرور راه اندازی فوری + 1C.

    سرور نداره؟ مهم نیست، ما یک سرور را در "ابر" انتخاب و به سرعت راه اندازی می کنیم. با هزینه ای اندک، راه حل بسیار قابل اعتمادی دریافت می کنید.

    • در دسترس بودن 24/7
    • بدون نیاز به نگه داشتن مدیر سیستم خود (پس انداز هزینه سرور شما را پوشش می دهد).
    • راه اندازی و نصب سریع 1C بر روی سرور، در عرض 3 روز شما یک سیستم کاملاً کارآمد خواهید داشت.
    • در هر زمان، اگر راه حل مناسب شما نیست، می توانید به یک سرور محلی منتقل شوید.

    پیامک از 1C شما

    آیا می خواهید مشتریان به موقع از تبلیغات و تخفیف ها مطلع شوند؟ مشتریان برنمی گردند؟ ارسال پیامک مستقیم از 1C را تنظیم کنید!

    شرکت ما می تواند به سرعت ارسال پیامک به مشتریان شما را مستقیماً از 1C تنظیم کند. نمونه هایی از رویدادهایی که می توانند خودکار شوند:

    • قدردانی از خرید و تعلق پاداش بلافاصله پس از خرید بعدی.
    • انباشت پاداش به کارت به عنوان هدیه برای تولد/یک روز مهم یا تعطیلات دیگر.
    • اطلاعیه انبار.
    • انقضای کوپن هدیه
    • اطلاعیه دریافت پیش پرداخت و رزرو کالا.
    • آدرس با مسیرهای فروشگاه/دفتر، شماره تلفن.
    • و غیره.

    تنظیم در 1C می تواند توسط متخصصان یا کارمندان ما انجام شود. در صفحه تعرفه پیامک می توانید با تعرفه ها آشنا شوید.

    • ضمانت ارسال پیامک، فقط بابت پیامک تحویلی پول برداشت می شود.
    • صورتحساب جداگانه برای هر پیامک
    • پر کردن تعادل به روش های مختلف.
    • تاریخچه همه پیامک های ارسالی را در هر زمان مشاهده کنید.
    • نام فرستنده به جای شماره عددی در تلفن گیرنده.

    من با استفاده از کلاس دلفی از کد ++C مشکل دارم. نسخه ی نمایشی delphi dll که تابعی را صادر می کند که یک شی را برمی گرداند.
    کد دلفی Dll من به شکل زیر است:

    کتابخانه دلفی تست; // از قسمت استفاده می کند.... نوع IMyObject = رویه رابط DoThis(n: Integer); تابع DoThat: PWideChar; پایان؛ رویه TMyObject = class(TInterfacedObject,IMyObject) DoThis(n: Integer); تابع DoThat: PChar; پایان؛ // اجرای TMyObject به اینجا بروید ... رویه TMyObject.DoThis(n: Integer); start showmessage("شما در حال فراخوانی متد DoThis با "+intToStr(n) +"پارامتر هستید"); پایان؛ تابع TMyObject.DoThat: PChar; start showmessage ("شما در حال فراخوانی تابع DoThat هستید"); نتیجه:= Pchar("Hello im Dothat"); پایان؛

    // صادرات تابع DLL:

    تابع CreateMyObject: IMyObject; stdcall;export; var txt: TextFile; شروع AssignFile (txt"C:\log.log")؛ بازنشانی (txt)؛ Writeln(txt"Hello"); نتیجه:= TMyObject.Create; پایان؛ صادرات CreateMyObject;

    در پروژه ++C خود من رابط IMyObject را به این صورت اعلام کرده ام:

    کلاس IMyObject ( public: IMyObject(); virtual ~IMyObject(); virtual void DoThis(int n) = 0; virtual char* DoThat() = 0; );

    و عملکرد اصلی من به شرح زیر است:

    Typedef IMyObject* (__stdcall *CreateFn)(); int main() (HMODULE hLib; hLib = LoadLibrary(L"DelphiTest.dll"); assert(hLib != NULL); // pass !! (); printf("%u\n", erc); // خطای 127 دریافت می کند ) else( printf("موفقیت)); objptr->DoThis(5)؛ FreeLibrary(hLib); int in; scanf_s ("%i"، &in)؛ بازگشت 0؛ )

    در این مثال، هنگام تلاش برای دسترسی به تابع صادراتی، یک خطای زمان اجرا دریافت کردم. خطاهای خط:
    IMyObject* objptr = pfnCreate();

    میشه بگید مثالم چه اشکالی داره
    و در صورت امکان هر نمونه کاری برای دسترسی به کلاس دلفی (در یک DLL) از کد ++C.

    راه حل

    اولین مشکل فراخوانی قرارداد متد است. رابط دلفی از ثبات استفاده می کند که یک قرارداد فراخوانی خاص دلفی است. استفاده از stdcall به عنوان مثال، برای روش های رابط.

    مشکل بعدی در C++ است. اینترفیس ++C شما باید از IUnknown مشتق شده باشد، همچنین نباید سازنده یا تخریب کننده را اعلام کند.

    به غیر از آن، کد دلفی شما PWideChar را صادر می کند که به char نگاشت نمی شود. به wchar_t* نگاشت می شود.

    با نگاهی بیشتر، بازگرداندن PChar در اینجا عالی عمل می کند زیرا پیاده سازی شما به معنای واقعی کلمه برمی گردد. اما کد جدی‌تر احتمالاً می‌خواهد از یک رشته تخصیصی پویا استفاده کند، در این مرحله طراحی شما ناقص است.

    توجه داشته باشید که برای ایجاد یک فایل در ریشه درایو سیستم باید یک مدیر ارشد باشید. بنابراین این یکی دیگر از نقاط بالقوه شکست است.

    من انتظار دارم باگ های دیگری نیز وجود داشته باشد، اما این تنها چیزی است که تا به حال پیدا کرده ام.

    این مقاله بر اساس سؤالات موجود در انجمن ها است: "چگونه یک رشته را از یک DLL برگردانم؟"، "چگونه یک آرایه از رکوردها را پاس کنم و برگردانم؟"، "چگونه یک فرم را به یک DLL ارسال کنم؟".

    به طوری که نیمی از عمر خود را صرف فهمیدن آن نکنید - در این مقاله همه چیز را روی یک بشقاب نقره ای خواهم آورد.

    موضوعات این مقاله، به درجات مختلف، قبلاً بیش از یک بار در این وبلاگ مورد بررسی قرار گرفته است، اما در این مقاله به صورت انبوه جمع آوری شده، توجیهاتی ارائه شده است. به طور خلاصه، پیوندی به این مقاله می تواند برای کسانی که DLL را توسعه می دهند، ارسال شود.

    یادداشت مهم: مقاله باید خوانده شود به طور متوالی. نمونه کد فقط به عنوان ارائه شده است مثال ها، در هر مرحله (نقطه) مقاله، کد نمونه ها با جزئیات جدید اضافه می شود. به عنوان مثال، در همان ابتدای مقاله مدیریت خطا وجود ندارد، روش های "کلاسیک" نشان داده شده است (مانند استفاده از GetLastError، قراردادهای sdtcall و غیره)، که در طول مقاله با روش های مناسب تر جایگزین می شوند. این کار به این دلیل انجام می شود که طرح های "جدید" ("غیر معمول") سوالی ایجاد نمی کنند. در غیر این صورت، با هر مثال، باید یادداشتی از شکل را وارد کنید: "این در آن پاراگراف زیر بحث شده است، اما آن - در این یکی در اینجا." در هر صورت، در انتهای مقاله یک لینک به یک کد آماده وجود دارد که با در نظر گرفتن تمام موارد گفته شده در مقاله نوشته شده است. شما فقط می توانید آن را بگیرید و از آن استفاده کنید. و مقاله توضیح می دهد که چرا و چرا. اگر به "چرا و چرا" علاقه ندارید - به پایان بروید تا نتیجه گیری کنید و یک لینک برای دانلود مثال بزنید.

    برنامه نویسی شی گرا (OOP)، علاوه بر مفهوم کلاس، مفهوم اساسی یک رابط را نیز ارائه می دهد.

    رابط چیست و کار با آن در زبان برنامه نویسی دلفی چه ویژگی هایی دارد؟

    رابط یک ساختار معنایی و نحوی در کد برنامه است که برای مشخص کردن خدمات ارائه شده توسط یک کلاس یا مؤلفه (ویکی‌پدیا) استفاده می‌شود.

    در واقع، یک اینترفیس فهرستی از ویژگی ها و روش هایی را که باید هنگام کار با کلاسی که این رابط را پیاده سازی می کند و همچنین امضای آن ها (نام، نوع داده، پارامترهای پذیرفته شده (برای رویه ها و توابع) و غیره) مورد استفاده قرار دهند، تعریف می کند. بنابراین، کلاسی که یک اینترفیس را پیاده سازی می کند، لزوماً باید تمام اجزای آن را پیاده سازی کند. علاوه بر این، مطابق با نحوه توصیف آنها در آن.

    اغلب، رابط ها با کلاس های انتزاعی مقایسه می شوند، اما با وجود تمام شباهت ها، این مقایسه کاملاً صحیح نیست. در کلاس های انتزاعی، حداقل، کنترل بر روی دید اعضا در دسترس است. در عین حال، دامنه برای رابط ها تعریف نشده است.

    رابط‌ها به شما امکان می‌دهند معماری را انعطاف‌پذیرتر کنید، زیرا دسترسی به یک یا آن عملکرد را یکپارچه می‌کنند و همچنین به شما امکان می‌دهند از تعدادی از مشکلات مرتبط با وراثت کلاس اجتناب کنید (اینترفیس‌ها همچنین می‌توانند از یکدیگر به ارث برده شوند).

    دلفی از کلمه کلیدی رابط برای اعلام یک رابط استفاده می کند. این همان کلمه کلیدی است که بخشی از ماژول را تعریف می کند که می توان از خارج به آن دسترسی داشت (بین کلمات کلیدی رابط و پیاده سازی). با این حال، هنگام اعلان یک رابط، از نحو متفاوتی استفاده می شود، شبیه به اعلان کلاس ها.

    دلفی/پاسکال

    IMyNewInterface = رویه رابط InterfaceProc. پایان؛

    IMyNewInterface =رابط

    رویه InterfaceProc ;

    پایان ؛

    بنابراین، خود نحو اعلان رابط هیچ تفاوت اساسی با سایر زبان های برنامه نویسی ندارد (ویژگی های نحوی مبتنی بر پاسکال به حساب نمی آیند). در عین حال، پیاده سازی رابط ها دارای تعدادی ویژگی مشخصه است.

    واقعیت این است که رابط های دلفی در ابتدا برای پشتیبانی از فناوری COM معرفی شدند. بنابراین، رابط IInterface، که در دلفی نیای تمام رابط‌های دیگر است (نوعی آنالوگ TObject)، در حال حاضر شامل سه روش اساسی برای کار با این فناوری است: QueryInterface، _AddRef، _Release. در نتیجه، اگر کلاسی هر رابطی را پیاده سازی کند، باید آن متدها را نیز پیاده سازی کند. حتی اگر این کلاس برای کار با COM طراحی نشده باشد.

    با توجه به این ویژگی رابط IInterface، در دلفی استفاده از اینترفیس ها در بیشتر موارد منجر به اضافه شدن ویژگی های آشکارا استفاده نشده به کلاس می شود.

    یک کلاس کتابخانه ای TInterfaceObject وجود دارد که قبلاً شامل اجرای این متدها است و در هنگام ارث بردن از آن، نیازی به پیاده سازی آنها توسط خودتان نیست. اما از آنجایی که دلفی از وراثت چند کلاسه پشتیبانی نمی کند، استفاده از آن اغلب تنها باعث پیچیدگی بیشتر در طراحی و اجرای عملکردهای مورد نیاز از قبل می شود.

    همه اینها به این واقعیت منجر شد که با وجود همه امکانات ارائه شده توسط رابط ها، استفاده عملی آنها در دلفی تقریباً فراتر از کار با COM نبود.

    بهینه‌سازی شده برای کار عمدتاً با این فناوری، رابط‌ها، یا بهتر است بگوییم محدودیت‌های عملکردی و معماری که بدون نقص اضافه می‌کنند، خود را هنگام حل مشکلات دیگر توجیه نمی‌کنند.

    بنابراین، بسیاری از برنامه نویسان دلفی هنوز در واقع از ابزاری قدرتمند و انعطاف پذیر برای توسعه معماری اپلیکیشن محروم هستند.