ورود

View Full Version : سوال: service programming in delphi



Fariba_Shafaghi
دوشنبه 30 خرداد 1390, 10:22 صبح
با سلام

از دوستان کسی هست که با دلفی Service نوشته باشد؟ البته کمی تخصصی تر از مباحث قبلی سایت.

آیا امکان تعریف و تغییر یک متغیر Global وجود دارد. آیا می توان از این متغیر در برنامه دیگر استفاده کرد ؟

با تشکر فراوان

Felony
دوشنبه 30 خرداد 1390, 11:59 صبح
خیر ، در User Mdoe پروسه ها از هم ایزوله هستند ؛ پس قرار نیست همین جوری از یک برنامه به یک متغییر از برنامه دیگه دسترسی داشته باشید !

برای این کار باید از روش هایی مثل DDE استفاده کنید :
http://www.google.com/search?client=opera&rls=en&q=dde&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest
http://www.google.com/search?client=opera&rls=en&q=dde+in+delphi&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest

BORHAN TEC
دوشنبه 30 خرداد 1390, 14:22 عصر
آیا امکان تعریف و تغییر یک متغیر Global وجود دارد. آیا می توان از این متغیر در برنامه دیگر استفاده کرد ؟
این کار امکان پذیر است ولی انجام آن زیاد آسان نیست. من قبلاً چنین کدی را در همین سایت قرار داده بودم ولی هر چقدر گشتم نتونستم لینک اون تاپیک رو پیدا کنم. تا اوجایی که یادم هست مثالی مربوط به این مسأله در کتاب Delphi 6 Developers guide قرار دارد.

Felony
دوشنبه 30 خرداد 1390, 14:35 عصر
این کار امکان پذیر است
کدوم کار ؟ تعریف یک متغییر عمومی در سطح Service ها ؟!

vcldeveloper
دوشنبه 30 خرداد 1390, 19:20 عصر
آیا امکان تعریف و تغییر یک متغیر Global وجود دارد. آیا می توان از این متغیر در برنامه دیگر استفاده کرد ؟در حالت عادی، پروسه های مختلف از هم ایزوله هستند، و به داده های هم دسترسی ندارند. اگر دو یا چند پروسه نیاز داشته باشند که با هم داده مبادله کنند، یا داده ایی رو به اشتراک بذارند، باید از یکی از روش های Inter-Process Communication یا به اختصار IPC در ویندوز استفاده کنند. برای IPC روش های مختلفی در ویندوز وجود داره؛ یکیش ارسال پیام WM_COPYDATA بین پنجره های چند پروسه هست، که روش ساده ایی هست، اما به درد سرویس ها نمیخوره. روش های دیگه شامل استفاده از Pipes یا استفاده از Memory Shared Files یا استفاده از Sockets، یا استفاده از Remote Procedure Call برای ارسال داده به یک پروسه دیگه در داخل سیستم جاری یا خارج از این سیستم در یک سیستم داخل شبکه، و غیره هست. DDE هم هست. البته DDE مربوط به زمان ویندوزهای 16 بیتی هست، و تا جایی که یادم هست، خودش از یک سری پنجره های مخفی استفاده میکنه، که اگر اینطور باشه، برای سرویس ها مناسب نیست. اگر هم اینطور نباشه، با توجه به قدیمی بودنش، بهتره همچنان ازش استفاده نکنید. می تونید درباره IPC در ویندوز در لینک زیر مطالعه کنید:

http://msdn.microsoft.com/en-us/library/aa365574%28v=vs.85%29.aspx


با توجه به اینکه منظورتون بیشتر به اشتراک گزاری یک متغیر بین دو یا چند پروسه هست، به نظرم Memory Mapped Files می تونند گزینه مناسبی برای کار شما باشند. درباره نحوه استفاده از اونها در همون لینک بالا توضیح داده شده، و براشون نمونه سورس کدهای مختلفی هم به زبان دلفی می تونید در همین سایت یا سایت های دیگه پیدا کنید.