المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : جعل مشروعي يعمل على كل الأجهزة


mandi
02-08-2010, 05:44 PM
السلام عليكم ورحمة الله وبركاته

هده أول مشارك لي في هدا المنتدى المليء بالأشياء المفيدة حول الدالفي

في الحقيقة أنا مقبل على إنجاز مشروعين بالدالفي

الأول يتمثل في تسيير الأملاك وقد بلغت نسبة الإنجاز فيه 80 في 100
سؤالي هو كيف يمكنني أن أجعله يعمل على باقي الأجهزة بدون تنصيب برنامج الدالفي
ملاحظة: إستعملت كقاعدة المعلومات bde (paradox)
ملاحظة 2: لقد جربت حل من طرف الأعضاء وهو تحميل ملفات BDE لكن بدون فائدة

ومشروعي الثاني هو قارئ mp3 أو wav يحتوي على خاصية التكرار مع التحكم فيها
أي:
وضع مكون edit أو مكون أخر بحث أضع فيه عدد التكرار للملف

TF6M
02-08-2010, 06:00 PM
و عليكم السلام و رحمة الله و بركاته
1- مرحبا بك أخي & لا تنسى إستخدام خاصية البحث .
http://www.delphi4arab.com/forum/misc.php?do=showrules
2- تابع موضوع : لا داعي لتثبيت Bde أبدا. (http://www.delphi4arab.com/forum/showthread.php?t=11)
3- قليل من التركيز , حاول فهم : كيفية ادراج الأصوات في دلفي (http://www.delphi4arab.com/forum/showthread.php?t=120&highlight=media)
- إما بمراجعه بارام 3 للدالة PlaySound أو الإستعانة مكون لحساب طول الـ Stream (wav)1 ..... الخ .
بالتوفيق,,

mandi
02-08-2010, 06:08 PM
شكرا لك أخي TF6M على هده النصائح لكن سبق وقلت لك أني جربت هدا حل ---لا داعي لتثبيث BDE ---
بدون فائدة
أما بخصوص السؤال الثاني ما أقصده هو
لاحظ الصورة
http://hh7.net/Jul/hh7net_12807648351.png

kachwahed
02-08-2010, 06:52 PM
سؤالي هو كيف يمكنني أن أجعله يعمل على باقي الأجهزة بدون تنصيب برنامج الدالفي
برنامجك يعمل على باقي الأجهزة، ولا حاجة لتثبيت دلفي
وإنما تثبيت فقط BDE
سبق وقلت لك أني جربت هدا حل ---لا داعي لتثبيث BDE ---
تثبيت أي برنامج يعني أساسا:
- نسخ مكتبات DLL إلى النظام (System/System32/Windir...)
- نسخ مفاتيح في Registry
إذا توصلت إلى ذلك (الملفات والمفاتيح) لست بحاجة إلى تثبيته.
تحتاج فقط:
3- قليل من التركيز ,
مشروع سابق، ألق نظرة:
http://www.delphi4arab.com/forum/showthread.php?t=1272

mandi
02-08-2010, 11:23 PM
والله لم أفلح في جمع مشروعي وأجعله قابل للتنفيد في أي جهاز أخر

kachwahed
02-08-2010, 11:44 PM
**** التوضيح من فظلكم
انتبه (http://www.delphi4arab.com/forum/misc.php?do=showrules):
11- هناك كلمات محظورة عند كتابتها تظهر على شكل نجوم ***** ، احرص على عدم ظهورها لكي لا تحذف مشاركتك

جرب المرفق واقرأ Readme.txt.

imad_soft
09-08-2010, 02:31 PM
السلام عليكم
اخي لماذا لاتستعمل instal sheld
بهاذا تكون تحصلت على برنامج على شكل exe

nformatic
09-08-2010, 04:16 PM
السلام عليكم
installshield هو الحل الأمثل أخي كما ذكر الأخ imad_soft

أبو محمد اللحياني
19-09-2010, 10:41 PM
لأن الموضوع يحمل نفس السؤال الذي أريـــده فكتبت سؤالي هنا !!

أنا عندي نفس المشكلة ولكن برنامجي مستقل بذاته لا يحتاج إلى ملف آخر

عندما أعمل له بناء وأنقله إلى جهاز آخر لا يعمل ، تظهر الواجهة وكل شيء ولكن مجمّد لا يعمل .

التفاصيل :
عندي ثلاثة أجهزة
1- XP ومثبت فيه D7 و D2010
2- WIN7 ومثب فيه D7 و D2010
3- WIN7 ، بِكر طازة

عندما أعمل بناء للمشروع وأنقله بين الجهازين الأول والثاني يعمل بدون مشاكل
ولكن لما أنقل من أحد الجهازين (2و1) إلى الثالث 3 يهنّق ( يجمّد) أو يعمل في الخلفية ولا تظهر رسالة الاحتياج إلى المكتبة *.bPL .

المثال برنامج للاتقاط اللون والذي جعلني أسأل الني بعض ممصمي الويب أكثر من السؤال حول تشغيل البرنامج على win7 ، فعملت برنامج مختصر للاجل الاختبار و السورس موجود في المرفقات به نفس المشكلة.

والملف التنفيذي هنا
mkh.cc/TestColor.exe

B.M.AbdelAziZ
27-09-2010, 11:53 AM
السلام عليكم ورحمة الله

يهنّق ( يجمّد) أو يعمل في الخلفية ولا تظهر رسالة الاحتياج إلى المكتبة *.bPL
هذا يعني هناك خطا برمجي او شيئ ناقص داخل اوامر برنامجك...
ناتي للمرفق
أولا

begin
DC := GetDC(0);
end;

ماذا لو لم ترجع GetDC ما تريد!
عند استدعاء اي دالة (خاصة دوال API)تحقق من النتيجة
كمثال سريع (وغير عملي في الحقيقة فهو للتوضيح فقط) يمكن ان تكتب شيئ مثل

begin
DC := GetDC(0);
if DC=0 Then Halt
end;

نفس الشيئ بالنسبة لاستدعاء GetPixel تحقق من CLR_INVALID
ثانيا لماذا استدعيت GetDC بحدث وGetPixel بحدث اخر ؟ اليس من الاحسن استخذام نفس الحدث (Timer) وهنا يمكنك استخدام ReleaseDC (التي نسيتها)

أبو محمد اللحياني
29-09-2010, 08:41 PM
بالنسبة للدالة GetDC فإنها تعطي المقبض الخاص بالجهاز ، وأناأريـــد الشاشة وهذا رقم لا يتغير أثناء مسيرة عمل البرنامج ، فلا داعي لتكرار مناداتها في الـ Timer ، فالمناسب هو مناداتها عند تشغيل البرنامج فقط.

أما الدالة GetPixel فهي تعطي إحداثيات الماوس وما فيها من ألوان فالمناسب مناداتها كل مرة فوضعت في الحدث Timer .

نعم كان المناسب أن أكتب هكذا :
begin
// DC := ReleaseDC(0,0); // error !
// DC := ReleaseDC(Application.Handle,0); // error !
// DC := ReleaseDC(GetActiveWindow,0); // error !
DC := GetDC(0); // okey
if DC = 0 then
Timer1.Enabled := False;
end;

pColor := GetPixel(DC, p.X, p.Y);
if pColor <> CLR_INVALID then
begin
GetColor (pColor) ;
SetColor;
end
else txtColor.Caption := 'Pixel Invalid.';

أما بالنسبة للدالة ReleaseDC فإنها مع عدة محاولات لم تعمل عندي والله اعلم .

ولما نقلت الملف التنفيذي إلى الجهاز الآخر للاختبار ظهرت العبارة : Pixel Invalid. فعلمت أن الخطأ في الدالة
GetPixel .

وجربت طريقة أخرى موجودة على هذا الموقع
http://www.delphitricks.com/source-code/graphic/get_a_pixel_color_of_the_desktop.html

ولكن أيضاً نفس المشكلة .