PDA

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



karbon2010
09-01-2009, 12:42
سلام
چطور میشه یک پوشه را توسط برنامه یک فولدر را به یک فایل تبدیل کنیم
و توسط خود برنامه بالعکس این کار را انجام دهیم
ممنون
یا حق

Payman_62
09-01-2009, 16:20
سلام.
امکان تبدیل فولدر به فایل وجود نداره. این قضیه ربطی به برنامه نویسی نداره. به بحث امکانات ویندوز مربوطه. فولدر فولدره و فایل فایل.
البته پسوندهایی هستند که اگر در انتهای فولدر قرار بدیم فولدر به حالت قفل شده یا ... در میاد ولی همچنان فولدر هست.

kalekhar
15-01-2009, 19:28
امکان تبدیل فولدر به فایل وجود نداره اما میتونی فولدرتو کاری کنی که اگه کسی روی اون کلیک کرد یه چیز دیگه باز بشه و طرف هم که اونو باز میکنه فکر کنه داخل فولدر چیزی نیست.

نام فولدرتو چیزای پائین بزار تا خودت نتیجشو بگیری.

For Dial Up Networking
Dial-Up Networking.{992CFFA0-F557-101A-88EC-00DD010CCC48}
For Printers
Printers.{2227A280-3AEA-1069-A2DE-08002B30309D}
For Control Panel
Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}
My Computer
My Computer.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
For Network Neighborhood
Network Neighborhood.{208D2C60-3AEA-1069-A2D7-08002B30309D}
For the Inbox
InBox.{00020D75-0000-0000-C000-000000000046}
For the Recycle Bin
Recycle Bin.{645FF040-5081-101B-9F08-00AA002F954E}


از اینا زیاد هست.




یه کلک هست :31: که طرف فکر میکنه فولدرش به فایل تبدبل شده یه صورت که فولدره مخفی سیستمی میشه و یه فایل exe به شکل و نام همون پوشه همون جا ساخته میشه و همه میگن ای وای فولدر به فایل تبدیل شد. :27:

kalekhar
15-01-2009, 19:32
امکان تبدیل فولدر به فایل وجود نداره اما نامهایی است که اگه بر روی پوشه ها بزارید بجای باز شدن پوشه یه چیز دیگه ای باز بشه

مثلا:
For Dial Up Networking
Dial-Up Networking.{992CFFA0-F557-101A-88EC-00DD010CCC48}
For Printers
Printers.{2227A280-3AEA-1069-A2DE-08002B30309D}
For Control Panel
Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}
My Computer
My Computer.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
For Network Neighborhood
Network Neighborhood.{208D2C60-3AEA-1069-A2D7-08002B30309D}
For the Inbox
InBox.{00020D75-0000-0000-C000-000000000046}
For the Recycle Bin
Recycle Bin.{645FF040-5081-101B-9F08-00AA002F954E}

karbon2010
18-01-2009, 18:45
سلام
دستت درد نکنه این چیزها رو خودم یاد داشتم
من میخواهم یکسری اطلاعاتم را شامل چندین فایل و پوشه است را در یک فایل قرار بدهم مثل برنامه های فشرده سازی

kalekhar
19-01-2009, 13:25
ميتوني بيشتر توضيح بدي كه دقيقا ميخاي چيكار كني و چرا ميخاي اين كارو كني.

_H2_
19-01-2009, 13:27
سلام

نام فولدرتو چیزای پائین بزار تا خودت نتیجشو بگیری
استفاده از CLSID های رجیستری ویندوز به عنوان پسوند در سیستم عامل Vista کلاً حذف شده و دیگر پشتیبانی نمیشود.


من میخواهم یکسری اطلاعاتم را شامل چندین فایل و پوشه است را در یک فایل قرار بدهم مثل برنامه های فشرده سازی
تاپیک زیر را ببینید، شاید امکان دارد کمکتان کند...
forum.p30world.com/showthread.php?t=277938

karbon2010
19-01-2009, 18:59
سلام
ممنون من می خواهم یک برنامه بنویسم که تمام اطلاعاتم یک فایل قرار بگیره
مثل یک بازی که اطلاعاتش داخل چند فایل است فوتبال را ببین

_H2_
20-01-2009, 00:04
سلام

فوتبال را ببینمتاسفم نه اهل بازی هستم و نه فوتبال.
(دروغ نگویم به ندرت در شبیه ساز SEGA و PS1 تفننی بازیهای صده های پیشین را ...)


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

- شاید ساده ترین راه در VB6 استفاده از فایلهای MDB باشد، به راحتی میتوانید جداول مربوطه را بسازید و مثادیر مختلف و کوچک و بزرگ را ذخیره و بازیابی کنید، لزومی هم ندارد پسوند فایلتان را در پروژه نهایی حتماً mdb قرار دهید.

- راه دیگر که کمی در VB6 مشکل است و باید در نسخه های بالای VB7 اجرا شود، استفاده از یک کلاسس یا Collection است که هر بار در فایلی سریالی و دیسریالی شود.

- راه دیگر که جدیداً به شدت استفاده میشود استفاده از Parser های XML است که در نسخه های بالای VB7 بسیار ساده قابل انجام است.

ولی اگر قصد زیر را دارید:

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

اگر خواستید مثالی غیر فوتبالی و بازی ای بزنید تا بهتر متوجه شوم.
و مشخص کنید دیتاهای کوچک دارید؟ mdb چه ایرادی دارد؟
مجموعه های چندین فایل را دارید؟ rar چه ایرادی دارد؟

در نهایت فراموش نکنید که همواره میتوانید فرمت خاص خود را درست کنید و خودتان اطلاعات را دستی به حالت ترتیبی و رکوردی در فایلی بخوانید، ولی اینکار عملاً در این زمان چندان استفاده نمیشود و همه ترجیح میدهند به جای آنکه ماه ها وقت خود را صرف ساخت همچین برنامه های ذخیره سازی کنند و در نهایت هم باز باگ داشته باشد... بهتر میدانند از محصولات و فرمت هایی که سالها وجود داشته و باگهایش بسیار رفع شده و رسیعتر و ثابل اعتماد تر است استفاده کنند مثل فرمتهای cab و zip و rar برای فایلها و mdb و xml برای دیتاها.

موفق باشید.

karbon2010
20-01-2009, 00:14
سلام
از توضیحات ممنونم
به اینجا یک سری بزن

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
شاید کاملا منظورم را فهمیدی
من هم در ضمن کاری به بانک ندارم حساب بانک فرق می کند اون مال یه بحث دیگه است

_H2_
20-01-2009, 00:36
سلام
متاسفانه منظورتان را نمیتوانید خوب بیان کنید...
من فکر میکنم مشکلی که شما دارید این است که نمیخواهید فایلهای را اول داخل هارد extract کنید؟ درست است؟
یعنی هم میخواهید کل اطلاعات یک پک واحد باشد و هم در هارد extract نشود؟ همین را میخواهید؟

با این فرض...
در نهایت شما در خیلی از موارد مجبور به extract خواهد شد، چه بخواهید و چه نخواهید!
مثلاً بفرض توانستید یک فایل موسیقی wav را بدون Extract از داخل rar بخوانید!!! یعنی چه؟
یعنی اینکه ان را به صورت یک آرایه بایتی در داخل RAM خواهید داشت...
Dim buffer() As Byte
خوب حالا چطور میخواهید پخشش کنید؟؟؟

تمام دستورات معمول پخش صوت معمول فایلی در هارد را به عنوان ورودی میپذیرند.

یا حتی در بازی میخواهید یک فایل x که حاوی یکی از اشیا و کاراکترهای بازی است را لود کنید، دستورات DirectX هماهنگ با VB6 فقط از شما مسیر یک فایل را میگیرند؟

یا حتی اگر بخواهید یک exe را اجرا کنید، بازهم فقط دستور Shell را دارید که مسیر هارد را میخواهد؟

نتیجتاً چه فایل rar باشد و چه zip و چه یک فرمت مخصوص که خودتان مخصوص کار خودتان درست کرده باشید، در نهایت برای استفاده از محتویات در اکثر حالات نیاز به یک مسیر مستقیم هارد دارید که نتیجتاً منتهی به این میشود که فایل را قبلاً extract کرده باشید.

(
البته VB8,9 امکانات بسیار بیشتری دارد و دستتان برای این مانورها باز است، حتی میتوان یک exe را اگر CLR باشد بدون مسیر هارد و از داخل یک آرایه بایتی اجرا کرد و اکثر دستورات VB8,9 که با فایل کار میکنند علاوه بر مسیر هارد ، اطلاعات مستقیم داخل RAM را هم قبول میکنند.
)

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

دیگر گمان نکنم بتوانم کمک بیشتری بکنم.
موفق باشید.

karbon2010
20-01-2009, 09:56
سلام
دست شما درد نکنه اما باز داری راه رو کج می ری
من نمی خواهم بازی بسازم
اما نرم افزاری ساختم حاصل روزها وشبها تلاش تحقیق بی خوابی و .... بوده که نیاز به یک برنامه امنیتی بالا داره
البته قفل سخت افزاری برایش طراحی کرده ام البته نه مثل قفل های یو اس پی فرق میکنه
قفل نرم افزاری داره که اون هم روی یک الگوریتم بسیار پیچیده ساخته شده
حال برای استفاده از اون به یک چیز دیگری هم نیاز دارم به یک پوشه یا فایل یا .... قوی بسیار قدرتمند و غیر قابل نفوذ نیاز دارم
که بعد از نصب اطلاعات بطور دستی نتوان ویرایش کرد
اینکه مثال فوتبال را زدم این بود که بتوانی بهتر منظورم را درک کنی
حالا هرچی به نظرت می رسه بگو اگر هم می تونی کمک کنی دریغ نکن

karbon2010
20-01-2009, 10:00
من فکر میکنم مشکلی که شما دارید این است که نمیخواهید فایلهای را اول داخل هارد extract کنید؟ درست است؟
یعنی هم میخواهید کل اطلاعات یک پک واحد باشد و هم در هارد extract نشود؟ همین را میخواهید؟

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

_H2_
20-01-2009, 10:55
سلام
جواب اصلی من همین است...


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


میتوانید پوشه را هم مخفی کنید (hidden+system) ولی در نهاینت تضمینی برای عدم ورود کاربر نیست.
حتی مجوزهای دسترسی NTFS هم جلوی admin رایانه را نیمگیرد.

فقط اگر نوع فایلهایتان طوری باشد، که نیازی به وجود واقعی در مسیر هارد نداشته باشند، میتوان بدون extract هم انجام داد.
مثلاً فایلتان String یا html یا xml و تا حدودی فایلهای تصویری ... باشد یا اطلاعات باینری باشد که فرمتشان را خودتان تغییر داده اید....اصلاً چه فایلهایی هستند؟ فرمت چیست؟ شاید شاید شاید راهی داشته باشد؟

در کل اطلاعاتی باشد که بدون داشتن مسیر فیزیکی هارد و با موجود بودن آنها در RAM بتوان از آنها استفاده کرد، اگر اینطور باشد میتوان راه های خوبی برای ذخیره کل اطلاعات در یک فایل و استفاده بدون extract پیشنهاد داد.

(مجدداً تاکید میکنم که امکانات VB8,9 برای این قبیل کارها بسیار بیشتر است و حتی شاید میشد با یک وب مجازی روی پورت و ایجاد یک [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] تا مرز کاری خواسته ای پیش رفت و با یک مسیر فیزیکی شامل پروتکل به موارد داخل فایل بدون Extract دسترسی پیدا کرد ولی در هر صورت مخصوص VB8,9 است.)

=====

البته این را هم بگویم که من درک نمیکنم دیدن داخل یک پوشه چه مقایرتی با قفل نرم افزار دارد.
یعنی ذات برنامه شما مگر کدهای آن نیست آیا دیدن چند فایل عکس و موسیقی و دیتا میتواند مهم باشد و بدون خود برنامه سودمند باشد؟ (مواردش نادر است)
یعنی شما معمولاً باید exe و dll خود را حمایت کنید تا کپی نشوند یا قابل استفاده نباشند.

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

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

=====

متاسفانه کمک بیشتری نمیتوانم بکنم و نمیتوانم این امکان جادویی را تقدیمتان کنم.:11:
میبخشید و موفق باشید.

_H2_
20-01-2009, 12:30
سلام
ضمناً این را هم اضافه کنم که خود ویندوز وقتی داخل یک zip را explore میکنید و روی فایلی از داخل zip دبل کلیک میکنید، همان تک فایل را در extract میکند و در temp میریزد و برنامه مورد نظر را برای نمایش فایل فراخوانی میکند.

یا دیکشنری babylon که ذاتی Html دارد و در اصل دیتای برنامه است که مهم است و نتباید دیتا توسط نرم افزارهای دیگر قابل کش رفتن باشد ...با وجودی که میتوانسته extract نداشته باشد ولی هر گاه کلمه ای بزنید که حاوی تصویر باشد، تصویر را از داخل فایلهای bgl و bdc خود extract کرده و در temp میریزد و سپس نمایش میدهد.

و...

منظورم ان بود که انجام این عمل چندان هم غیر مرسوم نیست.

karbon2010
20-01-2009, 15:40
سلام



یا دیکشنری babylon که ذاتی html دارد و در اصل دیتای برنامه است که مهم است و نتباید دیتا توسط نرم افزارهای دیگر قابل کش رفتن باشد ...با وجودی که میتوانسته extract نداشته باشد ولی هر گاه کلمه ای بزنید که حاوی تصویر باشد، تصویر را از داخل فایلهای bgl و bdc خود extract کرده و در temp میریزد و سپس نمایش میدهد.


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

یکی از قسمتهای این نرم افزار من فرهنگ لغت و مترجم متون زبان ها انگلیسی فرانسه ایتالیا المانی اسپانیایی عربی به فارسی با پیروی کامل دستور زبان فارسی (البته تا جاییکه من یاد گرفتم (دیپلم)) است حال شما هم جای من باشید حاصل این همه تلاش ها و تحقیقات خود را براحتی در اختیار بقیق می گذارید (نفوذ در بانک اطلاعاتی) وبعد از ان خلق ا... بنام خود ثبت کنند؟

شاید استفاده از این نرم افزار را من رایگان قرار بدهم ولی اطلاعاتش را براحتی نمی گذارم
نظرت چیه؟

یک روش دیگه هست آن هم قفل گذاری روی پوشه است که براحتی قابل هک است
چه روش دیگری پیشنهاد می کنی

_H2_
21-01-2009, 00:11
سلام
2*2=4
!!!!
اکر سیستم فایلی میخواهید همانطور که بارها گفتم شما در اغلب دستورات ورودی بالاخره نیازمند دادن مسیر فایل هستید...
مثلاً C:\AAA\BBB\file.aaa
شما هر سیستمی بر مبنای فایل بگذارید در نهایت برای دستری فایلی باید مسیر دهید و ناچار باید extract داشته باشید، این بدهی است.

ولی اگر بنیان را بر فایل و پوشه نگذارید و روی دیتاها قرار دهید میتوان کارهایی کرد، مثلاً همین دیکشنری... این که دیگر پوشه و چندین فایل و سیستم فایلی نمیخواهید؟ خودتان طناب می اندازید دور گردنتان و میگویید دارم خفه میشوم!

شما فقط نیاز دارید یک گله لغت اولیه و یک گله توضیحات برای هر کلمه دارید، نکند میخواهید برای هر لغت یک فایل درست کنید؟؟؟
خلاصه اگر میخواهید گله ای لغت و گله ای توضیحات را ذخیره و بازیابی کنید و قابل کپی هم نباشد، میتوانیم ادامه دهیم وگرنه من اصلاً نمیتوانم کمکتان کنم.
یعنی اگر ...
1) تمرکز شما روی فایل و پوشه و آن تفکرات عدم دسترسی دیگران باشد، من شرمنده ام و در VB6 اصلاً و در vb8,9 تحت پروتکل http قابل انجام است.
2) ولی اگر تمرکز شما روی ذخیره و بازیابی دیتا باشد، میتوانم مذاکره را ادامه دهیم.

karbon2010
21-01-2009, 08:17
سلام
تا الان شاید صدها برنامه نوشتم با موضوعات مختلف ولی نمی دونم برای این موضوع چکار کنم می دونی تنها این قسمت است که من را معطل کرده من یک بانک اطلاعاتی حجیم دارم که البته با اکسس است موضوع این است که من اگر پسوردی روی بانک بگذارم که با نرم افزار فقل شکن اکسس می شود براحتی پسورد را پیدا کرد واینکه براحتی اطلاعات قابل برداشت است که من این را نمی خواهم حال شما نرم افزار بانک اطلاعاتی دیگه سراغ ندارید که امنیت بالای 95 در صد باشه البته من چند تایی دارم ولی امنیتش بدرد من نمی خوره تازه من باید کاری کنم که برنامه من هر طوری که باشه امنیتش 99در صد باشه تحت هیچ شرایطی قابل نفوذ باشه
نظری در این مورد داری؟
ممنون

_H2_
22-01-2009, 23:58
سلام
خوب اگر تمرکز را از روی فایل و پوشه برداریم و به حافظت دیتا فکر کنیم راه باز میشود!
اینجا بحث رمز نگاری اهمیت پیدا میکند...
شما باید دیتاهای خود را به صورت خام String در دیتابیس قرار ندهید و از یک الگوریتم رمزنگاری استفاده کنید.


خوشبختانه در VB8,9 کلاسسهای آماده ای بر مینای الگوریتم های بسیار بسیار مستحکم و معروف و روزی مثل DES و RC2 و Triple و... وجود دارد که میتوانید در زیر نمونه ای خیلی ساده از کد را مشاهده کنید:
forum.p30world.com/showthread.php?p=2721747

این الگوریتم ها کلیدهای ترکیبی هم برای رمزنگاری دارند که میتوان آن را نوعی passowrd فرض کرد.
ضمن اینکه میتوانید دیتای نهایی ار به جای فیلد String در فیلدهای Binary نگه داری کنید که امنیت بازهم بیشتر میشود یا میتوانید با قوانین ------ خروجی را به صورت Ascii معمولی در همان فیلدهای String ذخیره کنید.

ولی متاسفانه در VB6 خودتان باید مسئولیت رمزنگاری را در هر دوسمت بر عهده بگیرید.

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

- مثلاً میتوانید یک جدول map ایجاد کنید که به جای هر بایت و یا کاراکتر یک بایت دیگر باینری را جایگزین کنید

- میتوانید هر یک بایت و دو بایت و چهار بایت و... را با عددی مشخص XOR کنید.

- میتوانید برخی داده ها را با ریتم خاصی جابه جا کنید، مثلاً جای بایتهای زوج و فرد را عوض کنید.

- میتوانید هر بایت و دو بایت و چهار بایت و... را با عدد خاصی جمع کنید (به طور گردشی با حذف بیت نقلی) و یا شیفت دهید (مجدداً به طور چرخشی)

و...

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

=====

حتی میتوانید از فایلهای mdb استاده نکنید و چون احتمالاً نیازی به Uتغییر دیتا در زمان کارکرد برنامه ندارید و فقط میخواهید دیتایی را بخوانید، خودتان هم میتوانید یک فرمت فایل جدید بسازید که فقط شامل یک جدول باشد و فقط قابلیت نوعی خواندن را در کدتان بگذارید و البته بازهم نیاز به رمزنگاری خواهید داشت.

karbon2010
23-01-2009, 12:02
سلام
من برای رمز گذاری هیچ مشکلی ندارم امنیت برنامه من با 95 در صد است تحت هیچ شرایطی نمی شود راه برای نفوذ به آن پیدا کرد البته من یک حفره در درون آن قرار داده ام که شاید روزی بکارم بیاید برای همین می گم 95 درصد اما امنیت بانکهای اطلاعاتی من زیر 20 در صد است حتی با فرمتهای که خودم درست کردم با راهی برای نفوذ به آن است
قصد من از قرار دادن این پست همین بود که بتوانم راه نفوذ به بانک را بگیرم
نظرت در مورد چیه پیشنهادی داری ؟ من خودم راههای نفوذ زیادی یاد دارم می خواهم حتی خودم هم نتوانم نفوذ کنم
بانک های من زیاد هستند برای همین می خواستم همه را در یک پوشه قرار بدهم ! حال نظرت

_H2_
25-01-2009, 00:11
سلام
در خصوص حفاظت از پوشه هیچ راه کاری جدی و غیر قابل نفوذی نمیدانم.
اگر من بودم فقط فایلهای بانک اطلاعاتی ام را با قویترین الگوریتم های موجود (مثل DES) رمز نگاری میکردم و در نهایت وفقش برای یکپارچه کردن تمام فایلها در یک فایل مشترک و مشخص (همان که اول هم مطرح کرده بودید) به جای فرمت mdb از فرمت XML یا فرمت دست ساز خودم که حاصل سریالی کردم یک کلاسس بود استفاده میکردم.

(
System.Security.Cryptography.DESCryptoServiceProvi der
و
System.Runtime.Serialization.Formatters.Binary.Bin aryFormatter
و
System.Xml.Serialization.XmlSerializer
)

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

موفق و پیروز و سربلند باشید.

karbon2010
27-01-2009, 17:17
سلام
نمی تونم منظورت را خوب درک کنم
شما منظورتون چیه ؟ میشه واضع تر بیان کنید
می شه بگید من بانک اطلاعاتی خودم را چه طوری و با چه نرم افزاری یا کدی بسازم که امنیت اش بالا باشه
عرض کردم من الان با اکسس درست کرده ام اما مشکل اینجاست که پسورد اکسس را با
AccessPasswordRecovery
میشه بدست آورد به این هم کار نداره که پسورد تو چی هست بهت نشون می ده
حالا با این مطالب ایا می تونی در این زمینه کمکم کنی؟
در ضمن ممون که جواب هایم را در اسرع وقت می دهی
ممون

_H2_
29-01-2009, 00:05
سلام
تاپیک کمی طولانی شد، متاسفانه مشکل من با کمک به دوستان VB6 کار این است که دلم میخواهد کمک کنم و طبیعتاً سابقه طولانی در کار با VB6 هم داشته ام ولی الآن دیگر نمیتوانم کد VB6 بنویسم.
نتیجتاً راه نمایی شفاهی و بدون کد میشود!

ناچاراً برای آنکه منظور خودم را برسانم چند خط کد نمونه VB8 و VB9 مینویسم تا حداقل متوجه منظورم بشوید.

-----


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

کد ساده و چند خطی فوق یک شی Dictionary با ورودی String (برای کلمه) و خروجی String (برای معنی و شرح) میسازد. (متغیر col)

سپس دو کلمه و معنی (به عنوان نمونه) به آن اضافه میکنیم.
(میتوان در اینجا کدی را قرار داد تا کل بانک Access شما را بخواند و کل آن را به Dictionary خودمان Add کند.)

بعد یک شی BinaryFormatter میسازیم که میتوانید بخش زیادی از اشیا را در یک جریال اطلاعات(Stream) سریالی و دی سریالی کند. (متغیر serialiser)

بعد هم یک شی DESCryptoServiceProvider میسازیم که میتوانید هر جریان اطلاعاتی را (Stream) در هارد و RAm و وب و دانلود و آپلود و... را رمزنگاری کند. (متغیر cryptor)

مقادیر IV و Key را با دو کلید انحاصری بایتری که میتوان گفت به نوعی Password ما هم هستند، ست میکنیم.

در نهایت فایل C:\data.bin را به عنوان یک جریان ذخیره سازی اطلاعات(Stream) باز میکنیم (متغیر file)

کلاسس CryptoStream را هم با cryptor.CreateEncryptor به منظور رمزنکاری (کدینگ) یک جریال اطلاعات میسازیم و جریال file را هم تحویلش میدهیم تا خروجی را در جریان file ذخیره کند. (متغیر cstrm)

در انتها با دستور serializr.Serialize مجموعه دیکشنری col را سریالی کرده و در جریان cstrm ذخیره میکنیم که آن هم جریان را رمز نگاری کرده و در جریان file ذخیره میکند و در نهایت جریان file منتهی به فایل مذکورد در هارد میشود.
(یک جریان یا Stream را میتوانید مثل نوار نقاله ای فرض کنید که بسته های اطلاعات روی ان قرار دارد و در بین مسیر حرکت نوار نقاله ماشینهایی میتوانند عملیاتهایی روی آنها انجام دهند.)

نتیجه یک فایل 2 کیلو بایتی کاملاً خود ساخته (من در آورید میشود) که ضمن اینکه مخصوص شخص شما و شرکت شما است (دیگر mdb نیست) با هیچ برنامه موجودی باز نمیشود و اگر هم کسی قصد کند برنامه ای برای خواندن data.bin بنویسد به علت الگوریتم DES ناکام خواهد ماند.
شما به راحتی میتوانید به جای mdb از این فایل data.bin در برنامه تان استفاده کنید.
(گرچه که همچنان میتوانید در رایانه خودتان و برای خودتان از mdb استفاده کنید ولی در پروژه نهایی دیگر با mdb و کدهای آن کاری ندارید و از فایل خودتان استفاده میکنید.)
تازه این یک مثال خیلی ساده و ابتدایی است و چندان هم مهم نیست، به راحتی میتوان موارد امنیت پیچیده تر و چندگانه تر و بسیار بهتری را پیاده سازی کرد تا امنیت دیتا بیشتر شود.

مزیت جالب دیگر این فایل این است که چون خودتان ان را ساخته اید به راحتی میتوانید آن را با چندین دیتا و فایل دیگر یکپارچه کنید (یعنی چون جریانگرا است (Stream) نتیجتاً میتوانید آفست شروع خواندن را مشخص کنید) و در قالب یک فایل واحد جا دهید تا چیزی شبیه خواسته اولیه تان در یک فایل چندین دیتاهیا مختلف و متنوع داشته باشید.

karbon2010
29-01-2009, 17:17
سلام
خیلی ممنون ، متشکرم
باور کن اگه اینطوری توضیح نمی دادی باز هم گیج می شدم
اخه مشکل اینجانست که شما خیلی حرفه ای هستید و جای استاد ما قرار دارید و اینکه ما با این همه اطلاعات در مورد برنامه نویسی ویژال بیسیک باز هم در برابر شما چیزی نیستیم در ضمن من کم کم باید از ویژال بیسیک 6 به 9 کوچ کنیم دیگه نظرت چیه
فقط برای شروع کار بگو چه تغییراتی نسبت به 6 از لحاظ کد نویسی کرده
ممنون

_H2_
30-01-2009, 00:41
سلام

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


فقط برای شروع کار بگو چه تغییراتی نسبت به 6 از لحاظ کد نویسی کرده

- بیشتر دستورات و کلمه کلیدی پابرجا هستند.
For و If و Select و Dim و Sub و Function و ...

- نوع های متغییرها بسیار بسیار کامل و متنوع شده (1 تا 16 بایت-با/بدون علامت)
Byte-SByte-UShort-Short-UInteger-Integer-ULong-Long-Decimal-Single-Double-Char-String-Date-Object

- وراثت و پلیمورفیزیم و جنریک و Overload اپراتورها کاملاً ساپورت میشوند.
(مثلاً خودتان میتوانید یک نوع جدید عدد بسیار بزرگ را کدنویسی کنید (یک Int برای محاسبات اعداد بسیار بسیار بزرگ) و کد اپراتورهای * و + , - , / و...و... را برای نوع خودتان تعریف کنید تا هر زمان بین دو متغییرش علامت + قرارگرفت کامپایلر بدانید چه کدی باید اجرا شود.)

- البته کلمات کلیدی بسیار زیاد دیگری هم طبیعتاً برای نیاز روز اضافه شده از جمله TryCast و DirectCast و CType و TypeOf و SyncLock و Delegate و Try و AddHandler و RemoveHandler و... و... و...
برخی امکانات جدید 2008 نسبت به 2005 را میتوانید در تاپیک زیر مشاهده کنید:
forum.p30world.com/showthread.php?t=258200
(نه 2008 نصبت به 2003 و 1998
اختلاف 1998 با 2003 بسیار زیاد و فاحش است
و اختلاف 2003 با 2005 هم چشگیر است
ولی اختلاف 2005 به 2008 در ضمینه امکانات جدید کامپایلی همینها هستند)

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

- حدود 70 کنترلر و کامپونت فقط در بخش طراحی برنامه های عادی دسکتاپی وجود دارد (غیر از WPF)

- حدود چند هزار کلاسس و کامپونت آماده و از پیش ساخته شده هم در اختیار دارید که نمونه BinaryFormatter و DESCryptoServiceProvider و Dictionary را در فوق دیدید(فقط سه عدد در مقابل چند هزارتا!) نتیجتاً تقریباً نیاز به ActiveX های خارجی و کامپونتهای دیگران بسیار کمتر میشود.

- در هر صورت هم پشتیبانی فنی مایکروسافت از Win98 و VB6 رسماً قطع شده و حتی در تالار گفتگوی خود مایکروسافت هم هیچ تالار پاسخ گویی وجود ندارد، نتیجتاً به سرنوشت JWBasic و TurboBasic و QBasic دچار میشود و استادی در انها هم هیچ فایده آینده گرایانه ای نخواهد داشت.
( به نظر شخصی من حتی کارکردن با نسخه های قدیمی به بهانه شروع یادگیری برنامه نویسی هم نوعی حماقت و آتش زدن زمان ارزشمندتر از طلا است)

و...

و...

و...

- به صورت واضح و مشخص سه مبحث تغییرات کلی کرده که برای VB6 کارها در همان اوایل کار مشکل از میشود.
1- دستورات کار با فایلها و کلمه کلیدی سابق Open که در جهت هماهنگی با تکنولوژی های روز شبکه ای و جریان گرا، فایلها هم به سادگی فقط یک منبع Stream هستند که میتوانند منبع اصلی و اولیه تامین جریان Stream باشند و یا مثل مثال فوق مقصد یک جریان اطلاعاتی باشند.
ضمن اینکه با همین تفکرات جریانگرا به راحتی بسیار بیشتری میتوان تمام کارهای قبلی و معمول را انجام داد، ضمن اینکه جریانگرایی شما را به تعداد زیادی از کلاسسهای جدید به سادگی وصل میکند (مثل مورد فوق که میبینید کد ساده ای دارد)

2- دستورات گرافیکی برای رسم اشکال هم بسیار تغییر کرده و البته بسیار قوی و منعطف شده و تمام امکانات +GDI را به سادگی در اختیار شما قرار میدهد که به راحتی بدون پنجره و حتی در وب قابل استفاده است و خیلی راحت میتوان کل دستورات ترسیمی را هم به جای پنجره برنامه روی یک BMP داخل RAM انجام داد تا بعداً به راحتی قابل Svae و Load باشد.

3- دستورات و روشهای کار با بانکهای اطلاعاتی و ADO هم بسیار تغییر کرده و متنوع و منعطف و قدرتمندتر شده، ضمن اینکه در سوی دیگر تکنولوژی جدید LINQ اجازه مانورهای اطلاعاتی را به برنامه میدهد که خود من خوابش را در هیچ زبان برنامه نویسی نمیدیدم!
نمونه بسیار ابتدایی LINQ را میتوانید در تاپیک زیر مشاهده کنید:
forum.p30world.com/showthread.php?t=270368

و...

موفق باشید.

karbon2010
30-01-2009, 14:25
سلام
متشکرم از توضیحات خوبت
اگر چیز دیگری هم به ذهنت رسید که فکر کردی بدرد من می خوره می تونی بنویسی