PDA

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



Cave_Man
دوشنبه 12 آذر 1386, 14:29 عصر
دلفی کارهای عزیز سلام
فکر میکنم قبلا چنین همه پرسی ای برگزار شده بود اما در حال حاظر وضعیت چیه؟

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

delphi5
دوشنبه 12 آذر 1386, 14:48 عصر
بعد از ورژن delphi 5 از این ورژن استفاده میکنم

sara_np
دوشنبه 12 آذر 1386, 15:07 عصر
سلام
ممنون از همه پرسیتون من از دلفی 7 استفاده می کنم

JAFO_IRAN
دوشنبه 12 آذر 1386, 16:26 عصر
سلام

ممنون

از دلفی 7 به بعد، یک property مهم در clientdataset یعنی StatusFilter خطای gp میگیره و تا این اواخر هم خطا داشت. اشکال در midas.dll است که متاسفانه سورسش رو در اختیار نداریم. به همین دلیل هنوز از دلفی 6 استفاده میکنم - خیلی هم از این بابت غصه میخورم.

ارادت

SYNDROME
دوشنبه 12 آذر 1386, 17:48 عصر
از دلفی 2007 استفاده می کنم.
محیط کار آن خیلی زیبا و از نظر کارایی برای طراحی صفحه خیلی خوب جواب می دهد.
موفق باشید

Cave_Man
دوشنبه 12 آذر 1386, 18:06 عصر
از دلفی 2007 استفاده می کنم.
محیط کار آن خیلی زیبا و از نظر کارایی برای طراحی صفحه خیلی خوب جواب می دهد.
موفق باشید
خب فدات شم توی رای گیری هم نظرت رو اعمال کن.ضمن تشکر!

M.Ehsanifar
دوشنبه 12 آذر 1386, 19:32 عصر
سلام
من از نسخه 7 استفاده می کنم . خیلی دوست دارم از نسخه های 2006 و 2007 استفاده کنم ولی نمی تونم . چون این نسخه ها خیلی حجیم و بر روی سستم هایی مثل سیستم من (Athlon xp 2400 - ram 512) کند هستند و برای بالا اومدن خود دلفی یا کامپایل و اجراء یه برنامه ساده در داخل اون باید کلی انتظار کشید ( کلی در مقیاس نیم ثانیه ) .

Mohammad_Mnt
دوشنبه 12 آذر 1386, 19:46 عصر
با این اوضاع کم‌کم دارم دوباره از دلفی ناامید می‌شم

Cave_Man
دوشنبه 12 آذر 1386, 20:59 عصر
با این اوضاع کم‌کم دارم دوباره از دلفی ناامید می‌شم
درسته انتهای بحث یه نتیجه گیری میکنیم و در بحث دیگه ای اوضاع رو تجزیه و تحلیل میکنیم!!
البته اونقدر ها هم نا امید کننده نیست باید بعدا دلایل رو بررسی کنیم
فعلا از همه صمیمانه تقاضای شرکت در این همه پرسی رو دارم

yashar666
دوشنبه 12 آذر 1386, 22:31 عصر
هیچ کدوم مثل دلفی 7 نمیشه

DAMAVAND
دوشنبه 12 آذر 1386, 22:45 عصر
من از دلفی 6,7 استفاده میکنم هیچ نسخه دلفی به پای دلفی 7 نمیرسه !

SYNDROME
سه شنبه 13 آذر 1386, 07:54 صبح
خب فدات شم توی رای گیری هم نظرت رو اعمال کن.ضمن تشکر!
شرمنده حواسم نبود.
انجام شد.
موفق باشید

Cave_Man
سه شنبه 13 آذر 1386, 17:08 عصر
دلفی در نسخه های جدیدتر از دلفی 7 در جذب توسعه گر ها و ترغیب اونها در مهاجرت به نسخه های جدید موفق نبوده و با وجود گذشت 5 سال بسیاری از برنامه نویسان و توسعه دهندگان هنوز از نسخه 7 دلفی استفاده میکنند.
ای آمار نشاندهنده این هست که بیش از 70 درصد دوست دارن دلفی از دلفی 7 استقاده میکنند حتی ممکن است که کسانی که از ورژن های بالاتر استفاده میکنند به دلایل خاص مثل استفاده از ASP.NET در دلفی باشه.
اما باید دلایل عدم مهاجرت کاربران به نسخ جدید تر رو بررسی کنیم.

لطفا شما هم نتیجه گیری خودتون رو اعلام کنید.


به دلیل تفاوت موضوعی تاپیکی برای بررسی دلایل ایجاد شد:

دلایل مهاجرت یا عدم مهاجرت به نسخه های جدید دلفی
http://barnamenevis.org/forum/showthread.php?p=429562#post429562

SYNDROME
سه شنبه 13 آذر 1386, 21:54 عصر
ببخشید ولی خواستم یک نکته را هم بنده بگویم.
دلفی 7 تقریباً 5 سال قبل ارائه شده است ولی 2007 تقریبا 1 سال است که به بازار آمده است.
موفق باشید

Cave_Man
سه شنبه 13 آذر 1386, 22:39 عصر
ببخشید ولی خواستم یک نکته را هم بنده بگویم.
دلفی 7 تقریباً 5 سال قبل ارائه شده است ولی 2007 تقریبا 1 سال است که به بازار آمده است.
موفق باشید
بله نکته ای که دوست داشتم کسی بگه و شما گفتید این هست که دلفی 2007 با وجود اینکه فکر میکنم از یک سال هم کمتر هست که آمده موجب جلب توجه کاربرانی شده و باعث شده که از ورژن 7 دل بکنند ...
نکته ای که میخاستم بگم این بود و در پاسخ به دوستمون Mohammad_Mnt (http://barnamenevis.org/forum/member.php?u=3359) که اظهار ناامیدی از دلفی رو کردند و بنده گفتم چندان هم نا امید کننده نیست همین بود که شما گفتی.

manvaputra
چهارشنبه 14 آذر 1386, 01:55 صبح
منم از دلفی 7 استفاده می کنم

Mohammad_Mnt
چهارشنبه 14 آذر 1386, 03:41 صبح
با این روندی که CodeGear پیش گرفته و بیشتر تمرکز خودش را روی Delphi.Net گذاشته تا Delphi for Win32 و همچنین 64، آینده‌ی خیلی خوبی نمی‌بینم. قبلاً این دلفی بود که خیلی از ویژگی‌ها را سریعتر از زبان‌ها و IDE های دیگه ارائه می‌کرد، ولی با سیاست‌های اشتباه بورلند و کدگیر، دلفی الان بیشتر دنباله‌رو شده تا خلاق. هنوز از یونیکد ساپورت نمی‌کنه و ناسازگاری‌های زیادی داره. بین دلفی 7 و 2007، دلفی فقط درجا زده و حالا زمان زیادی می‌خواد که بتونه این عقب افتادگی را جبران کنه.
ضمن این‌که در چهارچوب دات‌نت هم اگر اشتباه نکنم حدود یک سال طول کشید تا از دات‌نت 2 پشتیبانی کنه. حذف پشتیبانی از WinForms و C# Builder از داخل RAD Studio خیلی عجیب بود.
اگر این همه انرژی و پولی که برای توسعه‌ی دلفی دات نت صرف شده است را برای توسعه‌ی دلفی 32 به کار برده بودند، الان جایگاه دلفی این نبود. RoadMap دلفی و C++Builder هم با این که تغییر کرده‌اند، چندان رضایت بخش نیست.
چه خوب می‌شد اگر دلفی OpenSource می‌شد، اون موقع توسعه دهندگان دلفی می‌تونستند جایگاه قبلی دلفی را بهش برگردونند.

vcldeveloper
چهارشنبه 14 آذر 1386, 03:48 صبح
با این روندی که CodeGear پیش گرفته و بیشتر تمرکز خودش را روی Delphi.Net گذاشته تا Delphi for Win32 و همچنین 64، آینده‌ی خیلی خوبی نمی‌بینم.
تمرکز بر روی دات نت مدتی هست که به درخواست مشتری ها بسیار کم رنگ شده. مصداقش هم عرضه Delphi 2007 for Win32 قبل از ارائه RAD Studio 2007 بود. یونیکد هم در نسخه آینده دلفی لحاظ شده. اگر به وبلاگ توسعه دهندگان دلفی مراجعه کنید، متوجه میشید که در حال سازگار کردن VCL با یونیکد هستند تا در نسخه آینده این امکان وجود داشته باشه.
در ضمن، Delphi 2007 یک در جا زدن نبود! چون خیلی در این زمینه بحث شده، لازم نمی بینم که تکرار مکررات کنم.

max2004
چهارشنبه 14 آذر 1386, 11:10 صبح
من پیشنهاد میکنم که از turbo delphi explorer استفاده کنید

چون هم جدید است (2006) نسبت به دلفی 7
هم سرعتش خوبه (کامپیوتر من PIII هست ولی باز هم ازش راضیم)
در نهایت این که رایگان هست
(برای اونا که از لحاظ وجدانی و شرعی با دلفی 7 مشکل دارن)
تنها عیبی که داره اینه که نمیشه کمپوننت اضافی روش نصب کرد
(امکان استفاده از Activex و Dll وجود داره)
(در ضمن خودش به طور پیش فرض بیش از 200 کمپوننت داره)

http://www.turboexplorer.com/delphi

max2004
چهارشنبه 14 آذر 1386, 11:23 صبح
یه چیز یادم رفت بگم اون هم پشتیبانیش هست
تا الان یه پچ برای بروز رسانی منتشر شده

یه سوال : آیا دلفی 7 هنوز پشتیبانی میشه؟

vcldeveloper
چهارشنبه 14 آذر 1386, 15:06 عصر
من پیشنهاد میکنم که از turbo delphi explorer استفاده کنید

تا الان یه پچ برای بروز رسانی منتشر شده
فکر کنم یخورده از قافله دلفی عقبی. یه نگاه به دلفی 2007 بنداز. تا حالا 3 تا آپدیت هم براش عرضه شده، بعد شما Trubo Delphi Explorer مربوط به سال 2006 را میگی جدید؟! حالا بماند که اصولا ورژن های Turbo امکانات کمتری نسبت به ورژن های عادی دلفی دارند.

Mohammad_Mnt
چهارشنبه 14 آذر 1386, 16:49 عصر
یونیکد هم در نسخه آینده دلفی لحاظ شده.

درسته، ولی فکر نمی‌کنید یه کم دیر شده؟ همون‌طور که گفتم دلفی در حال حاضر دنباله‌رو شده. انتظار داشتم یکی دو سال پیش یونیکد را ساپورت کنه.




در ضمن، Delphi 2007 یک در جا زدن نبود!

من گفتم تا دلفی 2007، نه لغایت 2007 :چشمک:
دلفی 2007 خیلی بهتر از دلفی 7 است ولی نسخه‌های میانی همون درجازدن بود. من چند تا از پروژه‌هام را به دلفی 2007 انتقال دادم و خیلی خوشحالم ولی از دلفی انتظار خیلی بیشتری دارم.

به نظر من اینا چیزهاییه که خیلی زودتر باید حل می‌شد: ( QC دلفی) آیتم‌های این لیست چیز خوبی رو نشون نمی‌ده !!

http://i6.tinypic.com/833i3xj.png

max2004
چهارشنبه 14 آذر 1386, 17:35 عصر
فکر کنم یخورده از قافله دلفی عقبی. یه نگاه به دلفی 2007 بنداز. تا حالا 3 تا آپدیت هم براش عرضه شده، بعد شما Trubo Delphi Explorer مربوط به سال 2006 را میگی جدید؟! حالا بماند که اصولا ورژن های Turbo امکانات کمتری نسبت به ورژن های عادی دلفی دارند.



من پیشنهاد میکنم که از turbo delphi explorer استفاده کنید
چون هم جدید است (2006) نسبت به دلفی 7



منظور من دلفی 7 بود و مقایسه من با دلفی 7 بود نه 2007. با توجه به این که تو این تاپیک جدا از دلفی 2007 قرار داده شده و اکثر دوستان هم گفتن که از این نسخه استفاده میکنن و امکان انتقال به دلفی 2007 رو ندارن

vcldeveloper
چهارشنبه 14 آذر 1386, 17:50 عصر
درسته، ولی فکر نمی‌کنید یه کم دیر شده؟
نه خیلی. اینجا بحث روی Win32 هست. روی این پلت فرم هم دلفی فعلا یکه تازی میکنه. رقبا هنوز محصول خاصی برای رقابت ندارند که بگیم دلفی عقب افتاده. روی دات نت هم که مشکل یونیکد وجود نداره.


همون‌طور که گفتم دلفی در حال حاضر دنباله‌رو شده. انتظار داشتم یکی دو سال پیش یونیکد را ساپورت کنه.
اینها سیاست های غلط بورلند بود. در CodeGear سعی شد تا حد امکان از آن سیاست ها فاصله گرفته بشه و مسیر اصلاح بشه. به همین دلیل هم توجه خاصی به Win32 شد و پس از مدتها یک نسخه خوب از دلفی (دلفی 2007) ارائه شد. سیاست های غلط بورلند در گذشته را با سیاست های فعلی CodeGear قاطی نکنید.



( QC دلفی) آیتم‌های این لیست چیز خوبی رو نشون نمی‌ده !!
این لیست که مربوط به C# Builder هست، نه دلفی!

Mohammad_Mnt
چهارشنبه 14 آذر 1386, 17:58 عصر
اصلاح شد !!
ضمن این که IDE و Help دلفی 2007 هنوز باگ داره و بعضی موقع‌ها واقعاً آدم رو اذیت می‌کنه + سرعت پایین بالا آمدن IDE

arshia_
پنج شنبه 15 آذر 1386, 14:46 عصر
دلفی 7 هم قدرت خوبی داره هم اینترفیس اون مثل سایر اینترفیسهای بورلند زیبا و کاربردی است
اما خب نسخه های بعدی هم عالی است فقط حیف قیافه اش شده مثل محصولات مایکروسافت

Valadi
پنج شنبه 15 آذر 1386, 16:13 عصر
با شما موافقم جناب arshia_

فقط حیف قیافه اش شده مثل محصولات مایکروسافت
شرکت بورلند نباید به طرف کپی برداری اینترفیس محصولات مایکروسافت برود

DAMAVAND
پنج شنبه 15 آذر 1386, 21:48 عصر
دلفی 7 هم قدرت خوبی داره هم اینترفیس اون مثل سایر اینترفیسهای بورلند زیبا و کاربردی است
اما خب نسخه های بعدی هم عالی است فقط حیف قیافه اش شده مثل محصولات مایکروسافت
کاملا تایید میشه , بیشترین چیزی که باعث میشد کاربران دلفی علاقه زیادی به اون داشته باشن همین کاربر پسند بودن محیط دلفیه که بدون رقیبه ! ولی تو وژنهای جدید با تقلید از IDEهای ماکروسافت این ویژگی رو تا اندازه زیادی از دست داده درست که باید بنا بر نیاز های روز تغییر میکرد ولی عوض کردن شکل ظاهری و تقلید از ماکروسافت اشتباه بزرگی بود به هیچ وجه ضرورتی نداشت.

vcldeveloper
جمعه 16 آذر 1386, 01:10 صبح
کاملا تایید میشه , بیشترین چیزی که باعث میشد کاربران دلفی علاقه زیادی به اون داشته باشن همین کاربر پسند بودن محیط دلفیه که بدون رقیبه !
اگه علت علاقه شما و دیگران به دلفی اینه و بزرگترین مشکل ورژن های جدید را در تغییر رابط کاربر آنها می دونید، میشه با تنظیم IDE در دلفی 2006 و 2007 کاری کرد که شبیه به IDE دلفی 7 بشه.

myself™
جمعه 16 آذر 1386, 02:28 صبح
کاملا تایید میشه , بیشترین چیزی که باعث میشد کاربران دلفی علاقه زیادی به اون داشته باشن همین کاربر پسند بودن محیط دلفیه که بدون رقیبه ! ولی تو وژنهای جدید با تقلید از IDEهای ماکروسافت این ویژگی رو تا اندازه زیادی از دست داده درست که باید بنا بر نیاز های روز تغییر میکرد ولی عوض کردن شکل ظاهری و تقلید از ماکروسافت اشتباه بزرگی بود به هیچ وجه ضرورتی نداشت.

سوال :
در اینجا به نظر میآد دوستان دارن در مورد گونه های مختلف قناری و مرغ عشق صحبت میکنن....!
بازم اون اولی ها گفتن Unicode.
خوب برای نمونه هیچ کدوم از اونایی که با دلفی 7 کار میکنن در مورد مواردی که در محیط طراحی فرم اضافه شده چیزی میدونن یا ویرایش گر کد. یا اجزای ساخت جدید در ویرایش های 8 دلفی به بعد. که فقط موارد قابل رویت و دم دست کاربره که همین کافیه تا دلفی 7 رو قورت بده.
حالا دستورات جدیدی که به ترکیب (syntax) دلفی تو نسخه های جدید اضافه شده هم بی خیال میشیم.....

خوب به قولی "حلوای تن تنانی تا نخوری ندانی".

object
جمعه 16 آذر 1386, 19:30 عصر
توی محل کارم با دلفی 7 و 2006 توامان کار میکنم ولی توی خونه فقط با 7
IDE دلفی 2006 بسیار سنگینه کلی باگ داره (چون موقع کار وقتی با فرمهای زیادی سر و کار داشته باشید یکهو خطا میگیره و راه حلش هم Ctrl+Alt+ Del) هستش
بعد از چندساعت کار مداوم با دلفی 2006 چیزی در حدود 600 تا 700 مگ از رم رو اشغال میکنم (فکر کنم اگر رمم بیشتر از 1 گیگ باشه بیشتر هم اشغال کنه)
ومسئله بعدی که مشکل اساسی منه کامپوننتهایی هستند که توی دلفی هفت دارم اما نسخه 2006 یا بالاترش رو هنوز نتونستم گیر بیارم
راستی یه سئوال ناراحت کننده: اینکه یه نسخه جدید از یک محیط توسعه منتشر میشه معمولا به این معنیه که کلی نیازهای تکنیکال و طراحی های جدید اضافه شده حالا ناراحت کننده نیست که ما هنوز اون نیازها رو حس نکردیم؟ هنوز اون توسعه ها رو نتونستیم درک کنیم؟ و باز هم با نسخه های قدیمی تر راحت تریم؟

hamide_kh
جمعه 16 آذر 1386, 22:14 عصر
سلام
دوستان دلفی 8 کدام دلفیورژن از دلفی میشه(2006-2007-2008)

Cave_Man
جمعه 16 آذر 1386, 22:47 عصر
سلام
دوستان دلفی 8 کدام دلفیورژن از دلفی میشه(2006-2007-2008)
هیچکدوم
ورژن 2004.

M.Ehsanifar
شنبه 17 آذر 1386, 02:22 صبح
ببخشید که جلوی شما اساتید اظهار نظر میکنم ..
اگه قرار باشه روزی طرف دات نت برم ، دلفی 2006 یا 2007 یا .. رو انتخاب نمی کنم . ترجیح می دم برم طرف #c و visual studio.
ذات دلفی با win32 یکی شده ، این نسخه های جدید دلفی به خاطر این تقلید هایی که داره مثل یه زن مانتویی می مونه که چادر سرش کرده باشن . دست و پا گیر بودن چادر و آشنا نبودن اون زن با چگونگی راه رفتن با چادر به حرکتی کند و گاهی زمین خوردن اون زن منجر می شه .
من خیلی دلفی 7 رو دوست دارم ، ولی وقتی به دلفی 2005و 2006 و .. فکر میکنم حالم گرفته می شه . انگار که این بچه ، بچه اون پدر نیست . انگار که همه چی وصله کاری شده . اینا رو به خاطر ظاهرش نمی گم .به خاطر انتظاراتی که قبل از دیدن دلفی 2005 تو ذهنم داشتم . انتظار نداشتم با همچین چیزی روبرو بشم .

این رو به عنوان یه برنامه نویس در سطحی بین آماتور و متوسط گفتم . به عنوان کسی که علاقه شدیدی به این علم داره .. شما هم از این بُعد نظرم رو بررسی کنید .
آیا نباید علاوه بر جلب نظر شما حرفه ای ها نظر امثال ما ها رو هم جذب کنه ؟

Cave_Man
شنبه 17 آذر 1386, 22:35 عصر
من فقط این مورد رو نمیتونم درک کنم که چرا دلفی نمیتونه در ورژن های بعدش خودش سازگاری با کامپوننت های قبلی رو حفظ کنه.چیزی شبیه ActiveX ها یا برخی کامپوننت ها که در همه ورژنهای دلفی میشه نصبشون کرد بدون اینکه برای هر ورژن دلفی یه نصاب جدا داشته باشن.

یکی از مشکلات مهم توسعه دهندگان کامپوننت ها هم همین هست که باید برای هر ورژن دلفی یه پک جدا و نصاب جدا ارائه کنند.

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

فکر میکنم اگر دلفی(مجاز از Code Gear) به موفقیت خودش فکر میکنه ایجاد این سازگاری خیلی میتونه کمکش کنه.

vcldeveloper
شنبه 17 آذر 1386, 23:57 عصر
چرا دلفی نمیتونه در ورژن های بعدش خودش سازگاری با کامپوننت های قبلی رو حفظ کنه.
این مشکل دلفی نیست. وقتی کامپوننتی را بدون سورس در اختیار دارید، کد کامپایل شده آن کامپوننت وابسته به نسخه ایی از دلفی میشه که باهاش کامپایل شده. طبیعی هست که در هر نسخه از یک نرم افزار جدید تغییراتی بوجود بیاد. نباید انتظار داشته باشید که کدی که برای ورژن های قبلی اون نرم افزار نوشته شده، دقیقا برای ورژن های بعدی هم درست کار کنه. در این صورت باید قید خیلی از امکانات جدید را زد.
تازه دلفی در این زمینه فوق العاده backward compatible هست. به طوری که حتی کدهای دلفی 2 را هم می تونید روی دلفی 2007 اجرا کنید. خودتون رو بزارید جای برنامه نویسان VB تا متوجه بشید backward compatibility دلفی یعنی چی!
اون دوستانی که از کامپوننت ها شکایت می کنند، عموما دوستانی هستند که یا از کامپوننت هایی استفاده می کنند که دیگه توسعه داده نمی شند، یا کامپوننت هایی که با سورس عرضه نمی شند و از اونحایی که این کامپوننت ها در ایران به طور قانونی خریداری نمی شوند که بشه از خدمات شرکت سازنده استفاده کرد، این دوستان مجبورند دوباره به دنبال ک.رک این کامپوننت ها بگردند.

ebnsina
دوشنبه 19 آذر 1386, 12:07 عصر
هر چند من این اظهار نظر رو در یک تاپیک دیگر هم نوشتم ولی پیش خودم گفتم شاید بد نباشه اینجا هم عرض کنم :

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

1- با نصب Castalia امکانات محیطی دلفی 7 در بعضی موارد از 2007 هم بهتر شده !
2- با نصب ModelMaker و MMX امکانات مدل سازی و UML دلفی 7 من چیزی کم نداره.
3- بعضی از کامپوننت هایی رو که در دلفی 7 دارم هنوز یا نسخه 2007 ندارند، یا نسخه رایگان رو پیدا نکردم و یا نسخه 2007 اونها ناپایدارند.
4- سرعت بالا اومدن دلفی 7 با DelphiSpeedUp بطور قابل ملاحظه ای از نسخه های جدیدتر دلفی بالاتر میره (هر چند اینکار رو یکبار و در اول روز انجام بدم!)
5-با نصب Component Pallet Expert در دلفی 7 ، لیست کاربرگِ تمام کامپوننت ها رو میده که براحتی میشه به کاربرگ هر مجموعه کامپوننتی در ظرف سه سوت (نیم ثانیه!) دسترسی داشت.
6- (یه خاطیره هم از خودم دَر وکنم!) در دلفی 7 در ADOTable و ADOQuery ها در رویداد OnFetchProgress باگ وجود دارده و دلفی7 در برنامه های حجیم در این رویداد قاط میزنه! لذا لازم دیدم که به دلفی جدیدتر یعنی 2006 برم (جدید البته در سال پیش!) ولی برای اجرای پروژه ام در دلفی 2006 یک هفته زمان گذاشتم و کلی از برنامه زمانبندی عقب افتادم و وقتی، از پس دهها مشکل برنیومدم و زمان هم در حال از دست رفتن بود عقب گرد کردم و از خیر Progress در حال گرفتن دیتا هم گذشتم !:گیج:
7- و ...


راستی مشکل Unicode رو هم هرجا که لازم بود با کامپوننت های رایگان TNT در دلفی 7 حل کردم.

حالا شما راهنمایی کنید،
والا اگر مشکلات ذکر شده من و دوستان حل بشه، من از اولین کسانی هستم که خیلی هم دوست دارم با کامپایلر و دیباگر بهتر و جدیدتر در دلفی 2007 کار کنم.
:متفکر:

ebnsina
دوشنبه 19 آذر 1386, 14:00 عصر
این لینک رو به حواست چند تن از دوستان که pm زده بودن اینجا آوردم.
البته نمی دونم که اینجا جای خوبی هست یا نه ولی این لینک Component Pallet Expert است :

http://mhm.metissoft.com/download/CompPaletteExpt_D7.rar

ضمنا این کامپوننت رو خودم upload کردم و اصل آن هم رایگان است.

Maisa pardaz
دوشنبه 19 آذر 1386, 15:07 عصر
ببخشید که جلوی شما اساتید اظهار نظر میکنم ..
اگه قرار باشه روزی طرف دات نت برم ، دلفی 2006 یا 2007 یا .. رو انتخاب نمی کنم . ترجیح می دم برم طرف #c و visual studio.
ذات دلفی با win32 یکی شده ،
من با نظر این دوستمون موافقم. چون یکی دو باری رفتم که با دلفی 2006، Web Application کار کنم ولی اونقدر توی کار Error داد تا پشیمون شدم و با VS 2005 کارمو ادامه دادم. البته اینو بگم که من برنامه های Win32 را همشو با دلفی انجام میدم ولی تحت Web را نه

myself™
پنج شنبه 03 مرداد 1387, 21:21 عصر
هر چند من این اظهار نظر رو در یک تاپیک دیگر هم نوشتم ولی پیش خودم گفتم شاید بد نباشه اینجا هم عرض کنم :

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

1- با نصب Castalia امکانات محیطی دلفی 7 در بعضی موارد از 2007 هم بهتر شده !
2- با نصب ModelMaker و MMX امکانات مدل سازی و UML دلفی 7 من چیزی کم نداره.
3- بعضی از کامپوننت هایی رو که در دلفی 7 دارم هنوز یا نسخه 2007 ندارند، یا نسخه رایگان رو پیدا نکردم و یا نسخه 2007 اونها ناپایدارند.
4- سرعت بالا اومدن دلفی 7 با DelphiSpeedUp بطور قابل ملاحظه ای از نسخه های جدیدتر دلفی بالاتر میره (هر چند اینکار رو یکبار و در اول روز انجام بدم!)
5-با نصب Component Pallet Expert در دلفی 7 ، لیست کاربرگِ تمام کامپوننت ها رو میده که براحتی میشه به کاربرگ هر مجموعه کامپوننتی در ظرف سه سوت (نیم ثانیه!) دسترسی داشت.
6- (یه خاطیره هم از خودم دَر وکنم!) در دلفی 7 در ADOTable و ADOQuery ها در رویداد OnFetchProgress باگ وجود دارده و دلفی7 در برنامه های حجیم در این رویداد قاط میزنه! لذا لازم دیدم که به دلفی جدیدتر یعنی 2006 برم (جدید البته در سال پیش!) ولی برای اجرای پروژه ام در دلفی 2006 یک هفته زمان گذاشتم و کلی از برنامه زمانبندی عقب افتادم و وقتی، از پس دهها مشکل برنیومدم و زمان هم در حال از دست رفتن بود عقب گرد کردم و از خیر Progress در حال گرفتن دیتا هم گذشتم !:گیج:
7- و ...


راستی مشکل Unicode رو هم هرجا که لازم بود با کامپوننت های رایگان TNT در دلفی 7 حل کردم.

حالا شما راهنمایی کنید،
والا اگر مشکلات ذکر شده من و دوستان حل بشه، من از اولین کسانی هستم که خیلی هم دوست دارم با کامپایلر و دیباگر بهتر و جدیدتر در دلفی 2007 کار کنم.
:متفکر:

خوب دوست عزیز یکی یکی
بهتره یه کوچولو بری و یاد بگیری Update یعنی چی...!
اگه داری از ADO برای Access یا MS-Sql استفاده میکنی که برات متاسفم
کامپوننت های TNT تنها در ظاهر Unicode هستند نه در عمل، تست این قضه حتما از شما بر نیومده.
راستی با سورس هایی که Utf8 ذخیره نمیشن تو ویندوز های مختلف چکار میکنی؟ اگه فارسی نصب نباشه.
حداقل اگه بخوای بگردی برای نسخه 2006 اون همه کامپوننت ها گیر میآد.
و تازه شما احتمالا نمیدونی که برای نسخه هایی که نام بردی چند تا Update هم وجود داره؟!
احتمالا اگر از OpenSource چیزی میدونستی راحت تر بودی.
البته خوب برای کار به سبک چند سال پیش دانشی بیش از همون علم چند سال پیش و ابزار همون موقع لازم نخواهد بود.
Update برای هیچ چیز عیب نیست وگرنه ویندوز رو باید بیش از اینکه در اذهانمون منفوره، منفور تر دونست!.

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

myself™
پنج شنبه 03 مرداد 1387, 21:23 عصر
سلام
من از نسخه 7 استفاده می کنم . خیلی دوست دارم از نسخه های 2006 و 2007 استفاده کنم ولی نمی تونم . چون این نسخه ها خیلی حجیم و بر روی سستم هایی مثل سیستم من (Athlon xp 2400 - ram 512) کند هستند و برای بالا اومدن خود دلفی یا کامپایل و اجراء یه برنامه ساده در داخل اون باید کلی انتظار کشید ( کلی در مقیاس نیم ثانیه ) .

من خودم یه سیستم 2400Celeron با 768MB Ram دارم حوصله فدای کیفیت بشه چی میشه.

Hsimple11
پنج شنبه 03 مرداد 1387, 21:41 عصر
از ورژن 7 دلفی

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

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

tefos666
جمعه 04 مرداد 1387, 11:08 صبح
IDE دلفی دات نت یه جورایی تقلید گرایی از مایکروسافت و کسانی که با رابط کاربری 7 عادت کرده بودند خیلی براشون سخته یکدفعه سوئیچ کنند رو نگارش دات نت درسته میشه با تغییر تنظیمات اینکار رو حل کرد ولی همه که بلد نیستند - ضمنا گذشته از اینها سنگینی دلفی دات نت بیشتر کاربران رو ترد کرده تا جذب - عدم پشتیبانی سایر شرکتهایی که قبلا کار میکردند به لحاظ توسعه کامپوننت های گذشته یکی دیگه از دلایلشه - درسته معایب زیاد داره ولی محاسن هم داره نمیشه از حقیقت فاصله گرفت - باور کنید اگر شرکت سازنده دلفی وارد مبحث اپن سورس بشه دلفی از قدرتمندترین زبانهای برنامه نویسی محسوب میشه چون هنوز با دلفی 7 کارایی میشه انجام داد که نگو و نپرس چه برسه به نگارشهای جدیدش که البته هنوز نوپا هستند البته منظورم با کایلیکس کارای عزیز نبود منظورم تو انتشار سورس هستش - میدونستید من تو یک سایت مربوط به آمار برترین زبانهای برنامه نویسی وقتی دیدم دلفی در سال 2007 تو رده شماره 13 قرار داره کمی ناراحت شدم ولی وقتی دیدم تو رده کار با اتوماسیون کارخانجات به لحاظ کار با سخت افزار تو رده 3 قرار داره به خودم کمی بالیدم (نگارش دلفی 7) که دارم سعی میکنم برنامه نویس دلفی باشم - به امید اون روز - اگر کسی به فکر آینده ما نیست بیایید خومون باشیم - به زودی !!! توسعه کد باز با پروژه های بزرگ به زبان دلفی - رایگان = همراه با آموزش (نرم افزار حقوق و دستمزد - حسابداری و آموزش تصویری و.... ) به زودی !!! بر روی سرور مجزا با محیطی کاملا مولتی مدیا - دانش خود را به اشتراک بگذاریم index0 (http://www.delphi-expert.150m.com) = خبر افتاحیه به زودی در همین سایت اعلام خواهد شد

success is doing , not wishing :تشویق:

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

iranfa
چهارشنبه 23 مرداد 1387, 16:27 عصر
اوایل دلفی 7 ( قربونش برم ) اما این اوخر دلفی 2007
به نظرم خیلی دلفی 2007 بهتره فقط تنها مشکلم اینه که هنوز به اون نسبتی که واسه دلفی 7 کامپونت وحود داره واسه دلفی 2007 وجود نداره ...
من اینقدر به دلفی علاقه دارم که تبدیل شده به تعصب .

samprp
پنج شنبه 24 مرداد 1387, 02:21 صبح
سلام
من از دلفی 7 و دلفی 2007 استفاده می کنم البته خیلی کم از دلفی 7
الانم دارم کم کم به 2007 مهاجرت می کنم

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

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

samprp
پنج شنبه 24 مرداد 1387, 02:41 صبح
اینو یادم رفت بگم
کار با دلفی 7 واقعا وقت گیریه .
امکانات اضافه شده در این ورژنای اخیر واقعا سرعت برنامه نویسی رو بالا می برن.
امکاناتی مثل کوئری بیلدر برای ساخت کوئری های اس کیو ال
امکان ساخت مدل از پروژتون برای درک بهتر از اون .
امکان گروه بندی کد ها با استفاد از سارند ها و خیلی امکانات دیگه

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

New VCL features since Delphi 7 (http://dn.codegear.com/article/34325)
New IDE features since Delphi 7 (http://dn.codegear.com/article/34323/)
New Delphi language features since Delphi 7 (http://dn.codegear.com/article/34324)
Debugger Enhancements since Delphi 7 (http://blogs.codegear.com/chrishesik/2007/04/13/33946)

What's new in Delphi 2006 (http://dn.codegear.com/article/33411)

hassan_blue
جمعه 25 مرداد 1387, 12:23 عصر
همون که yashar666 گفت ولی یه برنامه نویس باید به روز کارکنه.

iamehsan56
دوشنبه 10 فروردین 1388, 15:35 عصر
delphi 7 only

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

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

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

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

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

vcldeveloper
دوشنبه 10 فروردین 1388, 23:58 عصر
جدا از باگهای زیادی که دلفی در امنیت قفل های نرم افزارهای شما داره
کدوم باگ؟!!


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

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


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

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

mithridates
سه شنبه 11 فروردین 1388, 14:43 عصر
آقای کشاورز در دلفی همانند ویژوال بیسیک همه event ها با آدرساشون ضبط میشه بخاطر همین با dcc دیکامپایل میشه.

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

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

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

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

با تشکر

mithridates
سه شنبه 11 فروردین 1388, 15:19 عصر
این هم یادم رفت بگم تو دلفی 7 میشه SysInit و System رو تغییر داد ولی تو 2007 به راحتی 7 نیست و دردسر های بیشتری داره

vcldeveloper
سه شنبه 11 فروردین 1388, 23:07 عصر
در دلفی همانند ویژوال بیسیک همه 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 اضافه شدند، کاربرد چندانی ندارند.

Developer Programmer
چهارشنبه 12 فروردین 1388, 09:22 صبح
جدا از باگهای زیادی که دلفی در امنیت قفل های نرم افزارهای شما داره


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

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

mithridates
چهارشنبه 12 فروردین 1388, 16:35 عصر
نکنه شما همه انسان هارو دیتابیس کار میبینی؟ من راجب احتیاجات خودم که نزدیک به 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 هفته به کاربرای این سایت دادم ارزش داشت که بگه بیشتر توضیح بده. ولی خوب ادب و احترام از یاد دوستان رفته

vcldeveloper
چهارشنبه 12 فروردین 1388, 18:07 عصر
نکنه شما همه انسان هارو دیتابیس کار میبینی؟ من راجب احتیاجات خودم که نزدیک به 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 برای آن سورس ها تعریف کرده از آنها استفاده کردی، و نمیتونی ازشون انتظار داشته باشی که سرویسی خارج از اون چیزی برایش تعریف شده، بهت بده.


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

mithridates
چهارشنبه 12 فروردین 1388, 18:18 عصر
بورلند؟! خدا بیامرزه بورلند رو! ما داریم از 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, 18:44 عصر
شما برو به یکی که فکر میکنی چیزی در زمینه توسعه نرم افزار سرش میشه، بگو من برای توسعه برنامه هام، هر بار فایل های Runtime زبان برنامه نویسی ام را ویرایش می کنم، ببین چی بهت میگه!


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

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

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

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



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


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

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

شاید هم یادشون رفته بوده با کارشناس update نرم افزار صحبت کنند !!!!!!! ( ربطش رو خدا میدونه )

vcldeveloper
پنج شنبه 13 فروردین 1388, 03:01 صبح
اینکه من برای 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 دلفی تست نشده، و ممکن هست خواسته یا ناخواسته انواع و اقسام باگ های عجیب و غریب را برای پروژه های آن فرد به ارمغان بیاره!

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

vcldeveloper
پنج شنبه 13 فروردین 1388, 04:34 صبح
راجب بورلند و ... من از اول حرف از بورلند زدم که شما اون جواب رو دادی. من از اول راجب سیاست های قدیم دلفی و اینکه مدت ها قبل باید انجام میشد صحبت کردم
عجب! پس ما باید یک مفسر هم استخدام کنیم که حرف های شما را برای ما تفسیر کند! من در پست های شما جایی ندیدم که از بورلند حرفی زده باشید! اشاره داشتید که سیاست های دلفی اشتباه هست، و من هم در جایی این مطلب را مطرح کردم. جواب هم شنیدید که من از سیاست های بورلند انتقاد کردم، نه از سیاست های 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 در لینک زیر ارائه کردم، که دوباره اینجا تکرار نمی کنم:
http://barnamenevis.org/forum/showthread.php?t=151716

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


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


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

mithridates
جمعه 14 فروردین 1388, 09:19 صبح
اصولا ساده ترین راه همیشه بهترین راه نیست.


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



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


اولا شما قفل طراحی میکنی با سورس به همه میفروشی؟

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




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


اگر نگفته بودم چرا گفتی خدا بورلند رو بیامرزه !

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



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


من این رو در اولین پست گفتم



در delphi 7 شما میتونید مدل لود برنامه رو تغییربدین.


شما آخرین حرفامونو کپی میکنی بعد میگی نمیبینم !!! :قهقهه:

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



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




پس اگر کدی در یک پروژه بی مصرف باشد، عملا توسط کامپایلر دلفی کامپایل نمیشه.



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



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


چه خصوصی چه عمومی من هم برنامه نویس این زبان هستم و احتیاجاتم رو باید از بهتزین راه بر طرف کنم




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


اوه راست میگید باید میگفتم کارشناس توسعه نرم افزار

vcldeveloper
جمعه 14 فروردین 1388, 17:37 عصر
اولا شما قفل طراحی میکنی با سورس به همه میفروشی؟
قرار نیست به کسی با سورس بفروشی، بلکه سورس آن باید متناسب با حجم آن توسط یک یا چند نفر نگهداری بشه. چیزی که میگی بیشتر بدرد پروژه های کوچکی که توسط یک نفر نگهداری میشه میخوره.


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


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


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



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




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

mithridates
جمعه 14 فروردین 1388, 20:24 عصر
بلکه سورس آن باید متناسب با حجم آن توسط یک یا چند نفر نگهداری بشه


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



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


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



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


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



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


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



هر ابزاری برای برطرف کردن یک محدوده از نیازها طراحی شده، و نمیتونه به هر نیازی پاسخ بده،


با دات نت کاری ندارم ولی یه زمانی میگفتن با دلفی نیمشه درایور نوشت ولی شد. بعدش هم TObject کجا درایور کجا!!!!

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

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



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


خنده من به این دلیل بود نه اون دلیل! چراکه نتنها کسی ایرادی نمیگیره بلکه راه حل هم میدن! به نظر خود من هم خیلی خوب هست که کسی دستش باز باشه حالا تو هر چیزی. اگه کسی علمش رو داشته باشه چرا تغییر نده !

vcldeveloper
جمعه 14 فروردین 1388, 23:59 عصر
هر پروژه ای 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 هست. جاوا هم همین خاصیت را داره، و میشه از روی بایت کدهای تولید شده به راحتی به سورس دست پیدا کرد. البته می بینی که خیلی از برنامه های بزرگ با جاوا نوشته میشند، و خیلی از شرکت های بزرگ دنیا روی آن سرمایه گزاری های هنگفت می کنند.

merced
شنبه 15 فروردین 1388, 04:13 صبح
اين چند پست آخر خيلي جالب بودند.

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

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

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


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

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

mithridates
شنبه 15 فروردین 1388, 22:36 عصر
درایور چی؟ درایور 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.

mithridates
شنبه 15 فروردین 1388, 22:44 عصر
dcc32.exe -U..\inc -B -CG -JP -$A-,C-,D-,G-,H-,I-,L-,P-,V-,W+,Y- %1 %2

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

mithridates
شنبه 15 فروردین 1388, 22:57 عصر
جاوا هم همین خاصیت را داره، و میشه از روی بایت کدهای تولید شده به راحتی به سورس دست پیدا کرد. البته می بینی که خیلی از برنامه های بزرگ با جاوا نوشته میشند، و خیلی از شرکت های بزرگ دنیا روی آن سرمایه گزاری های هنگفت می کنند.


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



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


اگه چشمهاتون باز میشد و میدید آیکون خنده نشان دهنده همه چیز در اون پست هست !



این فکر رو باید همون اول، قبل از اینکه کدی نوشته بشه می کردی، تا الان مجبور نشی لقمه را دور سرت بچرخانی و Runtime دلفی را تغییر بدی، و از اینکه تغییر Runtime دلفی در نسخه های بعد از 7 سخت تر شده، شکایت کنی


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



واقعا شما پست ها را میخونی، یا همینطوری یه چیزی ول میکنی؟!!


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

Developer Programmer
شنبه 15 فروردین 1388, 23:30 عصر
ز این به بعد سعی کنید پست هارو فقط بخونید نظرات نا آگاهانه ندین




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).

mithridates
شنبه 15 فروردین 1388, 23:30 عصر
برای این کدها از این فایل System.pas استفاده کنه، و برای مابقی کدها از System.pas دیگه ایی؟!


این جمله رو معنی کنید لطفا که اگه به SearchPath ربطی نداره به چی ربط داره!

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

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

mithridates
شنبه 15 فروردین 1388, 23:33 عصر
دوست عزیز اون برای خلاص شدن از همین runtime ها هست و اینکه آدرس فضای کرنل تعریف بشه

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

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

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

ولی تمام دستورات کرنل داخل خود دلفی کامپایل میشن

mithridates
شنبه 15 فروردین 1388, 23:39 عصر
نمونه سورس های زیادی هم میتونید پیدا کنید. انجام برخی هک ها لازم هست ولی مهم این هست که کامپایل برنامه توسط دلفی صورت میگیره و کاملا قابل سازگار با linker هست که شما میگین. دلفی به خودیه خود امکان ساخت exe بدون dll اضافی هم نداشت ولی راحت انجام میشه.

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

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

mithridates
یک شنبه 16 فروردین 1388, 00:11 صبح
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 و ... اجرا نمیشن

mithridates
یک شنبه 16 فروردین 1388, 00:20 صبح
این هم حیفم میاد مطرح نشه!

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

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

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


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

vcldeveloper
یک شنبه 16 فروردین 1388, 01:29 صبح
احتمالا شما هر پروژه ای رو شروع میکنین همه چیرو از اول مینوسین. از شما بعید نیست ! ولی من نمیتونم تا جایی که خبر دارم خیلی از برنامه نویسان دیگه هم که کاملا مسلط هستن همچین کاری نمیکنن . 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 و برای نشان دادن توانایی های خودش یا نقاط ضعف و قوت یک ابزار هست، و قابل استفاده بصورت جدی یا در یک نرم افزار تجاری نیست.

mithridates
یک شنبه 16 فروردین 1388, 16:33 عصر
جواب همه مسائلی که مطرح کردی اینکه شما خودتو به ... میزنی!

اولا یک برنامه قفل اگه تالا دیده باشی ربطی به یه یونیت عمومی نداره که تو همه پروژه ها بخواد استفاده بشه که احتمالا ندیدی یا اگه دیدی قفلت یه پروژه 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}

vcldeveloper
دوشنبه 17 فروردین 1388, 02:14 صبح
اولا یک برنامه قفل اگه تالا دیده باشی ربطی به یه یونیت عمومی نداره که تو همه پروژه ها بخواد استفاده بشه که احتمالا ندیدی یا اگه دیدی قفلت یه پروژه opensource بوده که زحمت کامپایلش رو کشیدیLOL، رفتار تو در این تاپیک واقعا جالب توجه هست. با یک نگاه به دو صفحه قبل، میشه به روشنی دید که یک توصیه عمومی و تعدادی نظر درباره انتخاب نسخه دلفی مطرح کردی:


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

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

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

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

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


من گفتم اگه runtime دستکاری بشه user32.dll به فایل اضافه نمیشه!از یک جمله عمومی درباره تغییر runtime به اینجا رسیدی که منظورت از تغییر در runtime هر تغییری نبوده، بلکه فقط یک نوع تغییر خاص بوده!

در ادامه، خودت رو زدی به کوچه علی چپ (یک اصطلاحی هست، ما میگیم فلانی خودش رو زده به کوچه علی چپ، نمیدونم شما بهش چی میگید)، و سعی کردی وانمود کنی که اصلا توصیه ایی و بحث عمومی مطرح نبوده، و تو فقط داشتی درباره یک پروژه خاص که نوشتن یک قفل توسط خودت بوده صحبت می کردی، و دامنه صحبت هات هم محدود به همون پروژه بوده! طوری که اگر کسی پست های 6 صفحه اول تاپیک را نمیخواند، و عنوان تاپیک را هم نمی دانست، و از اوایل صفحه 7 شروع به خواندن مطالب تو می کرد، فکر می کرد تاپیکی درباره پروژه ساخت قفل تو زده شده، و در حالی که تو سعی داری درباره پروژه ساخت قفل خودت توضیح بدی، دیگران همچون افرادی که از مریخ آمدند، متوجه بحث تو نمی شوند، و حرف هایی بی ارتباط با موضوع تاپیک مطرح می کنند!

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

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

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

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



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

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



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


نکته آخر اینکه؛ مطابق قوانین سایت، باید پست های تو در صفحات 7 و 8 این تاپیک را حذف می کردم، چون در آنها سعی داشتی این مطلب را القاء کنی که توضیحات تو فقط درباره پروژه ساخت قفل خودت بوده، که در صورت قبول این مطلب، باید پست های تو تحت عنوان off-topic حذف می شدند.
پست هایت را به دو دلیل حذف نکردم:
دلیل اول اینکه مطالب تو، با توجه به پست هایت در صفحه 6، از ابتدا درباره پروژه ساخت قفل خودت نبود، بلکه در ادامه مجبور شدی برای دفاع از خودت همچین سیاستی در پیش بگیری.
دلیل دوم هم این بود که توضیحاتت را در جواب من می دادی، و اگر پست هایت به عنوان off-topic حذف می شدند، فردا تو یا دیگران مدعی می شدید که به شما ظلم شده، و در این سایت مدیران نظرات خودشان را به دیگران دیکته می کنند، استبداد وجود دارد، و امثالهم. همانطور که در اوایل بحثت هم داشتی به این وادی وارد می شدی:

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

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

موفق باشی

sql_qassem
سه شنبه 18 فروردین 1388, 18:50 عصر
هيچي چي جاي دلفي 7 رو نمي گيره . در نسخه هاي بالاتر همه معتقدند بهتر از .net استفاده كرد.

vcldeveloper
سه شنبه 18 فروردین 1388, 19:09 عصر
هيچي چي جاي دلفي 7 رو نمي گيره . در نسخه هاي بالاتر همه معتقدند بهتر از .net استفاده كرد. منظور از همه کی هست؟!! اگر برنامه ایی با نسخه های بالاتر دلفی را بشه تحت دات نت نوشت، برنامه با دلفی 7 را هم میشه. دات نت یک زبان برنامه نویسی نیست، یک پلت فرم توسعه نرم افزار هست. کسی که بخواد در پلت فرم دات نت با زبان دلفی برنامه بنویسه، میتونه از Delphi Prism استفاده کنه. دلفی در معنایی که در این تاپیک مورد بحث قرار گرفته، یک ابزار توسعه تحت پلت فرم Win32 هست.

یک حرفی بزنید که یک مقدار جنبه فنی داشته باشه!

mithridates
چهارشنبه 19 فروردین 1388, 18:06 عصر
حرف های شما کاملا بی اساس است چون مطالب مختلفی که بحث شد جواب سوالات شما بود

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



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




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





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




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


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

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

http://barnamenevis.org/forum/showthread.php?t=153571

از دانت نت به عنوان زبان نام برده و گفته با دات نت ننویس. برو دوباره نظر بده بگو اولا دات نت پلتفرم هست نه زبان. دوما فایل های دانت رو میشه پک کرد که سورس در نیاد !!!! سوما جاوا هم به سورس تبدیل میشه پس جاوا هم ننویسیم!

احتمالا ایشون نظراتشون غیر فنی هست و یادشون رفته از فرد فنی و حرفه ای مثل شما کمک بگیرن. یادشون هم رفته که میشه فایل های دات نت رو پک کرد تا نشه سورس رو دید
(ناگفته نماند بردیا جان استاد هستند. قصد من باز کردن حرفهای آقای کشاورز هست)


راستی decompiler جاوا که خود سورس رو مثل دات نت بده یادت رفت لینک بدی همه ببینن

انتظار داری هر حرفی بزنی کسی هم از خودش دفاع نکنه؟ واقعا که مدیر به شما میگن

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

Securebit
چهارشنبه 19 فروردین 1388, 19:05 عصر
از دانت نت به عنوان زبان نام برده و گفته با دات نت ننویس. برو نظر بده


در آن پست منظورم از زبانهای دات نتی کلی بوده و اشاره دارد به تمام زبانهای که در پلت فورم NET. نوشته می شوند که همه نام این زبانها را می دانند.

mithridates
چهارشنبه 19 فروردین 1388, 19:11 عصر
من هم همین رو میگم دیگه بردیا جان. آقای کشاورز به همین چیزها گیر میده. شما استاد هستی خودت همه هم میدونن

من هم وقتی بحث سر چیزه دیگه بود از واژه زبون استفاده کردم و ایشون گیر دادند

حالا اینکه از اول اشتباه کردم توی این تاپیک راجب امنیت و ... صحبت کردم یا کامل منظور نرسوندم چیزه دیگس ولی این هارو گفتم که بدونن به چه چیزهایی گیر داده و وقتی هم توضیح میدی مثل الان که توضیح دادی میگه شما احتیاج به مفسر داری !

پست های شما هم دنبال میکنم و استفاده میکنم ولی از اونجایی که این بحث کش دار شده لازم بود از نظرات امنیتی شما هم تو این بحث استفاده بشه که از این بابت شرمنده شما هستم

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

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

با تشکر

دکمه64
چهارشنبه 19 فروردین 1388, 23:51 عصر
با سلام
وقتی به این نظر سنجی نگاه میکنیم می بینیم که دلفی 7 طرفدارهای زیادی داره
البته منم از دلفی 7 استفاده می کنم و دوست دارم از ورژن های بالاتر مثل 2007یا 2009 استفاده کنم
دلیل این که هنوز استفاده نکردم این هست که هنوز موفق به گرفتن این نرم افزار ها نشدم از طرفی فکر میکنم تفاوت های زیادی با دلفی 7 داشته باشه و نیاز به مطالعه و پیدا کردن کتابهای آموزشی باشم.
الان که نظر سنجی رو می بینم ، نمی دونم آیا باید به سراغ ورژن های بالاتر برم یا نه ؟:متفکر:

vcldeveloper
پنج شنبه 20 فروردین 1388, 00:58 صبح
در مورد runtime خودت گفتی یک یونیت بنویسی متکی به runtime خودت با یونیت دیگران تداخل ایجاد میشه که جوابت رو گرفتیو حرفات عوض شد.
کدی که من گفتم را ننوشتی. در پست قبلی بهت گفتم که چیزی که تو مثال زدی کاملا متفاوت با چیزی هست که من از تو خواستم. چند بار هم در چند پست توضیح دادم که منظور من چی هست. فکر نکنم نیاز به تکرار مجدد داشته باشه، و میشه با مطالعه همون پست ها منظور من رو متوجه شد.


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


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


راستی decompiler جاوا که خود سورس رو مثل دات نت بده یادت رفت لینک بدی همه ببینن
من جایی ننوشتم که همچین decompilerایی برات در اینجا ارائه می کنم. قراری هم باهات نگذاشتم که همچین چیزی برات بیارم. برات توضیح دادم که مسئله Decompile شدن یک مسئله ذاتی در محیط های Manage شده هست، جاوا هم این نقطه ضعف رو داره، و فقط مخصوص دات نت نیست. تو مدعی شدی که Decompilerهای جاوا اسم متغیرها رو نمیدند. من یادم نمیاد جایی مدعی شده باشم که اسم متغیر میدن یا نمیدند! گفتم کدهایشان به راحتی Decompile میشه. جایی هم از تو ندیدم که ادعا کنی کدهای جاوا به راحتی Decompile نمیشه، که من بخوام مثال نقض بیارم.


آقای کشاورز به همین چیزها گیر میده.
بله، بحث هایی که در اینگونه تاپیک ها مطرح میشند مهم هستند. اینگونه تاپیک ها با تاپیک های پرسش و پاسخ فرق می کنند. خیلی از مراجعه کنندگان به این تاپیک ها فقط به این دلیل به اینگونه تاپیک ها مراجعه می کنند که بتونند یک راهنمایی درباره مسیر پیش رویشان، و آینده شغلی و تحصیلی شان پیدا کنند.
اگر همین بحث چند روزه شکل نمی گرفت، و جنابعالی مجبور نمیشدی بگی که منظورت فقط پروژه ساخت قفل خودت و تجربیاتت در آن پروژه بوده، یک کاربر تازه کار دلفی که می خواست راه آینده اش را انتخاب کنه، باید چه نتیجه گیری می کرد؟!
اون بنده خدا با دیدن پست تو که در آن به باگ های متعدد امنیتی در دلفی پرداخته بودی، از کجا باید می دونست که تو از Bug یک تعریف مخصوص به خودت را داری، و این چیزهایی که تو بهشون میگی باگ، malfunction در نرم افزار نیستند، بلکه توسط طراحان دلفی پیاده سازی شدند؟
تعداد پروژه هایی که در آنها برنامه نویس ناچار باشه RTL دلفی را تغییر بده (بجز برای Bug fix) شاید به نیم درصد هم نرسه. تازه در همون موارد هم به نظر من باید طرف چند وقت وقت میگذاشت و فکر می کرد که آیا دلفی برای آن پروژه مناسب هست یا نه. وقتی به این کاربران یکی از نکات ضعف نسخه های جدید دلفی را سخت بودن ویرایش RTL در آنها معرفی میکنی، انتظار داری اون بنده خدا که شاید در تمام طول عمرش هم نیاز به همچین چیزی پیدا نکنه، چه تفکری پیدا بکنه؟!

تازه بعد از یک صفحه بحث، کاربر خواننده این تاپیک با خواندن پست های بعدی تو و جواب هایی که در یافت کردی، متوجه میشه که مواردی که بهش اشاره کردی باگ نبودند، و مشکلاتی هم که درباره شان صحبت کردی، فقط برای پروژه تو و محدود پروژه های مثل آن صدق می کنند، و دلفی هم برای همچین پروژه هایی طراحی نشده، هر چند هر کس میتونه به دلخواه خودش از آن برای هر پروژه ایی استفاده بکنه، ولی اینگونه پروژه ها در وظایف دلفی به عنوان یک ابزار RAD مطرح نیستند.
کسی که در اینگونه تاپیک ها مطلب می نویسه، باید خیلی بیشتر از اینها دقت بکنه. نمونه اش خودت هستی. آقای bardia_dst (http://barnamenevis.org/forum/member.php?u=50994) در تاپیکی اشتباها از دات نت به عنوان زبان نام برده. بعید می دونم که حتی به فکر ایشون هم می رسید که کسی بخواد بر اساس همون یک کلمه در پست ایشون، دات نت را یک زبان بدونه. ولی تو تحت تاثیر همان یک کلمه، برای اثبات گفته ات، به پست ایشون استناد کردی. این یعنی فردی مثل ایشون که در تالار امنیت سایت مشغول هست، باید خیلی دقت بکنه، چون کاربرانی مثل تو در اون تالار، حتی روی کلمات و واژه های ایشون هم حساب باز می کنید.

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

vcldeveloper
پنج شنبه 20 فروردین 1388, 01:05 صبح
وقتی به این نظر سنجی نگاه میکنیم می بینیم که دلفی 7 طرفدارهای زیادی داره
دلفی 2009 در این این نظرسنجی وجود نداره. اگر درست یادم باشه، اون موقع من خودم هم به دلفی 7 رای داده بودم.


البته منم از دلفی 7 استفاده می کنم و دوست دارم از ورژن های بالاتر مثل 2007یا 2009 استفاده کنم
در تالار مقالات دلفی یک تاپیکی برای مقاله Reasons to Migrate from Delphi 7 to Delphi 2009 هست. پیشنهاد می کنم آن مقاله را حتما دانلود کنید و بخوانید. امکانات مهم اضافه شده به دلفی بعد از دلفی 7 تا کنون را با مختصری توضیح و در صورت لزوم تصویر شرح داده.

mithridates
پنج شنبه 20 فروردین 1388, 19:40 عصر
نمی خوام بحث رو دیگه کش دار کنم چون تا 100 روز دیگه هم ادامه بدیم حرف و ایراد زیاد میشه گیر آورد تو پست ها



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


من هم بارها توضیح دادم برنامه امنیتی با برنامه عمومی فرق داره. یه یونیت تنها نیست و به صورت پروژه ای استفاده میشه. حذف اون کدها به درد چه برنامه ای میخوره؟ فقط به درد برنامه هایی که فرم ندارند و احتیاج به حذف کدهای اضافی دارند. مثل قفل ها. dll های هوک . ویروسها. تروجان ها و این مدل برنامه ها.

تو این برنامه ها استفاده از dcu اصلا مجاز نیست چون هر اشتباه باعث Restart سیستم میشه و یا ایجاد ایراد تو بعضی برنامه ها . بهتره برنامه نویس 100% کد رو در اختیار داشته باشه.

مثلا اگه از کد آقای madshi هم استفاده کنی به مشکل میخوره تو بعضی برنامه ها که راحت میشه اثبات کرد.




این بنده خدا که خودشون توضیح دادند منظورشون چی بوده


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

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

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



بله، بحث هایی که در اینگونه تاپیک ها مطرح میشند مهم هستند


فقط بحث ها مهم هستند؟ با ادب و احترام صحبت کردن مهم نیست؟



برات توضیح دادم که این یک ویژگی ذاتی محیط های Manage شده هست،

جاوا درسته که قایل دیکامپایل هست ولی از اونجایی که اسم متغیرها و فانکشن هاشون تو سورس بدست اومده میشه a1, a2 و چیزهایی شبیه به این خیلی نامفهوم و به هم ریخته هست ولی دات نت خود سورس رو تحویل میده که این به نظر من خیلی خیلی فرق داره چون من کلی کد دات نت رو سورس داراوردم ولی واسه جاوا پدرت در میاد بفهمی چی به چیه ! اصلا قابل مقایسه نیست

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

mithridates
جمعه 21 فروردین 1388, 13:20 عصر
نتیجه گیری کلی:


تکه اول در پست اول:



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

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

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

ادامه این قسمت:

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


این پست اول من بود. ایراداتی که به این قسمت گرفته شد:



آقای کشاورز:
اتفاقا من فایل های system.pas و sysInit.pas مربوط به دلفی 7 و دلفی 2009 را با هم مقایسه کردم، ولی تفاوتی که شما گفتید، در آنها وجود نداره!




من:
فقط مواردی اضافه شده به 2007 که در کارهای سیستمی و برنامه های کوچک تفاوتی نداره




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

در هیچ نسخه ایی از دلفی، غیر از دلفی 8، شما مجبور نیستید از VCL استفاده کنید، و می تونید کل برنامه را از ابتدا با استفاده مستقیم از APIهای ویندوز بنویسید.

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

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

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

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

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


فردا میخواستی بگی Managed Code دات نت باگ داره، چون نمیتونی باهاش درایور Kernel Mode بنویسی!

این حرف شما مثل این هست که کسی بگه IL و Reflection در دات نت باگ هستند، چون با وجود این دو قابلیت، به راحتی می توان کدهای دات نت را Decompile کرد!

برای این مسائل هم ابزارهای مختلفی برای Packکردن برنامه یا به هم ریختن کد وجود دارند.


درایور چی؟ درایور Kernel Mode ویندوز؟! یکی با دلفی بنویس که ما هم ببینیم!

کامپایلر دلفی یک کامپایلر User Mode هست.

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



اگه با دقت مقایسه کنیم من تو این قسمت گفته بودم میتونید مدل لود برنامه رو تغییر بدین!

پس منظور من Edit بوده وگرنه چطور میشده دستوراتی که در لود برنامه هست تغییر کنند.

چرا به user32 رسیدیم؟ از اونجایی که ذکر کردم مورد استفاده در برنامه های سیستمی و کوچک بوده پس احتیاجی به تغییر حرفام نبوده چون در برنامه های سیستمی اگه از دستورات user32 استفاده کنید منجر به restart سیستم میشود. نیازی به حدث زدن نبود

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

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

در جایی گفتم از زبون دات نت چون دیکامپایل میشن استفاده نکردم در پروژه هام. که باید مثل بردیا جان تغییر میدادم و میگفتم تمام زبانهای که در پلت فورم NET. نوشته می شوند

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



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


با توضیحاتی که راجب نظر خواهی شنیدم بهتر بود افرادی مثل Madshi و ... از ابتدا حدث میزدند که 64بیت مشتری های کمتری داره و نباید از دلفی استفاده میکردند تا تو این چند سال مجبور به تبدیل کدهاشون نشن. (جدا عرض میکنم و قصد توهین ندارم و روی سخن من با برنامه نویسان دلفی هست)

موفق و پیروز باشید

Developer Programmer
جمعه 21 فروردین 1388, 13:33 عصر
اه ... بابا حاجی کوتاه بیا دیگه... تاپیک داره مثل آدامس کش میاد...واسه چی هی آف تاپیک میدی .. ول کن دیگه

golbafan
سه شنبه 29 اردیبهشت 1388, 12:25 عصر
من از زمانی که دلفی 7 رو دیدم (سال2002) عاشقش شدم و با اون ازدواج کردم ولی 2 ماه پیش طلاق دادم و دلفی 2007 که واقعا بهتر عمل میکنه رو گرفتم

adinochestva
سه شنبه 29 اردیبهشت 1388, 12:51 عصر
من از زمانی که دلفی 7 رو دیدم (سال2002) عاشقش شدم و با اون ازدواج کردم ولی 2 ماه پیش طلاق دادم و دلفی 2007 که واقعا بهتر عمل میکنه رو گرفتم
2007 رو هم طلاق بده برو به طرف 2009 تا weaver بياد كه بازم طلاق بگيري و ...

golbafan
شنبه 02 خرداد 1388, 18:42 عصر
2007 رو هم طلاق بده برو به طرف 2009 تا weaver بياد كه بازم طلاق بگيري و ...

بعد از چند تا بچه موفق و پول بیار با 2007
چشم...