مشاهده دست آورد نظرسنجی: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

رای دهنده
172. شما نمی توانید در این رای گیری رای بدهید
  • نسخه های قبل از دلفی 7

    5 2.91%
  • دلفی7

    138 80.23%
  • دلفی2005

    1 0.58%
  • دلفی2006

    12 6.98%
  • دلفی2007

    30 17.44%
نظرسنجی چند گزینه ای
صفحه 2 از 3 اولاول 123 آخرآخر
نمایش نتایج 41 تا 80 از 95

نام تاپیک: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

  1. #41
    کاربر جدید آواتار myself™
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    تهران -لویزان
    پست
    3

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    نقل قول نوشته شده توسط M.Ehsanifar مشاهده تاپیک
    سلام
    من از نسخه 7 استفاده می کنم . خیلی دوست دارم از نسخه های 2006 و 2007 استفاده کنم ولی نمی تونم . چون این نسخه ها خیلی حجیم و بر روی سستم هایی مثل سیستم من (Athlon xp 2400 - ram 512) کند هستند و برای بالا اومدن خود دلفی یا کامپایل و اجراء یه برنامه ساده در داخل اون باید کلی انتظار کشید ( کلی در مقیاس نیم ثانیه ) .
    من خودم یه سیستم 2400Celeron با 768MB Ram دارم حوصله فدای کیفیت بشه چی میشه.

  2. #42

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    از ورژن 7 دلفی

  3. #43

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    من خودم از دلفی 7 استفاده می کنم
    البته امروز رفتم 2007 اش رو خریدم نزدیک 1 ساعت نصبش طول کشید، واسه کمپانی Code Gear بود پدر ویندوزم رو درآورد انقدر که حجمش زیاد بود شاید فقط 3 گیگ روی ویندوزم جا گرفت با اینکه مسیر نصبش هم درایوی غیر از ویندوز بود، اما خوب سرعت ویندوزم خیلی نیومد پایین.

    از لحاظ ظاهر تقریباً مثله دات نت 2005 به بعده.

  4. #44
    کاربر دائمی آواتار tefos666
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    Tehran , IRAN
    پست
    245

    Talking نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    IDE دلفی دات نت یه جورایی تقلید گرایی از مایکروسافت و کسانی که با رابط کاربری 7 عادت کرده بودند خیلی براشون سخته یکدفعه سوئیچ کنند رو نگارش دات نت درسته میشه با تغییر تنظیمات اینکار رو حل کرد ولی همه که بلد نیستند - ضمنا گذشته از اینها سنگینی دلفی دات نت بیشتر کاربران رو ترد کرده تا جذب - عدم پشتیبانی سایر شرکتهایی که قبلا کار میکردند به لحاظ توسعه کامپوننت های گذشته یکی دیگه از دلایلشه - درسته معایب زیاد داره ولی محاسن هم داره نمیشه از حقیقت فاصله گرفت - باور کنید اگر شرکت سازنده دلفی وارد مبحث اپن سورس بشه دلفی از قدرتمندترین زبانهای برنامه نویسی محسوب میشه چون هنوز با دلفی 7 کارایی میشه انجام داد که نگو و نپرس چه برسه به نگارشهای جدیدش که البته هنوز نوپا هستند البته منظورم با کایلیکس کارای عزیز نبود منظورم تو انتشار سورس هستش - میدونستید من تو یک سایت مربوط به آمار برترین زبانهای برنامه نویسی وقتی دیدم دلفی در سال 2007 تو رده شماره 13 قرار داره کمی ناراحت شدم ولی وقتی دیدم تو رده کار با اتوماسیون کارخانجات به لحاظ کار با سخت افزار تو رده 3 قرار داره به خودم کمی بالیدم (نگارش دلفی 7) که دارم سعی میکنم برنامه نویس دلفی باشم - به امید اون روز - اگر کسی به فکر آینده ما نیست بیایید خومون باشیم - به زودی !!! توسعه کد باز با پروژه های بزرگ به زبان دلفی - رایگان = همراه با آموزش (نرم افزار حقوق و دستمزد - حسابداری و آموزش تصویری و.... ) به زودی !!! بر روی سرور مجزا با محیطی کاملا مولتی مدیا - دانش خود را به اشتراک بگذاریم index0 = خبر افتاحیه به زودی در همین سایت اعلام خواهد شد

    success is doing , not wishing
    آخرین ویرایش به وسیله tefos666 : جمعه 04 مرداد 1387 در 11:18 صبح

  5. #45

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

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

  6. #46
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران- خ طوس
    پست
    35

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    اوایل دلفی 7 ( قربونش برم ) اما این اوخر دلفی 2007
    به نظرم خیلی دلفی 2007 بهتره فقط تنها مشکلم اینه که هنوز به اون نسبتی که واسه دلفی 7 کامپونت وحود داره واسه دلفی 2007 وجود نداره ...
    من اینقدر به دلفی علاقه دارم که تبدیل شده به تعصب .

  7. #47

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    سلام
    من از دلفی 7 و دلفی 2007 استفاده می کنم البته خیلی کم از دلفی 7
    الانم دارم کم کم به 2007 مهاجرت می کنم

    چند وقت پیش داشتم روی یه برنامه انبارداری کار می کردم
    یه مشکل با حرف ی فارسی داشتم هر چی گشتم راه حل پیدا نشد که نشد
    آخرشم با نصب دلفی 2007 و استفاده از اون به جای دلفی 7 مشکلم برطرف شد.

    دلفی 2007 و کلا این جدیدیا واقعا محیطشون خوب شده مثل ویژوال استودیو جدید شدن .
    در ضمن یک سری قابلیت ها و کمپوننت های با حال هم اضافه شدن + بعضی چیزای دیگه که تو کد نویسی به درد می خوره

  8. #48

    Thumbs up نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    اینو یادم رفت بگم
    کار با دلفی 7 واقعا وقت گیریه .
    امکانات اضافه شده در این ورژنای اخیر واقعا سرعت برنامه نویسی رو بالا می برن.
    امکاناتی مثل کوئری بیلدر برای ساخت کوئری های اس کیو ال
    امکان ساخت مدل از پروژتون برای درک بهتر از اون .
    امکان گروه بندی کد ها با استفاد از سارند ها و خیلی امکانات دیگه

    اینا رو یکی از دوستان به من داد مرورشون رو به همه توصیه می کنم حتی اونایی که دلفی 2007 دارن چیزهای جدید رو از وقت دلفی 7 تا دلفی 2007 بررسی کرده:

    New VCL features since Delphi 7
    New IDE features since Delphi 7
    New Delphi language features since Delphi 7
    Debugger Enhancements since Delphi 7

    What's new in Delphi 2006

  9. #49

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    همون که yashar666 گفت ولی یه برنامه نویس باید به روز کارکنه.

  10. #50

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    delphi 7 only

  11. #51

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    دوستان update یک چیز غیر قابل انکار هست. جدا از باگهای زیادی که دلفی در امنیت قفل های نرم افزارهای شما داره ولی در delphi 7 شما میتونید مدل لود برنامه رو تغییربدین. برای مثال اگه شما برنامه ای مینویسید که از vcl استفاده نمیکنه میتونید برید و call های بیخودی و سرعت گیر رو حذف کنید . در هر صورت در دلفی 2007 جلوی این کار تا حد زیادی گرفته شده

    در کل کار با 2007 خوبه ولی بستگی به خط مشی شما داره. در ضمن اگه خواستید برنامتون رو آپدیت کنید با عجله این کار رو انجام ندین چون برخی تفاوت ها در کامپایلر دلفی هست که باید به طور کامل در برخی موارد باگ یابی و آزمایش بشه.

    من ترجیح میدم برای کارهای GUI و دارای فرم از 2007 و برای کارهای سیستمی از 7 استفاده کنم چون در سیستم لودینگ برنامه تغییر آنچنانی ندیدم و فقط مواردی اضافه شده به 2007 که در کارهای سیستمی و برنامه های کوچک تفاوتی نداره

    البته این به این معنی نیست که visual C رو کنار بزارم ولی با توجه به قشنگی و راحتی در type ها و کار با رکوردها و همچنین متغیرها و کتابخانه هایی که از قبل داشتم دلفی زمان کمتری رو به خودش اختصاص میده

    ولی در کل من بشدت از عرضه نشدن نسخه 64 بیت دلفی نا امید شدم و احساس کردم این شرکت قابل اطمینان در بروز رسانی نیست.

  12. #52

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    جدا از باگهای زیادی که دلفی در امنیت قفل های نرم افزارهای شما داره
    کدوم باگ؟!!

    در delphi 7 شما میتونید مدل لود برنامه رو تغییربدین. برای مثال اگه شما برنامه ای مینویسید که از vcl استفاده نمیکنه میتونید برید و call های بیخودی و سرعت گیر رو حذف کنید . در هر صورت در دلفی 2007 جلوی این کار تا حد زیادی گرفته شده
    در هیچ نسخه ایی از دلفی، غیر از دلفی 8، شما مجبور نیستید از VCL استفاده کنید، و می تونید کل برنامه را از ابتدا با استفاده مستقیم از APIهای ویندوز بنویسید.

    مقایسه شما بین دلفی 7 و دلفی 2007 مقایسه ایی غیر فنی بود.

    ولی در کل من بشدت از عرضه نشدن نسخه 64 بیت دلفی نا امید شدم و احساس کردم این شرکت قابل اطمینان در بروز رسانی نیست.
    اگر وبلاگ توسعه دهندگان شرکت CodeGear را دنبال می کردید، متوجه میشدید که کلیات برنامه ایی که برای کامپایلر دلفی دارند، و زمان عرضه کامپایلر 64-بیتی مشخص شده. جزئیات آن هم به احتمال خیلی زیاد، یکی دو ماه دیگه در کنفرانس Delphi Live بطور رسمی اعلام میشه.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  13. #53
    کاربر تازه وارد آواتار بابک.م.
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    86

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    دوستان، بروزشدن جزء جدای ناپذیر دنیای نرم افزار هست.
    من شخصا به این نتیجه رسیدم که برای عقب نیافتادن از قافله آموختن بهتره تعصب و تکیه کردن به یک ابزار رو کنار بذارم و سعی کنم از هر طریقی چیز یاد بگیرم. دات نت در حال حاضر همه تکنولوژی های گذشته رو تو خودش جمع کرده، یه نگاه انداختن به اون بد نیست.
    دوران دلفی 7، وی بی 6 و ویژوال سی به اتمام رسیده. اینو به خوبی حتی توی محصولات جدید CodeGear هم خواهید دید.
    اینارو اینجا گفتم چون هنوز به دلفی علاقه دارم و پیشرفت هاشو دنبال می کنم.
    زنده باد Commodore 64
    زنده باد Turbo pascal 7
    زنده باد Delphi 7 , ....
    موفق باشید

  14. #54

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    آقای کشاورز در دلفی همانند ویژوال بیسیک همه event ها با آدرساشون ضبط میشه بخاطر همین با dcc دیکامپایل میشه.

    راجب VCL اگه به sysinit.pas and system.pas نگاه بندازید و EntryPoint برنامه رو با Debugger چک کنید متوجه میشید که Call های اضافی جهت لود VCL و قسمت های دیگه تو تمام برنامه های دلفی انجام میشه

    دوستان حرفه ای در امر کرک اینجا هستن. میتونید باهاشون مشورت کنید

    برای برنامه های 64 بیت هم افرادی مثل Madshi مجبور شدن نسخه 64 بیت رو با ویژوال C تهیه کنند چون چندین سال طول کشید تا دلفی بفکر مشتری هاش بیفته سری به سایت madshi.net بزنید و مقالات رو بخونید. در گوگل و سایت برلند هم سوالات و انتقادات از این قبیل زیاد هست

    اگه madshi به عنوان برنامه نویس قبول دارید تو فرومش سرچکنید میبینید که خودش هم برای کارهایی از قبیل هوک از دلفی 7 استفاده میکنه.

    با تشکر
    آخرین ویرایش به وسیله mithridates : سه شنبه 11 فروردین 1388 در 14:54 عصر

  15. #55

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    این هم یادم رفت بگم تو دلفی 7 میشه SysInit و System رو تغییر داد ولی تو 2007 به راحتی 7 نیست و دردسر های بیشتری داره

  16. #56

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    در دلفی همانند ویژوال بیسیک همه event ها با آدرساشون ضبط میشه بخاطر همین با dcc دیکامپایل میشه.
    این باگ نیست! Eventها در دلفی بصورت method pointer پیاده سازی شدند. این چیزی هست که طراحان دلفی براش طراحی کردند. این حرف شما مثل این هست که کسی بگه IL و Reflection در دات نت باگ هستند، چون با وجود این دو قابلیت، به راحتی می توان کدهای دات نت را Decompile کرد!
    برای این مسائل هم ابزارهای مختلفی برای Packکردن برنامه یا به هم ریختن کد وجود دارند.

    راجب VCL اگه به sysinit.pas and system.pas نگاه بندازید و EntryPoint برنامه رو با Debugger چک کنید متوجه میشید که Call های اضافی جهت لود VCL و قسمت های دیگه تو تمام برنامه های دلفی انجام میشه
    اتفاقا من فایل های system.pas و sysInit.pas مربوط به دلفی 7 و دلفی 2009 را با هم مقایسه کردم، ولی تفاوتی که شما گفتید، در آنها وجود نداره!
    عمده تغییراتی که این دو فایل نسبت به دلفی 7 کردند، اینها هستند:
    1- اصلی ترین تغییرات در دلفی 2009 اضافه شدن پشتیبانی از یونیکد به RTL دلفی هست، که شامل اضافه شدن Typeهای مربوطه، توابع جدید پشتیبانی از یونیکد، و تغییرات در توابع موجود برای پشتیبانی از یونیکد میشه.
    2- اضافه شدن پشتیبانی از FastMM به عنوان Memory Manager پیش فرض.
    3- پشتیبانی از Class Helpers
    4- پشتیبانی از Enumerators
    5- تغییرات در Tobject برای افزودن یک سری قابلیت های جدید، مثل متد Equal، متد ToString، و غیره.
    6- پشتیبانی از Monitor برای همزمان سازی Threadها در داخل TObject. این یکی از قابلیت های مربوط به Delphi Parallel Library هست. ظاهرا سایر قابلیت های DPL در نسخه بعدی دلفی ارائه میشه.
    7- تعویض برخی از توابع RTL دلفی با توابع FastCode که کارایی بالاتری از توابع دلفی داشتند.
    8- اضافه کردن یک سری Data Type جدید.

    در این کدها، چیزی از VCL به System.pas یا SysInit.pas اضافه نشده. امکانات اضافه شده هم نقش مهمی در افزایش کارایی برنامه تولید شده دارند، مثل توابع FastCode که نسبت به توابع RTL دلفی بسیار Optimized هستند، یا استفاده از FastMM به عنوان مدیر حافظه که از همه جهت کاراتر و بهینه تر از مدیر حافظه پیش فرض دلفی در نسخه های قبل از دلفی 2007 هست.

    برای برنامه های 64 بیت هم افرادی مثل Madshi مجبور شدن نسخه 64 بیت رو با ویژوال C تهیه کنند چون چندین سال طول کشید تا دلفی بفکر مشتری هاش بیفته سری به سایت madshi.net بزنید و مقالات رو بخونید.
    توسعه دهندگان دلفی بر اساس نظرسنجی هایی که از کاربرانشان انجام دادند، امکانات جدید را به دلفی اضافه کردند. یونیکد پرطرفدارترین قابلیتی بود که کاربران دلفی اصرار به داشتن آن داشتند، به همین دلیل هم همچین قابلیتی در اولویت بالاتری از کامپایل کد 64 بیتی قرار گرفت. پشتیبانی از 64 بیتی در برنامه های محدودی کاربرد داره، و بسیاری از کاربران دلفی به آن نیاز مبرم ندارند. به عنوان مثال، وقتی اعلام شد عرضه کامپایلر 64 بیتی دلفی با تاخیر همراه خواهد بود، تا تیم توسعه دهنده امکانات جدیدی به کامپایلر دلفی اضافه کند، اکثر کاربران بجای مخالفت با این تاخیر، از آن استقبال کردند، و فقط عده محدودی از این تصمیم ناراحت شدند. البته اون ها هم اکثرا نیاز به پردازش 64 بیتی نداشتند، بلکه بیشتر مشکلشان این بود که برای توسعه برخی قابلیت ها در ویندوز 64 بیتی، مثل نوشتن Shell Extension، نیاز به کامپایلر 64 بیتی داشتند. اون کاربرها هم می تونند فعلا از Free Pascal برای کامپایل کد 64 بیتی استفاده کنند، تا نسخه اولیه کامپایلر 64 بیتی دلفی در نیمه سال 2009 عرضه بشه.

    در گوگل و سایت برلند هم سوالات و انتقادات از این قبیل زیاد هست
    بورلند؟! خدا بیامرزه بورلند رو! ما داریم از CodeGear صحبت می کنیم، نه از بورلند.

    این هم یادم رفت بگم تو دلفی 7 میشه SysInit و System رو تغییر داد ولی تو 2007 به راحتی 7 نیست و دردسر های بیشتری داره
    اصولا قرار نیست شما فایل های Runtime دلفی را تغییر بدید، غیر از اینکه هدفتان اصلاح یک باگ باشه!


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


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  17. #57

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    جدا از باگهای زیادی که دلفی در امنیت قفل های نرم افزارهای شما داره
    دوستان حرفه ای در امر کرک اینجا هستن. میتونید باهاشون مشورت کنید
    رفیق، جدا" دیکامپایل شدن رو باگ میدونی؟ اونهم باگ در امنیت قفل ؟
    بهتره تعصب و تکیه کردن به یک ابزار رو کنار بذارم و سعی کنم از هر طریقی چیز یاد بگیرم
    یادش بخیر، اینپرایز میگفت مشکلی که ما ایرانی ها داریم اینه که فقط یک چیز رو خوب میدونیم و بقیه چیزها رو نفی میکنیم. مثلا فقط ویندوز رو قبول داریم و لینوکس رو با همه جور امکانات و قابلیتها، بد میدونیم.
    الان هم همین جریان تو این تاپیک راه افتاده. یکی میگه Only Delphi 7... یکی میگه "دات نت"... بقیه هم از وجود باگ و اسامی کامپوننتهای مورد استفاده صحبت کردن و البته صحبتهای غیرفنی که صرفا تصور فرد به حساب میاد، به وفور یافت میشه.

  18. #58

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    نکنه شما همه انسان هارو دیتابیس کار میبینی؟ من راجب احتیاجات خودم که نزدیک به madshi هست نظر دادم. حرفی از دیتابیس نزدم

    اون پکری که شما ازش حرف میزنی هیچ امنیتی نداره. هر روز هزاران پکر قدرتمند آنپک میشه

    راجب System and SysInit من Edit منظورم هست نه امکانات. کاش نگاه میکردی میدیدی چقدر فانکشن بیخودی داره. Edit هم الزامی هست .یه dll یا exe تو دلفی بنویس که توش user32.dll نباشه یا دستورات رجیستری نباشه کلی کارای غیر ضروری انجام میده. حالا بگو چه احتیاجی به این کار هست تا بگم!

    من تو قفلی که طراح میکردم به وضوح دیدم Event باگ هست یا نه! چون آدرس EntryPoint برنامه های دلفی بعد از جدول Event ها هست. راجب چیزی که نمیدونید نظر ندید چون همه برنامه های دلفی رو میشه به راحتی از رو همین جدول و کد های ثابتش آنپک کرد. چونOEP به راحتی پیدا میشه. من تو قفلی که طراحی کردم مجبور شدم بخاطر همین باگ کلی از EntryPoint برنامه های کاربرارو پاک کنم و تو یه قسمت دیگه حافظه اجرا کنم

    راجب madshi و... هم من از همون اول که پست دادم راجب دیتابیس صحبت نکردم گفتم هوک و برنامه های سیستمی و کوچک

    اینکه طرفدار داشت 64 بیت یا نه هم این حرف خیلی مسخره هست برای این شرکت چون مایکروسافت چندین سال زود تر ویندوز 64 بیت رو داده و یک الزام هست که یه شرکت نرم افزاری کامپایلر دستش برسه و باگ های برنامه خودشو بگیره نه اینکه بعد از چند سال تازه کامپایلر دستش برسه. این همه برنامه ها از هوک و کارهای دیگه استفاده میکنند. بجز پول بروز بودن هم مهم هست. unicodeمدت ها قبل باید آماده میشد.

    هوک IAT هم جوابگو نبوده چون بعد از پک از کار می افتاده پس کل نرم افزارهای استفاده از هوک رو لنگ کرد. راجب برنامه هایی که از هوک استفاده میکنند هم احتیاج به توضیح نیست.

    راجب دات نت هم باز بودن سورسش خیلی خطرناک هست. کلی از سایت هایی که با .net بودن و هک میکردن دوستانم میدادن به من. من سورس رو در میاوردم راحت حتی اونهایی که پک شده بودن و راحت سایت هاشون هک میشدن و کل کدهاشونم لو میرفت

    برای مثال این لیست dll های ایرانسل هست که یک سال پیش از تو هاستش دانلود کردیم و سورسش رو برداشتیم

    irancell.ir/cp/bin/cuteeditor.dll
    irancell.ir/cp/bin/cuteeditor.lic
    irancell.ir/cp/bin/IranCell.CMS.AdminUI.dll
    irancell.ir/cp/bin/IranCell.CMS.BasicClasses.dll
    irancell.ir/cp/bin/IranCell.CMS.BI.Access.dll
    irancell.ir/cp/bin/IranCell.CMS.BI.Entity.dll
    irancell.ir/cp/bin/IranCell.CMS.Coverage.Access.dll
    irancell.ir/cp/bin/IranCell.CMS.Coverage.Entity.dll
    irancell.ir/cp/bin/IranCell.CMS.Dealer.Access.dll
    irancell.ir/cp/bin/IranCell.CMS.Dealer.Entity.dll
    irancell.ir/cp/bin/IranCell.CMS.FeedBack.Access.dll
    irancell.ir/cp/bin/IranCell.CMS.FeedBack.Entity.dll
    irancell.ir/cp/bin/IranCell.CMS.Job.Access.dll
    irancell.ir/cp/bin/IranCell.CMS.Job.Entity.dll
    irancell.ir/cp/bin/IranCell.CMS.Menu.Access.dll
    irancell.ir/cp/bin/IranCell.CMS.Menu.Entity.dll
    irancell.ir/cp/bin/IranCell.CMS.Security.Access.dll
    irancell.ir/cp/bin/IranCell.CMS.Security.Entity.dll
    irancell.ir/cp/bin/RahrowIT.ApplicatioBlocks.Data.dll
    irancell.ir/cp/bin/RahrowIT.PersianDate.dll

    c:\admin\irancell.ir\irancell.ir\www\cp\Coverage\C overage_Manager
    add_area.aspx
    banner.aspx
    edit_area.aspx
    excel.aspx
    homepage.aspx
    list_areas.aspx
    top_Coverage.aspx

    چه فایده داره این همه زحمت آدم بکشه آخر سورسش رو کس دیگه برداره؟

    نمیگم دانت بده. خیلی هم خوبه ولی واقعا نقطه ضعف هست

    من نمیدونم چرا شما انقدر سر جنگ دارید. همون پست اول آقای کشاورز اشتباه بود که گفت غیر فنی. اگه متوجه نشده میتونست بگه بیشتر توضیح بده یا تفاوت های مهم تر که فرق هارو بیشتر نشون بده بگو. من طبق سر رشته خودم و احتیاجاتم نظرمو دادم مثل دوستان دیگر . پست ها و جوابهای من که نزدیک 70 تا جواب تو 2 هفته به کاربرای این سایت دادم ارزش داشت که بگه بیشتر توضیح بده. ولی خوب ادب و احترام از یاد دوستان رفته
    آخرین ویرایش به وسیله mithridates : چهارشنبه 12 فروردین 1388 در 18:10 عصر

  19. #59

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    نکنه شما همه انسان هارو دیتابیس کار میبینی؟ من راجب احتیاجات خودم که نزدیک به madshi هست نظر دادم. حرفی از دیتابیس نزدم
    لزومی نداشت از دیتابیس صحبت کنید، گفتید:
    اگه madshi به عنوان برنامه نویس قبول دارید تو فرومش سرچکنید
    جوابی هم که دادم این بود که Madshi در هر زمینه نمیتونه یک مرجع باشه که من بخوام با جستجو در فورومش نتیجه گیری کنم که یک نسخه از دلفی خوب هست یا بد! Madshi در یک زمینه خاص فعالیت میکنه، نوع دیدگاهش نسبت به دلفی هم فقط در همون زمینه قابل توجه هست. برای مقایسه یک محصول چند منظوره مثل دلفی، نمیشه فقط به یک حوزه محدود استناد کرد. برای همین هم از برنامه نویسی دیتابیس مثال زدم که یکی از کاربردهای بسیار رایج بین برنامه نویسان دلفی هست، و شخصی مثل Madshi که ازش به عنوان Reference نام بردید، چیزی در این مورد نمیدونه؛ یعنی نمیتونه دیدگاه جامع ایی درباره دلفی داشته باشه.

    من تو قفلی که طراح میکردم به وضوح دیدم Event باگ هست یا نه! چون آدرس EntryPoint برنامه های دلفی بعد از جدول Event ها هست. راجب چیزی که نمیدونید نظر ندید چون همه برنامه های دلفی رو میشه به راحتی از رو همین جدول و کد های ثابتش آنپک کرد. چونOEP به راحتی پیدا میشه. من تو قفلی که طراحی کردم مجبور شدم بخاطر همین باگ کلی از EntryPoint برنامه های کاربرارو پاک کنم و تو یه قسمت دیگه حافظه اجرا کنم
    پس در تعریف باگ مشکل داری! باگ چیزی نیست که در کار شما ایجاد مشکل بکنه. با این دیدگاه، باید IL در دات نت هم باگ باشه، File Sharing در ویندوز هم باید باگ باشه، امکان اضافه کردن درایور به کرنل ویندوز هم باید باگ باشه؛ چون هر کدوم از این قابلیت ها مشکلاتی را برای نویسنده یک محافظ نرم افزار، یا آنتی ویروس بوجود میارند!
    باگ یعنی نرم افزار مربوطه نتونه کاری رو که براش در نظر گرفته شده را به درستی انجام بده. Eventهای دلفی هم به همون شکل طراحی شدند، نه اینکه هدف از طراحی آنها چیز دیگه ایی بوده باشه، و اشتباها این نتیجه حاصل شده باشه!
    تو در ساخت قفل به مشکل برخوردی، دلیل بر باگ در یک قابلیت نیست.
    اون پکری که شما ازش حرف میزنی هیچ امنیتی نداره. هر روز هزاران پکر قدرتمند آنپک میشه
    خب بشه! آدم باید عقلش مشکل داشته باشه که فکر کنه میتونه برای نرم افزار خودش حفاظت 100% ایجاد بکنه! شرکت های بزرگ هم برای کرک نشدن نرم افزارهایشان قفل درست نمی کنند، بلکه برای سخت تر کرک شدن نرم افزارشان قفل تولید می کنند.

    اینکه طرفدار داشت 64 بیت یا نه هم این حرف خیلی مسخره هست برای این شرکت چون مایکروسافت چندین سال زود تر ویندوز 64 بیت رو داده و یک الزام هست که یه شرکت نرم افزاری کامپایلر دستش برسه و باگ های برنامه خودشو بگیره نه اینکه بعد از چند سال تازه کامپایلر دستش برسه. این همه برنامه ها از هوک و کارهای دیگه استفاده میکنند. بجز پول بروز بودن هم مهم هست. unicodeمدت ها قبل باید آماده میشد. حالا شما کارمند اونا هستی که دفاع میکنی ؟ یادمه خود شما یا دوستان گفتین متوجه سیاست های غلطشون شدن
    یک شرکت بر اساس منابعی که داره، کارهایی که میتونه را اولویت بندی میکنه، و براساس اولویت های تعیین شده آن کارها را انجام میده. CodeGear منابعی برای اینکه همه قابلیت های مورد نیاز کاربرانش را یک جا آماده کنه، نداشت، پس براساس اولویت کاربرانش، آنها را یکی یکی آماده کرد.
    اونی که سیاست های اشتباهی داشت، Borland بود، و بحثش از CodeGear جدا ست.
    راجب System and SysInit من Edit منظورم هست نه امکانات. کاش نگاه میکردی میدیدی چقدر فانکشن بیخودی داره. Edit هم الزامی هست .یه dll یا exe تو دلفی بنویس که توش user32.dll نباشه یا دستورات رجیستری نباشه کلی کارای غیر ضروری انجام میده. حالا بگو چه احتیاجی به این کار هست تا بگم!
    عجب! در پست قبلی که مدعی بودید System.pas و SysInit.pas کدهای VCL را لود می کنند. الان نظرتون تغییر کرد، و منظورتون شد فقط Edit کردند!

    شما برو به یکی که فکر میکنی چیزی در زمینه توسعه نرم افزار سرش میشه، بگو من برای توسعه برنامه هام، هر بار فایل های Runtime زبان برنامه نویسی ام را ویرایش می کنم، ببین چی بهت میگه!
    اگر هم دوست داشتی، توی کامنت وبلاگ یکی از توسعه دهندگان دلفی یا از طریق ای میل، بهشون بگو که نمیتونی فایل System.pas را به راحتی ویرایش کنی، ببین طرف چه جوابی بهت میده.
    ویرایش فایل سورس کدهای RTL دلفی هیچ وقت به عنوان یک قابلیت مطرح نبوده، و CodeGear هم هیچ وقت این سورس ها را برای ویرایش کاربر منتشر نکرده. اگر شما خواستی این سورس ها را ویرایش کنی، خارج از کارکردی که CodeGear برای آن سورس ها تعریف کرده از آنها استفاده کردی، و نمیتونی ازشون انتظار داشته باشی که سرویسی خارج از اون چیزی برایش تعریف شده، بهت بده.

    شاید هم ایشون دوست دارن فقط مدیران فرومشون جواب کاربرهارو بدن. در هر صورت این سیاست کاری سایت ایشون هست. من دخالتی نمیکنم.
    اینجا فوروم من نیست؛ من فقط مدیرش هستم. هر چند این هم نظر شما ست، و شما می تونید نظر خودتون رو برای خودتون داشته باشید.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  20. #60

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    بورلند؟! خدا بیامرزه بورلند رو! ما داریم از CodeGear صحبت می کنیم، نه از بورلند.
    اونی که سیاست های اشتباهی داشت، Borland بود، و بحثش از CodeGear جدا ست.
    راجب بورلند و ... من از اول حرف از بورلند زدم که شما اون جواب رو دادی. من از اول راجب سیاست های قدیم دلفی و اینکه مدت ها قبل باید انجام میشد صحبت کردم

    جوابی هم که دادم این بود که Madshi در هر زمینه نمیتونه یک مرجع باشه که من بخوام با جستجو در فورومش نتیجه گیری کنم که یک نسخه از دلفی خوب هست یا بد! Madshi در یک زمینه خاص فعالیت میکنه، نوع دیدگاهش نسبت به دلفی هم فقط در همون زمینه قابل توجه هست. برای مقایسه یک محصول چند منظوره مثل دلفی، نمیشه فقط به یک حوزه محدود استناد کرد. برای همین هم از برنامه نویسی دیتابیس مثال زدم که یکی از کاربردهای بسیار رایج بین برنامه نویسان دلفی هست، و شخصی مثل Madshi که ازش به عنوان Reference نام بردید، چیزی در این مورد نمیدونه؛ یعنی نمیتونه دیدگاه جامع ایی درباره دلفی داشته باشه.
    madshi راجب بحثی که خودم کردم مرجع قرار دادم. برنامه های هوک و سیستمی و کوچک

    راجب اینکه Event ها باگ حساب میشه یانه. برداشت من از باگ راجب نقطه ضعف های برنامه از دیدگاه امنیتی بود نه راجب باگ برنامه های دلفی. حالا اگه ذکر نشده میشد پرسید تا منظورم رو بهتر برسونم

    من هم به مشکل بر نخوردم. خوش بختانه با فایل های کامپایل شده اونقدر ور رفتم که بتونم جای این Event هارو تو دلفی تغییر بدم

    خب بشه! آدم باید عقلش مشکل داشته باشه که فکر کنه میتونه برای نرم افزار خودش حفاظت 100% ایجاد بکنه! شرکت های بزرگ هم برای کرک نشدن نرم افزارهایشان قفل درست نمی کنند، بلکه برای سخت تر کرک شدن نرم افزارشان قفل تولید می کنند.
    فکر میکنم شما معنی پکر رو نمیدونید. پکر به تنهایی امنیت نداره.

    این باگ نیست! Eventها در دلفی بصورت method pointer پیاده سازی شدند. این چیزی هست که طراحان دلفی براش طراحی کردند. این حرف شما مثل این هست که کسی بگه IL و Reflection در دات نت باگ هستند، چون با وجود این دو قابلیت، به راحتی می توان کدهای دات نت را Decompile کرد!
    برای این مسائل هم ابزارهای مختلفی برای Packکردن برنامه یا به هم ریختن کد وجود دارند.
    اکه منظورتون قفل ها هستن. راجب این ها هم چه ربطی به بحث من داره! شما گفتی از پکر برای کد های دات نت میشه استفاده کرد. این که کسی که از پکر!!!! برای امنیت برنامه استفاده میکنه یا نه و این که احمق هست یا نه شما باید تعیین کنی!

    اگه خودتون از حرف خودتون و امنیت دات نت مطمئن نیستین به من ربطی نداره

    اینکه یه دات نت کار دوست داره OpenSource باشه برنامش هم بازم به خودش مربوطه از بحث ما خارج هست

    برای برنامه های امنیتی معمولا از این واژه ها استفاده میشه

    Cryptor, Lock, Protector,...

    Advanced Windows software protection system, developed for software developers who wish to protect their applications against advanced reverse engineering and software cracking

    Powerful code obfuscation system that helps developers to protect their sensitive code areas, in applications and device drivers, against Reverse Engineering


    عجب! در پست قبلی که مدعی بودید System.pas و SysInit.pas کدهای VCL را لود می کنند. الان نظرتون تغییر کرد، و منظورتون شد فقط Edit کردند!
    من از اول هم گفتم Edit . حرفم راجب VCL ها دلیلم برای Edit بود ! چون تو برنامه من نباید dll بجز kernel32 استفاده میشد. پس برای من یک نیاز هست



    { CallTerminateProcs is called by VCL when an application is about to }
    { terminate. It returns True only if all of the functions in the }
    { system's terminate procedure list return True. This function is }
    { intended only to be called by Delphi, and it should not be called }
    { directly. }



    // SystemThreadFuncProc and SystemThreadEndProc are set during the startup
    // code by the C++‎ RTL when running in a C++‎Builder VCL application.



    {$IFDEF MSWINDOWS}
    function GetKeyboardType(nTypeFlag: Integer): Integer; stdcall;
    external user name 'GetKeyboardType';
    function _isNECWindows: Boolean;
    var
    KbSubType: Integer;
    begin
    Result := False;
    if GetKeyboardType(0) = $7 then
    begin
    KbSubType := GetKeyboardType(1) and $FF00;
    if (KbSubType = $0D00) or (KbSubType = $0400) then
    Result := True;
    end;
    end;
    const
    HKEY_LOCAL_MACHINE = $80000002;
    // workaround a Japanese Win95 bug
    procedure _FpuMaskInit;
    const
    KEY_QUERY_VALUE = $00000001;
    REG_DWORD = 4;
    FPUMASKKEY = 'SOFTWARE\Borland\Delphi\RTL';
    FPUMASKNAME = 'FPUMaskValue';
    var
    phkResult: LongWord;
    lpData, DataSize: Longint;
    begin
    lpData := Default8087CW;
    if RegOpenKeyEx(HKEY_LOCAL_MACHINE, FPUMASKKEY, 0, KEY_QUERY_VALUE, phkResult) = 0 then
    try
    DataSize := Sizeof(lpData);
    RegQueryValueEx(phkResult, FPUMASKNAME, nil, nil, @lpData, @DataSize);
    finally
    RegCloseKey(phkResult);
    end;
    Default8087CW := (Default8087CW and $ffc0) or (lpData and $3f);
    end;


    چرا این کدها و خیلی کدهی دیگه برای برنامه من باید اجرا بشن؟

    دیدگاه شما از update فقط در زمینه برنامه های خودتون هست. حرف های بی ربط و بی پایه و اساس رو مطرح نکنید بهتره

    اینکه باید بشه یا نباید بشه به حرف من ربطی نداره. من دلیل خودم برای استفاده از delphi 7 رو گفتم.

    شما حرف ساده من رو به برنامه های دیگه دلفی ربط دادی. من گفتم update یک نیاز هست و باید از delphi 2007 استفاده کرد ولی من به این دلایل از delphi 7 هم استفاده میکنم

    حالا هدفتون چی هست خدا میدونه
    آخرین ویرایش به وسیله mithridates : چهارشنبه 12 فروردین 1388 در 20:23 عصر

  21. #61

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    شما برو به یکی که فکر میکنی چیزی در زمینه توسعه نرم افزار سرش میشه، بگو من برای توسعه برنامه هام، هر بار فایل های Runtime زبان برنامه نویسی ام را ویرایش می کنم، ببین چی بهت میگه!
    اینکه من برای update فایل runtime عوض کنم چه ربطی داره؟ لازم دارم! میتونم و انجام میدم

    نکنه شما هر کاری که لازم داری ولی اگه از کسی بپرسی طرف بگه کار درستی نیست از انجامش منصرف میشی؟ یا میشنی هزاران خط برنامه رو تبدیل به یه زبون دیگه میکنی؟

    به دیگران چه ربطی داره که من چی کار میکنم! چه کسی بیشتر از خودم راجب برنامه خودم صلاحیت تشخیص داره؟ مهم این هست که برنامه من تو همه ویندوزها درست و بدون ایراد و با سرعت بالا اجرا بشه که میشه

    از اونجایی که هوک خیلی حساس هست و در برخی پروژه ها برنامه ما باید قبل از فایل EXE لود شه استفاده از user32 و Dll های دیگه باعث گرفته شدن برخی فضاهای حافظه میشه که ایجاد ایراد میکنه. پس نیاز دارم تغییر بدم

    اگر هم دوست داشتی، توی کامنت وبلاگ یکی از توسعه دهندگان دلفی یا از طریق ای میل، بهشون بگو که نمیتونی فایل System.pas را به راحتی ویرایش کنی، ببین طرف چه جوابی بهت میده.
    قبلا گفته شده و اونها تغییر دادنش رو آموزش دادن

    احتمالا یادشون رفته اول از شما بپرسن لازم هست یا نه بعد آموزش بدن!

    شاید هم یادشون رفته بوده با کارشناس update نرم افزار صحبت کنند !!!!!!! ( ربطش رو خدا میدونه )
    آخرین ویرایش به وسیله mithridates : چهارشنبه 12 فروردین 1388 در 20:27 عصر

  22. #62

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    اینکه من برای update فایل runtime عوض کنم چه ربطی داره؟ لازم دارم! میتونم و انجام میدم

    نکنه شما هر کاری که لازم داری ولی اگه از کسی بپرسی طرف بگه کار درستی نیست از انجامش منصرف میشی؟ یا میشنی هزاران خط برنامه رو تبدیل به یه زبون دیگه میکنی؟

    به دیگران چه ربطی داره که من چی کار میکنم! چه کسی بیشتر از خودم راجب برنامه خودم صلاحیت تشخیص داره؟ مهم این هست که برنامه من تو همه ویندوزها درست و بدون ایراد و با سرعت بالا اجرا بشه که میشه
    مطلب روشنی هست، ولی وقتی کسی میخواد وانمود کنه که چیزی رو متوجه نمیشه، نمیشه به زور متوجه اش کرد!
    یک برنامه نویس میتونه Spaghetti Code بنویسه، و بگه؛ می تونم، می نویسم! اما اگر بره تحقیق بکنه، متوجه میشه که چرا بهش گفته میشده که نباید Spaghetti Code بنویسه. یک برنامه نویس دلفی هم میتونه سورس RTL دلفی را تغییر بده، اما اگر تحقیق کنه، متوجه میشه که چرا نباید این کار را بکنه، و معایب این کار چی هستند. تازه اگر زبان برنامه نویسی اش چیزی مثل دلفی باشه که کدهای RTL اش در دسترس کاربر قرار داره!

    اصولا ساده ترین راه همیشه بهترین راه نیست.

    قبلا گفته شده و اونها تغییر دادنش رو آموزش دادن

    احتمالا یادشون رفته اول از شما بپرسن لازم هست یا نه بعد آموزش بدن!
    بخاطر اینه که نفهمیدی به چه منظوری آموزش دادند! هدف از آموزش چگونگی تغییر در سورس RTL دلفی این نبود که هر کاربر برای هر پروژه ایی، یک کپی جدید از فایل های RTL درست کنه، و شروع به دستکاری آنها بکنه! بلکه، چگونگی تغییر در سورس RTL آموزش داده میشه، تا اگر کاربری باگی در RTL پیدا کرد، بتونه تا ارائه Bug fix، خودش یک Work around موقت بنویسه، و پروژه اش معطل رسیدن Bug fix نشه.

    کدهایی که تو و امثال تو با تغییر سورس RTL به آنها می رسیدید، بدرد خودتان میخوره، چون اگر قرار باشه برنامه نویس دیگه ایی وظیفه نگهداری کد را برعهده بگیره، یا کد به هر دلیلی برای دیگران ارسال بشه، فرد یا شرکت دریافت کننده سورس با کدی مواجه میشه که با کدهای RTL دلفی خودش سازگار نیست. اون وقت یا باید بی خیال مفاهیمی مثل Code Reusability بشه، و برای هر سورسی که از تو دریافت میکنه، یک کپی جدید از سورس های RTL دلفی را در مسیرهای جداگانه ایی در Repository نگهداری کنه، یا تغییرات را مستقیما در سورس RTL دلفی خودش وارد کنه، و باعث ایجاد عدم سازگاری در سایر کدهای خودش و بخصوص کدهای کامپوننت های استاندارد و 3rd party ایی که استفاده می کند، بشه! اگر کدی که از تو دریافت کرده کد یک ماجول یا یک کامپوننت باشه که اوضاع از این هم بدتر میشه، چون یک بخش از برنامه با یک RTL کامپایل شده، سایر بخش ها با یک RTL دیگه! حالا اینها جدای از این هست که تغییرات اعمال شده توسط تو، به طور کامل با سایر کدهای RTL دلفی تست نشده، و ممکن هست خواسته یا ناخواسته انواع و اقسام باگ های عجیب و غریب را برای پروژه های آن فرد به ارمغان بیاره!

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


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  23. #63

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

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


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

    راجب اینکه Event ها باگ حساب میشه یانه. برداشت من از باگ راجب نقطه ضعف های برنامه از دیدگاه امنیتی بود نه راجب باگ برنامه های دلفی. حالا اگه ذکر نشده میشد پرسید تا منظورم رو بهتر برسونم
    برداشت شما از باگ هم یک برداشت من در آوردی هست، و یک تعریف استاندارد برای باگ محسوب نمیشه. می تونید به یک دیکشنری یا دایره المعارف مراجعه کنید، و ببینید در توضیح مدخل Bug در سیستم های کامپیوتری چی نوشته شده. مخاطب شما با خواندن جمله شما به تعریف من در آوردی شما از Bug نمیرسه!

    در واقع شما دائما تفسیرهایی از جملات خودتان ارائه می کنید.

    من از اول هم گفتم Edit . حرفم راجب VCL ها دلیلم برای Edit بود !
    عین جمله شما این هست: "راجب VCL اگه به sysinit.pas and system.pas نگاه بندازید و EntryPoint برنامه رو با Debugger چک کنید متوجه میشید که Call های اضافی جهت لود VCL و قسمت های دیگه تو تمام برنامه های دلفی انجام میشه"
    من چیزی درباره Edit در آن نمی بینم. احتمالا این را هم باید مخاطب خودش حدس بزند ;-)

    حرفم راجب VCL ها دلیلم برای Edit بود ! چون تو برنامه من نباید dll بجز kernel32 استفاده میشد. پس برای من یک نیاز هست
    اینهایی که گفتید، و نمونه هایی که آوردید، ربطی به VCL ندارند. شاید در تعریف VCL مشکل دارید؛ قبلا یک توضیحی درباره مفهوم VCL در لینک زیر ارائه کردم، که دوباره اینجا تکرار نمی کنم:
    https://barnamenevis.org/showthread.php?t=151716

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

    چرا این کدها و خیلی کدهی دیگه برای برنامه من باید اجرا بشن؟
    اولا در بالا توضیح دادم که کدها مربوطه فقط در صورتی کامپایل میشند که در سورس ارجاعی به آنها وجود داشته باشه، و گرنه اصلا کامپایل نمیشند. منظور از سورس هم سورس هایی هست که شما می نویسید + سورسی که RTL دلفی برای عملکرد خودش به آن نیاز دارد. یعنی یک کد برای کامپایل شدن یا باید مستقیما از سورس شما ارجاعی داشته باشد، یا RTL دلفی بصورت Internal برای انجام برخی از وظایفش به آن ارجاع داده باشد. پس اگر کدی در یک پروژه بی مصرف باشد، عملا توسط کامپایلر دلفی کامپایل نمیشه.
    اینکه برنامه شما نیاز داشت که فقط kernel32 را لود کند، یک نیاز بسیار خاص و محدود محسوب میشه؛ یعنی حتی نیم درصد پروژه های نوشته شده با دلفی هم همچین پیشنیازی را لازم ندارند. پس مشکل شما بیشتر از آنکه یک موضوع عمومی باشد، یک موضوع بسیار خاص محسوب میشه.

    دیدگاه شما از update فقط در زمینه برنامه های خودتون هست. حرف های بی ربط و بی پایه و اساس رو مطرح نکنید بهتره
    Update؟!! شما حالت خوبه؟! در پست های من چیزی درباره Update دیدی؟!


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  24. #64

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    اصولا ساده ترین راه همیشه بهترین راه نیست.
    لطفا از راه های سخت که بلدین کاری کنید دلفی dll هاش به kernel32 محدود بشه !!!

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

    دوما شما فکر میکنم اول بهتره یاد بگیری که تو Search Path اگه تعریف کنی راحت رو هر سیستمی اجرا میشه. و هر کسی میتونه کامپایل کنه


    من در پست های شما جایی ندیدم که از بورلند حرفی زده باشید
    اگر نگفته بودم چرا گفتی خدا بورلند رو بیامرزه !

    در مورد Bug هم من از اول گفتم باگ در زمینه امنیت نرم افزارهاتون

    من چیزی درباره Edit در آن نمی بینم. احتمالا این را هم باید مخاطب خودش حدس بزند
    من این رو در اولین پست گفتم

    در delphi 7 شما میتونید مدل لود برنامه رو تغییربدین.
    شما آخرین حرفامونو کپی میکنی بعد میگی نمیبینم !!!

    خوب فکر میکنم روشن و واضح توضیح دادم

    در نمونه هایی که آوردید، در کامنت یک مورد از آنها نوشته شده که این تابع توسط VCL فراخوانی می شود. باید دقت کنید که کامپایلر دلفی کدهایی که در هیچ جای برنامه از آنها استفاده نشده باشد را در برنامه کامپایل نمی کند،
    پس اگر کدی در یک پروژه بی مصرف باشد، عملا توسط کامپایلر دلفی کامپایل نمیشه.
    این دیگه بمب خنده از طرف شماست. من از اول گفتم دلفی خودش سر خود موقع لود این فانکشن هارو صدا میزنه! یه پروژه خالی بدون هیچ فرم و یونیت بساز بعد لیست dll هاشو ببین. فقط نگو که استفاده نمیکنه ولی فانکشن هاش تو IAT میاد! چون دلفی اگه از کدی استفاده نکنه api هاش هم تو IAT نمیاره

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


    Update؟!! شما حالت خوبه؟! در پست های من چیزی درباره Update دیدی؟!
    اوه راست میگید باید میگفتم کارشناس توسعه نرم افزار

  25. #65

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

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

    دوما شما فکر میکنم اول بهتره یاد بگیری که تو Search Path اگه تعریف کنی راحت رو هر سیستمی اجرا میشه. و هر کسی میتونه کامپایل کنه
    حرف های خنده دار جالبی میزنی! هنوز نفهمیدی که بحث نگهداری از یک نرم افزار، یا تست یک نرم افزار امری جدای از کامپایل آن نرم افزار هست؟! نکنه فکر کردی هر کدی که کامپایل میشه، از نظر نگهداری و تست مشکلی نداره!
    از طرف دیگه، من برات مثالی زدم از اینکه کد تو بخواد به عنوان یک بخش از یک نرم افزار بزرگتر که توسط فرد دیگه ایی توسعه داد شده، کامپایل بشه؛ میخوای به کامپایلر بگی که برای این کدها از این فایل System.pas استفاده کنه، و برای مابقی کدها از System.pas دیگه ایی؟!

    این دیگه بمب خنده از طرف شماست. من از اول گفتم دلفی خودش سر خود موقع لود این فانکشن هارو صدا میزنه! یه پروژه خالی بدون هیچ فرم و یونیت بساز بعد لیست dll هاشو ببین. فقط نگو که استفاده نمیکنه ولی فانکشن هاش تو IAT میاد! چون دلفی اگه از کدی استفاده نکنه api هاش هم تو IAT نمیاره
    نفهمیدی من چی گفتم! گفتم در صورتی یک کد توسط کامپایلر کامپایل میشه که از اون سورس در جایی از پروژه استفاده شده باشه. اینکه در جایی از پروژه استفاده بشه، به معنی آن نیست که تو مستقیما از آن در پروژه خودت استفاده کنی، بلکه وقتی پروژه ایی ایجاد میکنی، خودبخود Runtime دلفی هم جزوی از پروژه تو محسوب میشه، پس اگر اون تابع استفاده میشه، بخاطر این هست که Runtime دلفی برای اجرای خودش به آن نیاز داره.

    لطفا از راه های سخت که بلدین کاری کنید دلفی dll هاش به kernel32 محدود بشه !!!
    لزومی نداره من بخوام برای همچین کاری از ابزاری مثل دلفی که برای این کار طراحی نشده استفاده کنم. ابزاری را برای این کار استفاده می کنم که برای همچین کاری طراحی شده باشه، یا برای کارهایی از این نوع تمهیداتی در نظر گرفته باشه.

    چه خصوصی چه عمومی من هم برنامه نویس این زبان هستم و احتیاجاتم رو باید از بهتزین راه بر طرف کنم
    نه لزوما. هر محصولی یک گروهی را به عنوان مشتری هدف قرار میده. ممکن هست گروه های دیگه ایی از مشتریان هم متناسب با نوع نیازهای شان جذب آن محصول بشند، ولی آن محصولات آن گروه ها را مستقیما هدف قرار نداده باشه. هدف یک محصول هم اون هست که رضایت اون گروه هدف را فراهم کنه. مثلا یکی ممکن هست مدعی بشه که نیازی به قابلیت شی گرایی دلفی نداره، پس باید TObject و تمام متدها و توابع مرتبط با آن از System.pas حذف بشه! ولی همچین فردی جزو گروه هدف محصولی مثل دلفی قرار نداره، برای همین هم توسعه دهندگان دلفی الزامی در برآورده کردن نیازهایش نمی بینند، چون یک محصول نمیتونه همه نیازهای همه افراد را برآورده کنه، و در همه آنها هم جزو بهترین ها باشه. یک فرد باید ناشی باشه که همچین انتظاری را از یک ابزار داشته باشه! احتمالا اگر برنامه نویس #C بودی، فردا میخواستی بگی Managed Code دات نت باگ داره، چون نمیتونی باهاش درایور Kernel Mode بنویسی!
    سعی کن بفهمی که هر ابزاری برای برطرف کردن یک محدوده از نیازها طراحی شده، و نمیتونه به هر نیازی پاسخ بده، حتی اگر هم می تونست، نمی تونست به اون نیاز به بهترین شکل ممکن پاسخ بده.


    نقل قول:
    Update؟!! شما حالت خوبه؟! در پست های من چیزی درباره Update دیدی؟!
    اوه راست میگید باید میگفتم کارشناس توسعه نرم افزار
    خود گویی و خود خندی...!


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  26. #66

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    بلکه سورس آن باید متناسب با حجم آن توسط یک یا چند نفر نگهداری بشه
    خوب؟ میشه دیگه! همه هم میدونن چه اتفاقی افتاده. Comment و فایل Document هم داره برای آینده

    برای این کدها از این فایل System.pas استفاده کنه، و برای مابقی کدها از System.pas دیگه ایی؟!
    هر پروژه ای Search Path جدا داره. برنامه من هم که یک برنامه هست. بیشتر بنظر میاد یه چیزی گفتید که جوابی داده باشید. هرچند بی ربط!

    بخاطر این هست که Runtime دلفی برای اجرای خودش به آن نیاز داره.
    خوب من هم که از اول همین رو میگفتم و اینکه این که به همین دلیل باید تغییر کنه! شما گفتی نیازی نیست چون دلفی فقط کد هایی که استفاده میشه کامپایل میکنه! اون کدهایی که گذاشتم همیشه در
    Runtime هست

    لزومی نداره من بخوام برای همچین کاری از ابزاری مثل دلفی که برای این کار طراحی نشده استفاده کنم. ابزاری را برای این کار استفاده می کنم که برای همچین کاری طراحی شده باشه، یا برای کارهایی از این نوع تمهیداتی در نظر گرفته باشه
    تبدیل هزاران خط برنامه به زبونهای دیگه بسیار وقت گیر است و در طولانی مدت باید انجام شود. فعلا چیزی که مهم هستش و در الویت هست امنیت قفل هست نه اینکه با چه زبونی نوشته بشه. بعدش هم دلفی هم وقتی بتونید Runtime هارو دستکاری کنید زبان بسیار جذاب و دوست داشتنی هست چون دست آدم باز هست و نیاز به تبدیل کد به زبانهای دیگه کمتر احساس میشه. اما تبدیل رو شروع کردیم ولی نه برای این موضوع! برای بالا بردن هرچه بیشتر امنیت

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

    من سال 1383 یا 1384 متوجه شدم دات نت OpenSource هست و برنامه هامو به این زبون ننوشتم. ولی حالا چرا تبدیل به C نمیکنم؟ خیلی دوست دارم همه کد هامو تبدیل کنم بخشی رو هم تبدیل کردم ولی تبدیل هزاران یونیت خیلی مشکل هست

    اما راجب بحث اصلی فکر کردن که امکان ویرایش و تغییر رو گداشتن! من هم نگفتم کارشون اشتباه هست. برای بار صدم باید عرض کنم من نیاز خودم رو مطرح کردم و دلیل رای دادنم رو

    اگر هم دوست داشتی، توی کامنت وبلاگ یکی از توسعه دهندگان دلفی یا از طریق ای میل، بهشون بگو که نمیتونی فایل System.pas را به راحتی ویرایش کنی، ببین طرف چه جوابی بهت میده.
    خنده من به این دلیل بود نه اون دلیل! چراکه نتنها کسی ایرادی نمیگیره بلکه راه حل هم میدن! به نظر خود من هم خیلی خوب هست که کسی دستش باز باشه حالا تو هر چیزی. اگه کسی علمش رو داشته باشه چرا تغییر نده !

  27. #67

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

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

    تبدیل هزاران خط برنامه به زبونهای دیگه بسیار وقت گیر است و در طولانی مدت باید انجام شود.
    این فکر رو باید همون اول، قبل از اینکه کدی نوشته بشه می کردی، تا الان مجبور نشی لقمه را دور سرت بچرخانی و Runtime دلفی را تغییر بدی، و از اینکه تغییر Runtime دلفی در نسخه های بعد از 7 سخت تر شده، شکایت کنی!
    یکی از کارهای مهمی که باید قبل از کد نویسی یک پروژه نرم افزاری کرد، این هست که تحقیق کنی برای آن پروژه چه ابزارهایی مناسب هستند. قرار نیست برای هر کاری از دلفی استفاده کرد، یا برای هر کاری از C یا هر زبان دیگه. در پست قبلی توضیح دادم که هر ابزاری برای پاسخ به یک سری نیازها طراحی شده، و یک ابزار را نمیشه برای پاسخ به هر نیازی استفاده کرد. اگر هم به فرض بشه این کار را کرد، نتیجه بهینه ایی بدست نمیاد!

    با دات نت کاری ندارم ولی یه زمانی میگفتن با دلفی نیمشه درایور نوشت ولی شد. بعدش هم TObject کجا درایور کجا!!!!
    درایور چی؟ درایور Kernel Mode ویندوز؟! یکی با دلفی بنویس که ما هم ببینیم! کامپایلر دلفی یک کامپایلر User Mode هست. اگر جایی دیدی که کسی گفته با کامپایلر دلفی درایور Kernel Mode ویندوز نوشته، باید بخشی از پروژه اش را با کامپایلر دیگه ایی (مثلا BCB) کامپایل کرده باشه، تا به Kernel Mode سوئیچ کنه. کامپایلر دلفی به خودی خود این کار را انجام نمیده.

    خنده من به این دلیل بود نه اون دلیل! چراکه نتنها کسی ایرادی نمیگیره بلکه راه حل هم میدن! به نظر خود من هم خیلی خوب هست که کسی دستش باز باشه حالا تو هر چیزی. اگه کسی علمش رو داشته باشه چرا تغییر نده !
    جالبه حرفهات برای چند ساعت هم ثبات ندارند، و باید دائما منظورهای جدیدی از آنها بیرون بکشی. در هر حال، در پست های قبلی برات توضیح دادم که اگر جایی تغییر در Runtime دلفی آموزش داده شده (یادم میاد خودم یک بار در همین سایت درباره چگونگی انجامش توضیح مختصری دادم)، برای Bug fix هست، نه اون چیزی که منظور تو هست. سعی کن قبل از ارسال پست جدید، پست های قبلی را با دقت بخوانی، تا یک حرف را مرتبا تکرار نکنی.
    من سال 1383 یا 1384 متوجه شدم دات نت OpenSource هست و برنامه هامو به این زبون ننوشتم.
    دات نت زبون نیست که بخوای باهاش برنامه بنویسی! دات نت یک پلت فرم نرم افزاری هست. یک پلت فرم، مثل Win32. در ضمن، Open Source یک تعریف مشخص داره. اگر بری در جمع افراد طرفدار Open Source، و بگی دات نت Open Source هست، برات خنده می کنند! اگر منظورت اینه که میشه از برنامه های دات نت به راحتی به سورس کد برنامه رسید، بهتر هست از یک عبارت دیگه استفاده کنی. البته، این نکته هم فقط مختص دات نت نیست، و بطور کلی خاصیت Managed Code هست. جاوا هم همین خاصیت را داره، و میشه از روی بایت کدهای تولید شده به راحتی به سورس دست پیدا کرد. البته می بینی که خیلی از برنامه های بزرگ با جاوا نوشته میشند، و خیلی از شرکت های بزرگ دنیا روی آن سرمایه گزاری های هنگفت می کنند.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  28. #68
    کاربر دائمی آواتار merced
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    خراسان جنوبي
    پست
    562

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    اين چند پست آخر خيلي جالب بودند.

    لطفاً ادامه بدين. اين بحث كلي مفيد بود (;

    واقعاً عالي بود .

    آقاي كشاورز واقعاً ممنون . از آقاي mithridates هم تشكر مي‌كنم


    لطفاً ادامه بدين. اصطلاح هم بيشتر استفاده كنين.

  29. #69

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    درایور چی؟ درایور Kernel Mode ویندوز؟! یکی با دلفی بنویس که ما هم ببینیم! کامپایلر دلفی یک کامپایلر User Mode هست. اگر جایی دیدی که کسی گفته با کامپایلر دلفی درایور Kernel Mode ویندوز نوشته، باید بخشی از پروژه اش را با کامپایلر دیگه ایی (مثلا BCB) کامپایل کرده باشه، تا به Kernel Mode سوئیچ کنه. کامپایلر دلفی به خودی خود این کار را انجام نمیده.
    علی جان واقعا جالب بود. آفرین بابت این همه ظرفیت و حوصله

  30. #70

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    درایور چی؟ درایور Kernel Mode ویندوز؟! یکی با دلفی بنویس که ما هم ببینیم
    از این به بعد سعی کنید پست هارو فقط بخونید نظرات نا آگاهانه ندین

    بیشتر ادامه بده بیشتر چیزهای جدید راجب دلفی یاد بگیری



    //
    // hook2 is basic hook driver, hooks ZwOpenProcess in SDT
    // hook can be seen in DebugView
    //
    unit hook2;
    interface
    //
    // the most important unit is DDDK which source is in inc directory
    // it contains everything we need to work with kernel functions
    //
    uses DDDK;
    //
    // this is the must, when one say you can name your driver entry with your name
    // in DDK, you have to leave _DriverEntry name of entry in DDDK unless you know
    // what you are dealing with
    //
    function _DriverEntry(ADriverObject:PDriverObject;ARegistry Path:PUnicodeString):NTSTATUS; stdcall;
    function Hook2Create(ADeviceObject:PDeviceObject;AIrp:PIrp) :NTSTATUS; stdcall;
    function Hook2Close(ADeviceObject:PDeviceObject;AIrp:PIrp): NTSTATUS; stdcall;
    function Hook2DeviceControl(ADeviceObject:PDeviceObject;AIr p:PIrp):NTSTATUS; stdcall;
    procedure Hook2Unload(ADriverObject:PDriverObject); stdcall;

    implementation
    uses Hooking,DrvComm;
    var
    // dos device name is global variable because we use it in unload too,
    // we can always make another RtlInitUnicodeString if we don't like global vars
    DosDevName:TUnicodeString;

    //
    // create function is called everytime CreateFile is called on our device
    //
    function Hook2Create(ADeviceObject:PDeviceObject;AIrp:PIrp) :NTSTATUS; stdcall;
    begin
    DbgMsg('hook2.pas: Hook2Create(ADeviceObject:0x%.8X,AIrp:0x%.8X)',[ADeviceObject,AIrp]);
    Result:=STATUS_SUCCESS;
    AIrp^.IoStatus.Status:=Result;
    IoCompleteRequest(AIrp,IO_NO_INCREMENT);
    DbgMsg('hook2.pas: Hook2Create(-):0x%.8X)',[Result]);
    end;

    //
    // close function is called everytime CloseHandle is called on our device
    // close is associated with IRP_MJ_CLOSE and it is NOT executed in the context
    // of the CloseHandle caller, if we want to make some cleanup in that context
    // we rather associate cleanup function with IRP_MJ_CLEANUP
    //
    function Hook2Close(ADeviceObject:PDeviceObject;AIrp:PIrp): NTSTATUS; stdcall;
    begin
    DbgMsg('hook2.pas: Hook2Close(ADeviceObject:0x%.8X,AIrp:0x%.8X)',[ADeviceObject,AIrp]);
    Result:=STATUS_SUCCESS;
    AIrp^.IoStatus.Status:=Result;
    IoCompleteRequest(AIrp,IO_NO_INCREMENT);
    DbgMsg('hook2.pas: Hook2Close(-):0x%.8X)',[Result]);
    end;

    //
    // device control function is called everytime DeviceIoControl is called on our
    // device, it is common way how user mode app communicate with driver
    //
    function Hook2DeviceControl(ADeviceObject:PDeviceObject;AIr p:PIrp):NTSTATUS; stdcall;
    var
    LStack:PIoStackLocation;
    LBufIn,LBufOut:Pointer;
    LBufInLen,LBufOutLen,LCode,LRet:ULONG;
    LCommBuf:PDrvCommBuffer;
    begin
    DbgMsg('hook2.pas: Hook2DeviceControl(ADeviceObject:0x%.8X,AIrp:0x%.8 X)',[ADeviceObject,AIrp]);
    LStack:=IoGetCurrentIrpStackLocation(AIrp);
    Result:=STATUS_SUCCESS;
    AIrp^.IoStatus.Information:=0;
    LCode:=LStack^.Parameters.DeviceIoControl.IoContro lCode;
    //
    // for Buffered IO both input and output buffer are the same
    // Irp->AssociatedIrp.SystemBuffer
    //
    LBufIn:=AIrp^.AssociatedIrp.SystemBuffer;
    LBufOut:=LBufIn;
    LBufInLen:=LStack^.Parameters.DeviceIoControl.Inpu tBufferLength;
    LBufOutLen:=LStack^.Parameters.DeviceIoControl.Out putBufferLength;
    DbgMsg('hook2.pas: Hook2DeviceControl: LCode:0x%.8X,LBufIn:0x%.8X,LBufInLen:0x%.8X,LBufOu t:0x%.8X,LBufOutLen:0x%.8X',
    [LCode,LBufIn,LBufInLen,LBufOut,LBufOutLen]);

    LCommBuf:=LBufOut;

    //
    // for every command we implement the functionality
    //
    case LCode of
    IOCTL_HOOK_START:begin
    LRet:=HookingHook;
    LCommBuf^.Status:=LRet;
    AIrp^.IoStatus.Information:=SizeOf(TDrvCommBuffer) ;
    end;
    IOCTL_HOOK_STOP:begin
    LRet:=HookingUnhook;
    LCommBuf^.Status:=LRet;
    AIrp^.IoStatus.Information:=SizeOf(TDrvCommBuffer) ;
    end;
    //
    // unknown codes should also be handled
    //
    else
    Result:=STATUS_INVALID_DEVICE_REQUEST;
    end;
    AIrp^.IoStatus.Status:=Result;
    IoCompleteRequest(AIrp,IO_NO_INCREMENT);
    DbgMsg('hook2.pas: Hook2DeviceControl(-):0x%.8X)',[Result]);
    end;

    //
    // unload is called when driver is being unloaded, if we do not implement unload
    // function them our driver can't be unloaded dynamically
    //
    procedure Hook2Unload(ADriverObject:PDriverObject); stdcall;
    begin
    DbgMsg('hook2.pas: Hook2Unload(ADriverObject:0x%.8X)',[ADriverObject]);

    HookingUnhook;
    //cleanup everything our driver created - delete symlink and device
    IoDeleteSymbolicLink(@DosDevName);
    IoDeleteDevice(ADriverObject^.DeviceObject);
    DbgMsg('hook2.pas: Hook2Unload(-)',[]);
    end;

    //
    // DriverEntry is common driver entry point
    //
    function _DriverEntry(ADriverObject:PDriverObject;ARegistry Path:PUnicodeString):NTSTATUS; stdcall;
    var
    LDevName:TUnicodeString;
    LDevObj:PDeviceObject;
    begin
    DbgMsg('hook2.pas: DriverEntry(ADriverObject:0x%.8X;ARegistryPath:0x% .8X)',[ADriverObject,ARegistryPath]);
    RtlInitUnicodeString(@LDevName,DeviceName);
    RtlInitUnicodeString(@DosDevName,DosDeviceName);
    //
    // if we want our driver to be accessible we need to create device for it,
    // one driver can have more devices
    //
    Result:=IoCreateDevice(ADriverObject,0,@LDevName,F ILE_DEVICE_UNKNOWN,FILE_DEVICE_SECURE_OPEN,FALSE,L DevObj);
    if NT_SUCCESS(Result) then
    begin
    //
    // for some selected major functions we set handlers
    //
    ADriverObject^.MajorFunction[IRP_MJ_CREATE] := @Hook2Create;
    ADriverObject^.MajorFunction[IRP_MJ_CLOSE] := @Hook2Close;
    ADriverObject^.MajorFunction[IRP_MJ_DEVICE_CONTROL] := @Hook2DeviceControl;
    ADriverObject^.DriverUnload := @Hook2Unload;
    //
    // this selects the method of IO, we use buffered IO as it is comfortable
    // and effective for smaller packets
    //
    LDevObj^.Flags:=LDevObj^.Flags or DO_BUFFERED_IO;
    //
    // if we want user mode application to communicate our driver we need to make
    // a dos device link
    //
    Result:=IoCreateSymbolicLink(@DosDevName,@LDevName );
    if not NT_SUCCESS(Result) then
    begin
    DbgMsg('hook2.pas: DriverEntry.IoCreateSymbolicLink failed with status 0x%.8X',[Result]);
    IoDeleteDevice(ADriverObject^.DeviceObject);
    end;
    end else DbgMsg('hook2.pas: DriverEntry.IoCreateDevice failed with status 0x%.8X',[Result]);
    DbgMsg('hook2.pas: DriverEntry(-):0x%.8X',[Result]);
    end;
    end.

  31. #71

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    dcc32.exe -U..\inc -B -CG -JP -$A-,C-,D-,G-,H-,I-,L-,P-,V-,W+,Y- %1 %2

    این هم دستوری که باهاش کامپایل میشه. خیلی جالب بود

  32. #72

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

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

    جالبه حرفهات برای چند ساعت هم ثبات ندارند، و باید دائما منظورهای جدیدی از آنها بیرون بکشی
    اگه چشمهاتون باز میشد و میدید آیکون خنده نشان دهنده همه چیز در اون پست هست !

    این فکر رو باید همون اول، قبل از اینکه کدی نوشته بشه می کردی، تا الان مجبور نشی لقمه را دور سرت بچرخانی و Runtime دلفی را تغییر بدی، و از اینکه تغییر Runtime دلفی در نسخه های بعد از 7 سخت تر شده، شکایت کنی
    احتمالا شما هر پروژه ای رو شروع میکنین همه چیرو از اول مینوسین. از شما بعید نیست ! ولی من نمیتونم تا جایی که خبر دارم خیلی از برنامه نویسان دیگه هم که کاملا مسلط هستن همچین کاری نمیکنن . Runtime دلفی هم یک کد هست و کاملا قابل تغییر. حرفهای شما بیشتر حالت احساسی داره تا علمی

    واقعا شما پست ها را میخونی، یا همینطوری یه چیزی ول میکنی؟!!
    حرفهای من کاملا روشن و واضح هستن. شما گفتی کسه دیگه چیزی سر در نمیاره! منم گفتم برنامه بدون هیچ دستکاری قابل کامپایل هست و Document و Comment هم برای آینده داره! فکر کنم باید یه برنامه نوشته شه برای فرو کردن این مطلب در مغز شما

  33. #73

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    ز این به بعد سعی کنید پست هارو فقط بخونید نظرات نا آگاهانه ندین


    Driver development has always been the privilege of C/C++‎ and Assembler programmers. If someone needs to write a device driver in Delphi, he has to settle for “adapter” drivers that would allow their user-mode program some ability to interface with kernel-mode functions. There are also “wizards” that (supposedly) allow one to create a driver without much driver-development knowledge. Both of these are often commercial software.
    For some tasks one could also use a service (which can be written in Delphi). Well, either that or learn to program C/C++‎. With older Delphi versions you could still use the Microsoft linker included in DDK to link the object files produced by the Delphi compiler to get a valid .sys file, but newer Delphi versions have a different .obj file format. Is there any hope? Well, yes there is!
    The main reasons why you can’t usually create drivers in Delphi are such :

    • It’s compiler/linker can’t produce .sys files.
    • The object file format incompatibility mentioned above.
    • DDK isn’t generally available in languages other than C/C++‎.
    • Some essential units (RTL) aren’t intended for use in kernel-mode and might crash a driver (and the whole system along with it).



  34. #74

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    برای این کدها از این فایل System.pas استفاده کنه، و برای مابقی کدها از System.pas دیگه ایی؟!
    این جمله رو معنی کنید لطفا که اگه به SearchPath ربطی نداره به چی ربط داره!

    نکنه منظورتون این هست که یک پروژه رو باید 2 بار کامپایل کرد؟! (اگه این که مسخره ترین حرف هست چه احتیاجی هست یه تیکه از کدها با Runtime اصلی و بقیه با Runtime تغییر یافته کامپایل شن؟)

    اگه هم منظورتون 2 پروژه جدا هست که کاملا به SearchPath ربط داره یکی از runtime تغییر یافته استفاده میکنه چون تو SearchPath میزنی c:\new_runtime اگه هم احتیاج نباشه که اصلا تغییر نمیدی.

  35. #75

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    دوست عزیز اون برای خلاص شدن از همین runtime ها هست و اینکه آدرس فضای کرنل تعریف بشه

    تمام کد برنامه با دلفی کامپایل میشه. بعد با لینکر که گفتین

    تبدیل به .sys میشه. توی این تبدیل به هیچ وجه به کدهای کامپایل شده دست زده نمیشه!

    فقط ساختار فایل حالت درایور پیدا میکنه

    ولی تمام دستورات کرنل داخل خود دلفی کامپایل میشن
    آخرین ویرایش به وسیله mithridates : یک شنبه 16 فروردین 1388 در 00:15 صبح

  36. #76

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    نمونه سورس های زیادی هم میتونید پیدا کنید. انجام برخی هک ها لازم هست ولی مهم این هست که کامپایل برنامه توسط دلفی صورت میگیره و کاملا قابل سازگار با linker هست که شما میگین. دلفی به خودیه خود امکان ساخت exe بدون dll اضافی هم نداشت ولی راحت انجام میشه.

    میبینید که DDK هم ساخته شده براش و با چند هک ساده شما قادر هستین هر برنامه ای برای سطح کرنل رو با دلفی آماده و اجرا کنید بدون هیچ محدودیت و 100% کد های شما هم دلفی هست بدون هیچ نیازی به کامپایلرهای دیگه

    تمام جریان سر این هست که از اونجایی که دلفی خودش نمیتونه فایل بدون dll بسازه و کدهای runtime همنطور که شما گفتین داخل کامپایل هاش هستن شما مجبورید با لینکر فایل .sys رو تولید کنید در حالی که کل کد توسط دلفی کامپایل شده قبلا.
    آخرین ویرایش به وسیله mithridates : یک شنبه 16 فروردین 1388 در 00:01 صبح

  37. #77

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    With older Delphi versions you could still use the Microsoft linker
    کل کد با دلفی کامپایل میشه. دلیل استفاده از لینکر دلایلی هست که بالا بهش اشاره شد ولی اینکه دلفی UserMode هست ربطی نداره چون تو برنامه های Ring0 که با دلفی هستن EP برنامه عوض میشه و اینطوری RTL ها دور زده میشن. پس هر کدی تو دلفی قابل اجرا هست. (نمونه برنامه بدون dll برای نمایش تکست هنگام لود ویندوز که EP برنامه عوض شده و این برنامه با اینکه با دلفی کامپایل شده راحت بدون dll های معروف خود از جمله user32,kernel32 به راحتی بالا میاد

    but newer Delphi versions have a different .obj file format.
    این هم راجب بحث ما که دلفی 7 هست نیست

    Some essential units (RTL) aren’t intended for use in kernel-mode and might crash a driver (and the whole system along with it).
    این جمله هیچ ربطی به پروژه که دادم نداره چون اصلا کد های RTL و ... اجرا نمیشن

  38. #78

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    این هم حیفم میاد مطرح نشه!

    دلیل استفاده از لینکر دقیقا این هست

    /ENTRY:DriverEntry برای تغییر EP

    /SUBSYSTEM:NATIVE دلفی این مدل رو پشتیبانی نمیکنه پس باید هک کنیم و خومون درستش کنیم


    این کارهای کوچیک ربطی به اینکه دلفی UserMode هست نداره. فقط ساختار فایل کرنل براش تعریف شده نیست که اینطوری تعریف میشه

  39. #79

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    احتمالا شما هر پروژه ای رو شروع میکنین همه چیرو از اول مینوسین. از شما بعید نیست ! ولی من نمیتونم تا جایی که خبر دارم خیلی از برنامه نویسان دیگه هم که کاملا مسلط هستن همچین کاری نمیکنن . Runtime دلفی هم یک کد هست و کاملا قابل تغییر. حرفهای شما بیشتر حالت احساسی داره تا علمی
    خدایش هر چی بیشتر میگذره، به ارزش اون جمله "شما حالت خوب هست؟!" بیشتر پی میبرم!
    وقتی تو قبل از شروع یک پروژه روی یکی از اصلی ترین مسائل پروژه یعنی انتخاب بهترین زبان برنامه نویسی برای پیاده سازی پروژه فکر نمیکنی، یعنی اصلا درباره پروژه فکر نمیکنی! از دیگران مایع نذار، یک نفر برنامه نویس درست و حسابی به من معرفی کن که قبل از شروع پیاده سازی پروژه، بیخیال اینکه با چه زبانی پیاده سازی کنه میشه، و مثل تو همینطوری کشکی یک زبانی رو انتخاب میکنه، کدهاش رو مینویسی، بعد میاد میگه این زبان باگ داره، چون انجام فلان کار درش مشکل هست!
    برای این کدها از این فایل System.pas استفاده کنه، و برای مابقی کدها از System.pas دیگه ایی؟! این جمله رو معنی کنید لطفا که اگه به SearchPath ربطی نداره به چی ربط داره!
    نکنه منظورتون این هست که یک پروژه رو باید 2 بار کامپایل کرد؟! (اگه این که مسخره ترین حرف هست چه احتیاجی هست یه تیکه از کدها با Runtime اصلی و بقیه با Runtime تغییر یافته کامپایل شن؟)
    ایکاش اونقدر که لودگی می کردی، فکر هم می کردی؛ یک یونیت بنویس که متکی به Runtime تغییر یافته خودت باشه، بعد اون یونیت را به یک پروژه دیگه که قبلا بدون مشکل کار می کرد اضافه کن. پروژه برای درست کار کردن خودش به Runtime استاندارد دلفی نیاز داره، یونیت تو برای درست کار کردنش به Runtime دستکاری شده تو، کامپایلر هم میتونه System.pas را فقط یک بار برای هر پروژه کامپایل کنه، پس یا System.pas تغییر یافته تو کامپایل میشه، و مابقی بخش های پروژه با مشکل مواجه میشند، یا System.pas استاندارد دلفی کامپایل میشه، و یونیت تو درست عمل نمیکنه. این یکی از دلایلی بود که چرا CodeGear برای اضافه کردن یونیکد به دلفی 2009 از یک Data Type جدید بجای سوئیچ کامپایلر استفاده کرد.


    قبلا هم بهت گفتم که روش کار تو به درد برنامه نویسانی میخوره که با برنامه نویس دیگه، یا به عنوان جزوی از یک پروژه بزرگتر فعالیت نمی کنند، وگرنه وجودشان در یک تیم برنامه نویسی جدی بیشتر منجر به فاجعه میشه تا افزایش بهره وری، چون مدیر پروژه بدبخت باید دائما دنبال این بگرده که کی با دستکاری های خودش باعث شکست کدهای سایر برنامه نویسان شده. به فرض هم اگر می خواست اینگونه تغییرات را برای کل پروژه قبول کنه، باید وقت و هزینه بسیار زیادی را صرف نوشتن Test برای تغییرات ایجاد شده در Runtime می کرد.

    حرفهای من کاملا روشن و واضح هستن. شما گفتی کسه دیگه چیزی سر در نمیاره! منم گفتم برنامه بدون هیچ دستکاری قابل کامپایل هست و Document و Comment هم برای آینده داره! فکر کنم باید یه برنامه نوشته شه برای فرو کردن این مطلب در مغز شما
    وقتی عمده تجربیاتت این باشه که بشینی یک گوشه و برای خودت همینطوری دیمی کدی بنویسی و باهاش حال کنی، نخواهی فهمید که منظور من چی هست! وقتی برنامه نویسی تا دیروز کدش بدون هیچ مشکلی کار میکرده، و همه تست های طراحی شده برای آن را با موفقیت پاس میکرده، و ناگهان با پیوستن تو به تیمش کدهاش break میشند، نیازی نداره Comment تو رو بخونه که بخاطر استفاده نکردن از ابزار مناسب، کل کد اون فرد را به گند کشوندی، چون Comment تو دردی از اون فرد دوا نمیکنه.


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


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  40. #80

    نقل قول: از کدام ورژن دلفی در حال حاظر استفاده میکنید؟

    جواب همه مسائلی که مطرح کردی اینکه شما خودتو به ... میزنی!

    اولا یک برنامه قفل اگه تالا دیده باشی ربطی به یه یونیت عمومی نداره که تو همه پروژه ها بخواد استفاده بشه که احتمالا ندیدی یا اگه دیدی قفلت یه پروژه opensource بوده که زحمت کامپایلش رو کشیدی

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

    سوما من Event هارو از نظر امنیتی برای آنپک شدن باگ دونستم نه Runtime رو. راجب این مسئله فقط گفتم تو دلفی جدید سخت تر شده! همین و بس

    الان میگی اون هزار خط چرا با دلفی بوده !! جوابت هم واقعا آسونه اونها کد های دیگه بودن که تو این پروژه به درد من میخوردن و لازم بودن

    حالا خنده دار ترین مطلب مونده !!!!

    من گفتم اگه runtime دستکاری بشه user32.dll به فایل اضافه نمیشه!

    میشه بگی اگه تیکه کد زیر تو runtime دستکاری بشه چطور یه یونیت من احتیاج به یک runtime و یونیت دیگه احتیاج به یه runtime دیگه داره؟

    تا جایی که من میدونم تو دلفی 7 کل پروژه با یک Runtime اجرا میشه. و دستکاری من هم تاثیری در یونیت نداره بلکه فقط تو ویندوز 95 از نوع ژاپنی مشکل پیش میاد که اونهم پروژه ما تحت ویندوزهایی که Nt هستن کار میکنه و فکر هم نکنم کسی از ویندوز 95 اونهم از نوع ژاپنی بخواد استفاده کنه

    اون تیمی هم که حرف میزنی اگه بخوان رو قفل من کار کنن من مطمئن هستم اولا با یکبار توضیح متوجه میشن دوما کد هایی که من از دلفی حذف میکنم هیچ وقت در این پروژه استفاده نمیشه که حالا بخواد break بشه.


    راستی جواب این حرفتم داشته باش

    گفتی یونیتی بنویسم که متکی به runtime من باشه!

    جوابت اینکه من هیج وقت قادر نیستم یونیتی طراحی کنم که متکی به runtime من باشه چون همونطور که گفتم هیچ تاثیری نتنها در این پروژه من بلکه اگه تمام مثالهای موجود رو اینترنت هم بگردی چیزی پیدا نمی کنی. مگه اینکه رو ویندوز 95 ژاپنی اجرا کنی.

    تاثیرش در پروژه من هم یک تاثیر عمومی هست چون کلا از user32 استفاده نمیشه البته فقط در runtime اگه شما از دستور MessageBox یا هر دستور دیگه استفاده کنی دوباره اضافه میشه

    امیدوارم روزی به حدی برسی که جای بازی کردن با جملات بی ارزش کمی هم ...


    function GetKeyboardType(nTypeFlag: Integer): Integer; stdcall;
    external user name 'GetKeyboardType';
    function _isNECWindows: Boolean;
    var
    KbSubType: Integer;
    begin
    Result := False;
    if GetKeyboardType(0) = $7 then
    begin
    KbSubType := GetKeyboardType(1) and $FF00;
    if (KbSubType = $0D00) or (KbSubType = $0400) then
    Result := True;
    end;
    end;
    const
    HKEY_LOCAL_MACHINE = $80000002;
    // workaround a Japanese Win95 bug
    procedure _FpuMaskInit;
    const
    KEY_QUERY_VALUE = $00000001;
    REG_DWORD = 4;
    FPUMASKKEY = 'SOFTWARE\Borland\Delphi\RTL';
    FPUMASKNAME = 'FPUMaskValue';
    var
    phkResult: LongWord;
    lpData, DataSize: Longint;
    begin
    lpData := Default8087CW;
    if RegOpenKeyEx(HKEY_LOCAL_MACHINE, FPUMASKKEY, 0, KEY_QUERY_VALUE, phkResult) = 0 then
    try
    DataSize := Sizeof(lpData);
    RegQueryValueEx(phkResult, FPUMASKNAME, nil, nil, @lpData, @DataSize);
    finally
    RegCloseKey(phkResult);
    end;
    Default8087CW := (Default8087CW and $ffc0) or (lpData and $3f);
    end;
    {$ENDIF}
    آخرین ویرایش به وسیله mithridates : یک شنبه 16 فروردین 1388 در 17:15 عصر

صفحه 2 از 3 اولاول 123 آخرآخر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •