PDA

View Full Version : مشکل تو نوشتن چندتا تابع



tefos666
جمعه 25 مرداد 1387, 21:01 عصر
سلام دوستان من با دلفی خیلی وقته کار میکنم ولی به نظر خودم تا حالا هرچی کار کردم الکی بوده چون از رو یه اصول جلو نرفتم و فقط تجربی بوده و یه چیزی تو مایه های وصله پینه کد نویسی میکردم وقتی سورس کد یه چند تا برنامه البته به زبان ویژوال بیسیک رو دیدم تازه متوجه اشتباهاتم شدم و حالا که برنامم بزرگ شده و به مشکلات متعددی خوردم راه برگشتی ندارم جز اینکه برنامم رو از اول ولی با اصولی بهتر و مطمئن مجددا بازنویسی کنم واسه همینم میخوام سبک کد نویسی خودم رو یه مقدار شبیه اون چیزایی که دیدم بکنم فکر کنم اینطوری مشکلاتم برطرف بشه امیدوارم با کمک شما بزرگواران موفق بشم - شرح مشکلاتی که دارم به صورت زیر هستش :

1- من تو سورس کد دوستم که با زبان ویژوال بیسیک بود دیدم خودش اومده یکسری تابع و فانکشن نوشته در قالب یک ماژول اونو ذخیره کرده نه تنها واسه اون برنامش بلکه واسه سایر برنامه هاش هم از اون استفاده میکنه که خودش خیلی خوبه

اولین تابع اون واسه ارتباط با پایگاه بانک اطلاعاتیش هستش که مشخص میکنه بانکش چی هست اس کیو ال یا اکسس و یا ..... ضمنا اون اطلاعات رو تو یک فایل متنی ذخیره میکنه و کنار فایل اصلیش هست که 3 تا پارامتر توشه نام بانک اطلاعاتی - نام سرور (در صورت شبکه بودن و کلمه عبور (odbc))

دومین تابع یک رکوردست هستش که خیلی جالبه هم sp توش اجرا میشه هم دستورات sql

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

حالا من میخوام اگر کسی میتونه لطف کنه یک 10 خط کد توپ واسه من بیچاره بنویسه که همیشه از اون استفاده کنم آخه خسته شدم از بس table ها رو به dataset ها به صورت ویژوالی وصل کردم و ....


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





Public cnn As New ADODB.Connection

Public Rs As New ADODB.Recordset
Public STRDataBaseName As String
Public ServerName As String



Public Sub prcOpenDb()
If cnn.State <> 1 Then
cnn.ConnectionString = "Provider=SQLOLEDB.1;Password=test;Persist Security Info=True;User ID=sa;Initial Catalog=" + STRDataBaseName + ";Data Source=" + ServerName
cnn.ConnectionTimeout = 15
cnn.CursorLocation = adUseClient
cnn.Open


End If
End Sub


Public Sub prcCloseDb()
If cnn.State = 1 Then
cnn.Close
End If
End Sub
Public Sub prcRecordset(Rs As Recordset, sp As String, Optional timeOut As Integer = 0)
prcOpenDb
cnn.CommandTimeout = timeOut
Set Rs = cnn.Execute(sp)
If Rs.State Then
Rs.Close
Rs.LockType = adLockOptimistic


Rs.Open
End If
End Sub
Public Sub prcCloseRS(Rs As Recordset)
If Rs.State = 1 Then
Rs.Close
End If
End Sub
نمونه استفاده یکی از توابع اون


Call prcRecordset(rs1, "select max(no_san) as MxSan1 from SanadHdr where strdate='" + CStr(Date1) + "'")

دوستان خیلی گلید اگه کمکم کنید هرچند همینطوری هم گلید !!!:تشویق:

success is doing not wishing !!!:شیطان:

tefos666
یک شنبه 27 مرداد 1387, 19:50 عصر
دوستان کسی نمیتونه یک کمکی بکنه ؟ کمک !! کمک !! کمک !! کمک !! :قهقهه: F10

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

قابليت ها :
- اتصال به بانكهاي مختلف (access/sql server )
- فرم ساده ورود اطلاعات قابل به ارث بري.(BaseForm)
- تعريف كاربر.(UserDefine)
- فراخواني عكس ها و لگوها از روي فايل بر اساس تنظيمات فايل ini .
- تعريف پوسته براي برنامه (نمونه رنگ و عكس فرم و قابليت گسترش بر حسب سليقه شما).(Template)
- فرم درباره سيستم .(About)
- فرم پيغام فارسي (ناقص است )(Message)
- فرم ورود به سيستم همراه با رمزگذاري و رمز گشاري كلمه عبور
- يونيت شامل توابع : تبديل تاريخ ، پيغام خطاي فارسي ، ...... (Tools_Function)
- فرم كاركرد كاربران در فرمهاي مختلف. (Logs)


http://barnamenevis.org/forum/attachment.php?attachmentid=20770&d=1216640439

success is doing , not wishing !!!

Vahid_moghaddam
دوشنبه 28 مرداد 1387, 14:27 عصر
منم یه جا یه برنامه دیدم که موشک می فرستاد هوا. کسی هست 4 خط کدشو بنویسه؟
.....
راهنمایی:
اگه کتاب فارسی خوب گیرتون نمیاد، یه ebook دانلود کنید. اگه نمی تونید ebook پیدا کنید، به سایت های آموزشی delphi سر بزنید.

vcldeveloper
پنج شنبه 31 مرداد 1387, 03:14 صبح
نمونه کدهایی مه تو سورس دوستم دیدم اگر همینا هم تبدیل به دلفی بشه فکر کنم کارم راه بیفته
درباره دلفی مطالعه کنید. کارهایی که دوستتون براش کد نوشته در دلفی بصورت کامپوننت های از پیش آماده شده موجود هست و نیازی نیست همچین کدهایی را براش بنویسید، برای مثال می تونید درباره AdoConnection و AdoDataset در دلفی تحقیق کنید.

tefos666
سه شنبه 05 شهریور 1387, 08:28 صبح
سلام در پاسخ به دوستان عزیز باید بگم که اولا فکر نکنم 3 تا فانکشن برای کانکت شدن به دیتابیس مثل موشک هوا کردن باشه چون بعد از تحقیقات خودم اونو تو 3 تا فانکشن کمتر از 5 خط نوشتم کلا 15 خط دوما در پاسخ به جناب کشاورز با عرض شرمندگی من خودم از طرفداران پروپاقرص اپن سورس هستم خصوصا در دلفی ولی فکر نمیکنید همین وابستگی ما به کامپوننت هستش که برنامه نویسی رو تو کشور ما ........ متاسفم برای این که دوستانی اینجوری فکر میکنند - دوست عزیز من اگر اول تاپیکم رو میخوندی متوجه میشدی که نوشتم خودم چندین ساله برنامه نویسی دلفی میکنم و آشنایی نسبی کلی با دلفی دارم ولی این تاپیک رو زدم تا روشی رو دوستان ارائه کنند که دیگه ما به صورت ویژوالی تو دلفی اینقدر این دیتاست ها رو به هم وصل نکنیم یا اصلا کدش رو ننویسیم بیاییم با همفکری یک فانکشن کاملی رو بنویسیم که نه تنها من نوعی بلکه هر کسی که قصد داره تازه شروع کنه و..... بیاد اینجا از ستون محکمی که با فکر و ایده چندین نفر برنامه نویس حرفه ای ایجاد شده برنامه خودش رو بنا کنه همیشه بیاد داشته باشیم که (share your knowladge ) نه اینکه مثل اون دوست گلمون بجای اینکه وقت خودش رو صرف این کنه که بیاد من رو تمسخر کنه واسه اینکه خواستم کمی اطلاعات خودم رو افزایش بدم - ندانستن عیب نیست نپرسیدن عیب است .
امیدوارم روزی برسه که این خساست تو نگه داری کد بین ما ایرانی ها از بین بره و به سمت دنیای اپن سورس پیش بریم برید یه سر به سایتها و کشورهایی که تو این زمینه فعالیت میکنند بزنید اونوقت میفهمید شیرینی یادگیری چه لذتی داره البته قبلا هم تو جای دیگه گفتم منظورم لقمه آماده نیست ولی با این همه جای اینکه امثال من بیشتر وقتش رو صرف این کنه که تو همچین جایی دنبال کد باشم و آخرش هم بی نتیجه یکبار یک جا بیام و مطمئن کدی کامل رو ببینم اگر غیر از اینه پس هدف این سایت چیه ؟؟ فکر نمیکنید کمی از هدف اصلی فاصله گرفتیم و بیشتر برای از سر باز کنی چواب هایی کوتاه میدیم ؟ به نظر من مشکلی نیست حتی اگر وب سایت پولی بشه ولی در عوض با محتوا (جواب هایی کامل برای پاسخ ها) سرتون رو درد آوردم ببخشید .:لبخند:

success is doing , not wishing !!!

vcldeveloper
سه شنبه 05 شهریور 1387, 08:56 صبح
من خودم از طرفداران پروپاقرص اپن سورس هستم خصوصا در دلفینمی دونم این چه ربطی به بحث شما داره! به حل مشکلات یک فرد یا ارئه یک سورس کد در یک انجمن نمیگن Open-Source!


ولی فکر نمیکنید همین وابستگی ما به کامپوننت هستش که برنامه نویسی رو تو کشور ما ........ متاسفم برای این که دوستانی اینجوری فکر میکنندالان دوره Structural Programming نیست که من برای کارهای مختلف FUNCTION بنویسم! الان دوره OOP هست، و همه ترجیح میدن برای کارهای مختلف کلاس های خودشون رو بنویسند و با اونها فریم ورک اختصاصی خودشون رو تولید کنند. استفاده از کامپوننت یکی از روش های مفید استفاده از OOP هست. در یک کامپوننت کل منطق کار در قالب یک بسته بندی ارائه میشه که کاربر کامپوننت حتی نیازی دانستن چگونگی کارکرد آن نداره. استفاده از کامپوننت نه تنها بد نیست، بلکه موجب افزایش سرعت کار و reusability کد میشه. اینکه عده ایی فقط دنبال کامپوننت آماده می گردند، دلیل بر بد بودن کامپوننت نیست!


برای کانکت شدن به دیتابیس مثل موشک هوا کردن باشه چون بعد از تحقیقات خودم اونو تو 3 تا فانکشن کمتر از 5 خط نوشتم کلا 15 خط یک کامپوننت لزوما یک کنترل بصری نیست. اگر به اون 15 خط خودتون نگاه کنید، می بینید توش از کامپوننت های VCL دلفی استفاده کردید! چون من فکر نمی کنم کاموننت های اتصال به بانک اطلاعاتی دلفی را دور زده باشید و خودتان 15 خط کد API ویندوز برای اتصال به بانک اطلاعاتی نوشته باشید!!! اگر هم می خواستید این کار را بکنید:
1- از 15 خط بیشتر می شد.
2- ارزش خاصی نداشت، چون کدتان با سایر کدهای دلفی و سایر برنامه نویسان همخوانی نداشت و مجبور بودید برای هماهنگی با آنها، دوباره کدهای جدید بنویسید.


نتیجه اخلاقی:
وقتی درباره چیزی اطلاع خاصی ندارید، زیاد در له یا علیه اش بحث نکنید.

موفق باشید

tefos666
سه شنبه 05 شهریور 1387, 10:05 صبح
نتیجه اخلاقی:
وقتی درباره چیزی اطلاع خاصی ندارید، زیاد در له یا علیه اش بحث نکنید.


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

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

بازار رقابت همیشه هست اونی که بیشتر میدونه ادعای کمتری داره - یه ذره از استاد گرامی جناب خرسندی یاد بگیریم کم میاد زیاد و پربار مینویسه با کسی هم دعوا نمیکنه !!! در آخر شرمنده ولی چیزی که عوض داره گله نداره

success is doing , not wishing !!!! :کف::بامزه::شیطان:

Vahid_moghaddam
چهارشنبه 06 شهریور 1387, 14:07 عصر
فکر می کنم گفتن اینکه آقای کشاورز سطح اطلاعاتشون پایینه کم لطفیه و گفتن اینکه ایشون چون کدی برای شما نذاشته به خاطر به هم خوردن کاسبیشه، مضحکه. یه نگاهی به پستهایی که ایشون دارن بندازین.

اما در مورد مطلب شما، چطوره ما بیایم از چرتکه شروع کنیم، با همفکری هم بسازیم و بسازیم تا کامپیوتر رو دوباره اختراع کنیم؟ یا چطوره برای پیشرفت برنامه نویسی در ایران delphi و java و .net رو بذاریم کنار با اسمبلی شروع کنیم؟

من مدتی در شرکتی کار می کردم که یکی ادعا داشت خداوند sql server هست یکی دیگه صبح تا شب کارش پیدار کردن bug های دلفی بود و یکی هم اعتقاد داشت FrameWork نسخه 1 اونقدر قابلیتهاش کامله که نیاز نیست بریم سراغ framework نسخه 2.
این آقایون هم به شدت با استفاده از کامپوننتها مخالف بودن. مخصوصا با کامپوننتهای جدید. مشتری برنامه با شکل و شمایل vista می خواست و کامپوننتهای دوستان متعلق به دوره windows 95 بود. اونها با هر چیز جدیدی مخالف بودن. اونها با هر فکر جدیدی مخالف بودن. و فقط و فقط به یک دلیل: اونها نمی تونستند با چیزهای جدید جلو برن.

vcldeveloper
چهارشنبه 06 شهریور 1387, 19:17 عصر
نتیجه اخلاقی اینکه : درخت هرچی پربار تره سر به زیر تره ، وقتی مدیر یک انجمن بجای پاسخ دادن به سوالات دنبال بحث کردن و تمسخر افراد باشه وای به حال اعضای انجمن.
پست های تاپیک اینجا حاضر هستند، می تونید چند ماه بعد برگردید و اینها را دوباره بخونید. احتمالا طراحات VCL، MFC، Net Framework و غیره عقلشون ناقص بوده، یا می خواستند با ارائه یکسری کامپوننت و فریم ورک، شما را مشغول این امکانات بچگانه کنند تا شما از نوشتن Function غافل بشید و خدای نکرده روی دست آنها بلند نشید!


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

در هر حال، انشاء الله که موفق باشید.

tefos666
سه شنبه 12 شهریور 1387, 15:50 عصر
با سلام

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



نتیجه اخلاقی:
وقتی درباره چیزی اطلاع خاصی ندارید، زیاد در له یا علیه اش بحث نکنید.

ضمنا همونطور که من نباید مدعی داشتن معلومات شخصی شوم - دیگری هم نباید نادانسته مدعی گرردد که او بیشتر میداند و یا حتی بلعکس .....

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


اما در مورد مطلب شما، چطوره ما بیایم از چرتکه شروع کنیم، با همفکری هم بسازیم و بسازیم تا کامپیوتر رو دوباره اختراع کنیم؟ یا چطوره برای پیشرفت برنامه نویسی در ایران delphi و java و .net رو بذاریم کنار با اسمبلی شروع کنیم؟


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

در اینجا از شما دوستان عزیز عذرخواهی کرده و خواهشمندم مرا ببخشید اگر منظورم را بد متوجه شده اید . مخصوصا جناب مهندس کشاورز :تشویق: حق نگهدارتون

success is doing , not wishing :گیج:

اصغر (پآچ)
چهارشنبه 13 شهریور 1387, 23:42 عصر
سلامتاپیک رو با یه بحث که هیچ طرفش قانع نمیشه خیلی از بحث جدا کردین. (این نظر شخصیه منه و طرف صحبتم با همه دوستانه) کاش............ (اگه من چیزی بگم شاید این تاپیک چندین ده صفحه بشه بیخیال...)موفق و موید باشید