PDA

View Full Version : حرفه ای: ادغام برنامه نویسی C++‎ ودلفی



nobody.gu3st
چهارشنبه 05 مهر 1391, 13:10 عصر
با سلام
خوب همه میدونیم که سرعت و حجم C++‎‎ قابل قیاس به دلفی (عزیز تر ازجان:قلب:) نیست متاسفانه .
من یه برنامه ارسال ایمیل دارم که کدش رو تو C++‎‎ نوشتم و الان میخوام GUI و تنظیماتش رو دلفی بنویسم

سوال من اینه چطور میتونم این کار رو بکنم یعنی هسته C++‎‎ باشه و به دلفی وصلش کنم تنظیمات رو انجام بدم و سپس ارسال کنم(عمل اتصال و ارسال به کد C++‎‎ هستش) .ایا راهش Dll هستش اگه بلی مقاله یا کتاب کاملی هستش براش یا راه دیگه داره ممنون میشم راهنمایی کنید بنده رو

مرسی

Felony
چهارشنبه 05 مهر 1391, 13:36 عصر
خوب همه میدونیم که سرعت و حجم C++‎‎‎‎‎‎‎‎ قابل قیاس به دلفی (عزیز تر ازجان) نیست متاسفانه .
من یه برنامه ارسال ایمیل دارم که کدش رو تو C++‎‎‎‎‎‎‎‎ نوشتم و الان میخوام GUI و تنظیماتش رو دلفی بنویسم
تو حجم فایل اجرایی تولید شده نهایی بله ، تفاوت دارن ولی تو سرعت مگر در موارد خاص تفاوت خاصی ندارن .



سوال من اینه چطور میتونم این کار رو بکنم یعنی هسته C++‎‎‎‎‎‎‎‎ باشه و به دلفی وصلش کنم تنظیمات رو انجام بدم و سپس ارسال کنم(عمل اتصال و ارسال به کد C++‎‎‎‎‎‎‎‎ هستش) .ایا راهش Dll هستش اگه بلی مقاله یا کتاب کاملی هستش براش یا راه دیگه داره ممنون میشم راهنمایی کنید بنده رو
اگر به خاطر حجم و سرعت دارین این کار رو میکنید بهتره کل پیاده سازی رو با دلفی انجام بدید ، چون همون GUI ساخته شده با دلفی حجمتون رو زیاد میکنه و دیگه تفاوتی تو حجم نیست ، سرعت هم که تو همچین برنامه ای تفاوتی نداره .

در هر صورت راهکارهای متفاوتی برای ارتباط بین پروسه ها ( IPC ( Inter-process communication)a ) هست :

- استفاده از پیغام های ویندوز و پیاده سازی DDE ( Dynamic Data Exchange )a
- اگر برنامه ++C تون Console Application هست استفاده از Pipe .
- استفاده از Memory Mapped Files .
- استفاده از DLL که در این صورت باید از Data Type های استاندارد مشترک بین دو زبان مبداء و مقصد استفاده کنید که بین Delphi و ++C یکی باشن ، مثلا پیاده سازی string در دلفی با ++C فرق میکنه و نمیتونید تو DLL از نوع داده String استفاده کنید و باید آرایه ای از کاراکترها یا ... تعریف کنید چون نوع داده ای string در ++C ناشناخته هست .

این لینک ها رو هم ببینید :

ftp://ftp.biomed.cas.cz/pub/local/lucie/fabio/partenza/BC5/DOC/DELPHI/BC5_D2/bc360.htm
http://www.hflib.gov.cn/e_book/e_book_file/bcb/ch06.htm
http://www.codeproject.com/Articles/18432/Sharing-Data-with-Memory-Mapped-Files

هر کدوم از روش های بالا محدودیت ها و پیاده سازی های خاص خودشون رو دارن ولی در کل اگر بحث پیاده سازی رو بزاریم کنار بهترین روش برای این کار Memory Mapped Files ها هستن که بتونید هر نوع اطلاعاتی رو مبادله کنید .

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

موفق باشید .

nobody.gu3st
پنج شنبه 06 مهر 1391, 07:56 صبح
ممنون آقا مهدی عزیز .آیا به نظر شما سرعت اتصال و ارسال در دو برنامه یکی است ؟ بله به صورت consol هستش ممنون بایت جواب کاملتون اگ مقاله فارسی هم دارید ممنون میشم در اختیار بنده بگذارید

BORHAN TEC
پنج شنبه 06 مهر 1391, 08:51 صبح
سلام
دوست عزیز شاید باورتون نشه ولی طبق آزمایش های کاملاً استانداردی که من بارها انجام داده ام به این نتیجه رسیده ام که سرعت اجرای برنامه هایی که با دلفی نوشته شده اند در اکثر موارد از برنامه هایی که با C++ (اعم از VC و C++ Builder و C++/Qt) نوشته شده اند بیشتر است. در بسیاری از موارد کاربران غیر حرفه ای Delphi را در کنار VB قرار می دهند ولی توجه داشته باشید که دلفی با C++ قابل قیاس است.
در مورد دوم برای استفاده از برنامه های مبتنی بر کنسول ابزارهای مختلفی وجود دارد که می توانید برای استفاده از بهترین آنها از لینکهای زیر استفاده کنید:
http://www.felix-colibri.com/papers/colibri_helpers/stdin_stdout/stdin_stdout.html
http://www.delphidabbler.com/software/consoleapp/download

BORHAN TEC
جمعه 07 مهر 1391, 10:17 صبح
آیا به نظر شما سرعت اتصال و ارسال در دو برنامه یکی است ؟
از نظر ذاتی تقریباً از سرعت یکسانی برخوردار هستند. توجه داشته باشید که که چون در این شرایط عوامل زیادی دخیل هستند نمی توان به خوبی بین C++ و Delphi مقایسه را انجام داد چون در این موارد شرایط زیادی مثل فریم ورک مورد استفاده و ... دخیل است. ولی در حالت کلی در استفاده از فریم ورک Indy به من اثبات شده که سرعت قابل قبولی دارد.