SajjadKhati (03-06-16)
تشکر من الان مشکلم حل شده
تنها مشکلی دارم اینه چجوری میشه برگشت رو می خوام طوری باشه که متن تو حافظه موقت دخیره میشه مثلا کپی شده و تو نرم افزار دیگه ای مثل not pad یا هر نرم افزار دیگه ای پیست بشه
SajjadKhati (03-06-16)
برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط wikidrama برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
دقیق متوجه نشدم
برای ذخیره ی نوشته توی کلیپ بورد از پلاگین ClipBoard استفاده کنین
اگه منظورتون اینه که متن داخل کلیپبورد رو توی هر نرم افزار دلخواه مثل word و ... پیست کنین ، یه کم پیچیدگی خودشو داره و باید از کمپوننت اتوات یا ماژول لواکام استفاده کنین ولی اگه منظورتون اینه که کلا توی فایل متنی txt پیست کنین ، میتونین از قسمت توابع TextFile استفاده کنین
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
سلام
بفرمایید بچه ها تبدیل به تابع کردم که کار کردن باهاش راحت هه :
برای تیکه کردن و برش فایل :
کد:function SpliteFile(SourceFile, DestinationFileSplited, CharacterSpliteCount, FileBinary) if (FileBinary~=nil and (FileBinary=="" or FileBinary=="text" or FileBinary=="Text" or FileBinary=="t" or FileBinary=="T")) then FileBinary = ""; else FileBinary = "b"; end local openForReadHandle, err = io.open(SourceFile, "r"..FileBinary); if (openForReadHandle==nil) then return nil, err; end local destinationSplite = String.SplitPath(DestinationFileSplited); if (destinationSplite==nil or destinationSplite.Drive=="" or destinationSplite.Folder=="" or destinationSplite.Filename=="" or destinationSplite.Extension=="") then return nil; end local destinationFileNameInitialize = destinationSplite.Drive..destinationSplite.Folder..destinationSplite.Filename; local splitedAllFilesPath = {}; Counter = 1; while (true) do local readContent = openForReadHandle:read(CharacterSpliteCount); if (readContent~=nil) then destinationFilePath = destinationFileNameInitialize..Counter..destinationSplite.Extension; local openForSaveHandle, err = io.open(destinationFilePath, "w"..FileBinary); if (openForSaveHandle==nil) then readContent = nil; collectgarbage(); return nil, err; end openForSaveHandle:write(readContent); openForSaveHandle:close(); readContent = nil; collectgarbage(); splitedAllFilesPath[Counter] = destinationFilePath; Counter = Counter + 1; else break; end end openForReadHandle:close(); readContent = nil; collectgarbage(); return splitedAllFilesPath; end
توضیحات :
کد:--table SpliteFile(string SourceFile, string DestinationFileSplited, number CharacterSpliteCount [, string FileBinary]); => resault : table SplitedFilesPath
تابع SpliteFile :
آرگومان ها :
اولین ورودی (SourceFile) رشته ای هست از مسیر کامل فایلی که میخواین برش بدین (همراه نام و پسوند فایل)
دومین ورودی (DestinationFileSplited) رشته ای هست از مسیر کامل فایل که میخواین تیکه بشه (همراه نام و پسوند فایل) . نکته اینکه نام فایل خودش شماره گذاری میشه اتوماتیک بعد از بریده شدن
*** سومین ورودی (CharacterSpliteCount) عدد هست که تعداد کاراکترهایی که توی هر فایل باید نوشته بشه رو بهش میدین . اینکه بر اساس حجم داده شه ، خودتون جداگانه محاسبه کنین که هر کاراکتر که 8 بیت اشغال میکنه ، این عدد رو چند باید بدین تا به اندازه ی حجم مورد نظرتون بریده شه . فقط اینکه هر 160 میلیون (160000000) کاراکتر ، حجم 152 مگابایت میشه یعنی آرگومان سوم تون رو 160000000 بدین ، هر قسمت از فایل مورد نظرتون که تیکه شد ، 152 مگابایت میشه . و اینکه این عدد یعنی حجم هر فایل اگه بزرگتر باشه ، نوشتن فایل ها سریعتر انجام میشه و برنامه زودتر عمل اش رو انجام میده
*** تذکر مهم : سعی کنین این عدد یعنی سومین ورودی رو بزرگتر از 100 میلیون ندین چون متغییرهای لوا مثل سی شارپ نیست که ظرفیت اش تا اندازه ای که رم طرف جواب داد ، جا بشه یعنی متغییرهای لوا (حداقل نسخه 5.1) ظرفیت محدودی دارن و بیشتر از این احتمال جا نشدن همه ی کاراکترها توشون هست و اگه جا نشن ، ارور میدن که عملیات کنسل میشه . با این حال تا 200 میلیون رو که تست کردم مشکلی نداشت اما بیشتر از این ارور میداد . کلا پیشنهاد من اینه که 100 تا 150 میلیون بیشتر ندین که در این صورت ، تقریبا هر تیکه از فایل 90 تا 140 مگابایت میشه
هر چی این عدد بیشتر بشه مشخصه که متغییر باید توش بیشتر جا بشه و بنابراین نیاز به رم بیشتر میشه (200 میلیون کاراکتر اگه بدین فکر کنم حداقل 2 تا 4 گیگ رم خالی نیاز داشته باشه)
دقت کنین که شما ممکنه تا 300 میلیون هم برای این عدد بدین و موقع برش دادن مشکلی پیش نیاد ولی موقع ادغام کردن ، مشکل ایجاد میشه پس هر عددی که دادین ، بعدش ادغام کنین فایل را ببینین مشکلی پیش نیاد و اگه مشکل Memory Not Enough داد ، این عدد رو کم کنین . البته همونطور که گفته شد باید برای کار با فایل ها ، حافظه ی خالی در رم طرف رو چک کنین که به اندازه ی کافی فضای خالی داشته باشه که این مقدار کاراکتر (برای 200 میلیون ،2 گیگ رم خالی فکر کنم حداقل بخواد) توش جا بشه
*** کلا 150 تا 170 میلیون احتمالش خیلی کمه که ارور بده و هر چی عدد رو کمتر کنین (البته به رم خالی طرف هم بستگی داره) احتمال ارورش هنوز کم و کمتر میشه ولی طرف اگه هر چقدر رم خالی داشته باشه (مثلا 13 گیگ) ، بخاطر ظرفیت محدود متغییرهای لوا و همینطور 32 بیتی بودن اتوپلی (و در نتیجه 32 بیتی بودن پروژه مون) بیشتر از 200 میلیون کاراکتر توی متغییرمون جا نمیشه
چهارمین ورودی (FileBinary) که اختیاری هست و رشته ای هست که مشخص میکنه فایل مورد نظر باینری هست یا نه . 99 درصد فایل ها یعنی فایل هایی بجز فایل های txt ای که خودمون مینویسیم (نه اینکه هر فایلی که پسوند txt داره ، باینری نباشه ها) (فایل word و pdf منظورم نیست ها) که باینری نیستن ، بقیه یعنی همون 99 درصد فایل ها باینری هستن . یعنی فایل های exe و pdf و word و وییدئو و تصویر و ... همه شون باینری هستن . اگه فایل مورد نظرتون ، فایل باینری هست ، لازم نیست اصلا این آرگومان رو پر کنین و لازم نیست اصلا هیچ چی بدین (پر نکردن یا دادن nil فرقی ندارن با هم . فقط دقت کنید که nil دادن با رشته ی خالی یعنی "" دادن فرق داره) . اگه هم فایل تون باینری نیست ، فقط کافیه رشته ی خالی یا رشته ی "t" یا "text" بدین در این آرگومان
خروجی تابع :
یک آرایه (splitedAllFilesPath) که مسیر کامل تک تک فایل های تیکه و برش داده شده هست رو برمیگردونه . اگه ارور داده شه ، تابع nil رو در اولین متغییر و در صورتی که مشکل از تابع Open باشه ، پیام ارور رو بصورت رشته برمیگردونه.
*** تذکر : بعد از اجرای این تابع یا تابع پایین ، برای اینکه متغییرهای محلی تابع ، فضای اشغال شده شون از رم پاک شه ، از تابع collectgarbage() بدون ورودی استفاده کنین
برای ادغام فایل های بریده شده در یک فایل واحد :
توضیحات :کد:function MergeFiles(SplitedFilesPath, DestinationFileMerge, FileBinary) if (FileBinary~=nil and (FileBinary=="" or FileBinary=="text" or FileBinary=="Text" or FileBinary=="t" or FileBinary=="T")) then FileBinary = ""; else FileBinary = "b"; end local openForSaveHandle, err = io.open(DestinationFileMerge, "a"..FileBinary); if (openForSaveHandle==nil) then return nil, err end for i=1,#SplitedFilesPath do local openForReadHandle, err = io.open(SplitedFilesPath[i], "r"..FileBinary); if (openForReadHandle==nil) then return nil, err end readContent = openForReadHandle:read("*a"); openForSaveHandle:write(readContent); openForReadHandle:close(); end openForSaveHandle:close(); readContent = nil; collectgarbage(); end
کد:--MergeFiles(table mySplitedFilesPath, string DestinationFileMerge [, string FileBinary])
تابع MergeFiles :
آرگومان ها :
ورودی اول (SplitedFilesPath) ، یک آرایه ی رشته ای حاوی مسیر کامل تمام فایل های مبدا که همون فایل های تیکه و جدا شده هست ، هست (خروجی تابع SpliteFile در صورت موفقیت ، همچین آرایه ای رو برمیگردونه) (همراه نام و پسوند دونه دونه ی فایل های جدا شده)
ورودی دوم (DestinationFileMerge) رشته ای حاوی مسیر کامل فایل مقصد یا فایل واحد ای که میخواین ادغام کنین (همراه نام و پسوند فایل)
ورودی سوم (FileBinary) که همون ورودی آخر تابع SpliteFile هست که در بالا توضیح داده شد و اختیاری هست (بصورت پیش فرض برای فایل های باینری هه)
*** نکته : فایل های تیکه شده ، بسته به اینکه چه نوع فایل و با چه پسوندی باشن ، میتونین با اونکه جدا هم هستن اجرا بشن یا نه مثلا اگه فایل های ویدئویی با پسوند ویدئویی رو بصورت تیکه شده ذخیره کنین ، هر تیکه میشه مستقل اجرا بشه ولی اگه با پسوند ویدئویی ذخیره نکین ، مثل حالت عادی چون پسوندش فرق داره ، ممکنه توسط بعضی از پلیرها اجرا نشه ولی محتوای فایل درست هست حالا میخواد با هر پسوندی باشه (البته اگه موقع برش فایل مشکلی پیش نیاد که در بالا توضیح داده شد) . اما مشخص هست اگه فایل هایی مثل فایل های exe برش داده بشن هر تیکه از فایل های برش داده شده شون اجرا نمیشه و معنا نداره (حتی اگه همه ی تیکه هاش با پسوند exe ذخیره شن) تا زمانی که دوباره این فایل های بریده شده ی exe را در یک فایل واحد دیگه ادغام کنین که اون وقت قابل اجراست
مثال :
کد:mySplitedFilesPath = SpliteFile("G:\\Tolo 6\\narm afzar\\Other Software\\Virtual Tools\\VMware Workstation Pro 12.0.0 Build 2985596\\VMware Workstation Pro 12.exe", _SourceFolder.."\\New folder\\VMware Workstation Pro .exe", 100000000); if (mySplitedFilesPath~=nil) then MergeFiles(mySplitedFilesPath, _SourceFolder.."\\VMware Workstation Pro .exe"); end collectgarbage();
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
M A H R A D (09-06-16), mohammad- (28-06-16)
بفرمایید بچه ها اینم سورس اش
فقط چون روی کدها وقت نزاشتم ، چند تا مورد را باید رعایت کنین تا مشکلی پیش نیاد :
اول اینکه دکمه ی Merge را برای هر کدوم فقط یک بار بزنین وگرنه هر بار فایل را دوباره در ادامه اش مینویسه که هم باعث اجرا نشدن فایل میشه (در اغلب موارد) و هم حجیم شدنش میشه
دوم اینکه دو دکمه ی Merge مختلف رو پشت سر هم نزنین یعنی این طوری نکنین که MP3 Merge رو زدین ، بعدش pdf Merge رو بزنین . یعنی اول باید یک دکمه ی Splite رو بزنین و بعد دکمه ی Merge مربوط به اون رو بزنین
چون خودتون خواستین چند تا فایل mp3 و pdf و exe با پروژه هست که باعث افزایش حجم پروژه شد
پروژه رو چون داخل چند انجمن میخوام بزارم واسه همین توی این انجمن بطور خواص آپلود نکردم
از اینجا دانلود کنین با حجم 30 مگابایت
دانلود فایل سورس بصورت جداگانه
آخرین ویرایش توسط SajjadKhati در تاریخ 09-06-16 انجام شده است
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
AMD>INTEL (09-06-16), M A H R A D (09-06-16), mohammad- (28-06-16)
سلام ممنون از اطلاعات خوب شما
یک سوال من یک نرم افزار آموزشی طراحی کردم برای گرفتن مجوز باید اطلاعات نرم افزار را ذکر کنم مثلا
سلام
ممنون از پست های خیلی خوبتون
من یه سوال دارم ممنون میشم پاسخ دهید کمک خیلی زیادی می کنید به من
من یه نرم افزار طراحی کردم با اتوپلی و می خواهم مجوز بگیرم.
برای گرفتن مجوز یکسری اطلاعات را باید براشون بفرستم مثل :
شاخص هاي كمي نرم افزار: (فقط اعداد صحيح قابل قبول است)
حجم مجموعه نصب خودكار: *kb حجم مجموعه قابل نصب: * kb حجم مجموعه قابل اجرا: * kb تعداد خطوط كل كد منبع(بدون يادداشت و سطر خالي): * تعداد خطوط كل كد منبع(+يادداشت+سطر خالي): *
تعداد كلاس/پيمانه ها: * نام بزرگترين كلاس/پيمانه: * تعداد خطوط بزرگترين كلاس/پيمانه: * تعداد جدول ها/فايل هاي انباره داده: *
نام جدول/ فايل با بيشترين تعداد ستون/قلم داده اي: * تعداد ستون هاي جدول/ فايل با بيشترين ستون/ قلم داده اي: *
تعداد روال هاي ذخيره شده در پايگاه داده: * نام بزرگترين روال ذخيره شده در پايگاه داده: * این اطلاعات را چجوری پیدا کنم ؟؟؟
تعداد خطوط بزرگترين روال ذخيره شده در پايگاه داده: *
mohammad- (28-06-16), SajjadKhati (13-06-16)
برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط mohammad_mahdi64 برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
سلام
والا من دقیقا نمیدونم ولی این انگار بیشتر نرم افزارهایی که توی ویژال استودیو ساخته شد منظورش هست . اما چیزهایی که حدس میزنم :
حجم مجموعه قابل نصب: حجم فایل هایی که نصب میشن بر اساس کیلو بایت که اتوپلی خروجی اش پرتابل هه
حجم مجموعه قابل اجرا: حجم فایل هایی که اجرا میشن بر اساس کیلو بایت که همون فایل exe قابل اجرا خروجی که میزنن برنامه بالا میاد (یا افزونه های قابل اجرایی که استفاده شد مثلا اگه طرف افزونه ی nircmd رو استفاده کرد)
تعداد خطوط كل كد منبع(بدون يادداشت و سطر خالي): این که مشخص ههتعداد خط هایی که بدون کامنت و فضای خالی کد نوشته شد (کامنت توی اتوپلی با دو خط تیره -- شروع میشه که سبز رنگ میشه)
تعداد خطوط كل كد منبع(+يادداشت+سطر خالي): این هم که مشخص هه با کامنت و سطر خالی
تعداد كلاس/پيمانه ها: کلاس برای زبان هایی مثل سی شارپ بیشتر معنا داره هر چند لوا شی گرا هست ولی کلا تعریف کلاس و شی در لوا مثل بقیه ی زبان ها نیست . به هر حال آموزش شی گرایی در لوا در این سری آموزش های جدید داده شد . (توضیحات آموزش سری جدید رو پیگیری کنید برای آموزش شی گرایی)
تعداد جدول ها/فايل هاي انباره داده: خوب مشخصه تعداد جدول ها در دیتابیس
نام جدول/ فايل با بيشترين تعداد ستون/قلم داده اي و تعداد ستون هاي جدول/ فايل با بيشترين ستون/ قلم داده اي: این ها هم مسخصه
روال هم نمیدونم چیه
بهتره این مطالب رو در قسمت مباحث سی شارپ بپرسین که بچه ها بلدن و جواب میدن. من فقط همین قدش رو میدونستم اونم اگه اشتباه نباشه
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
mohammad- (28-06-16), mohammad_mahdi64 (14-06-16)
|
مرسی از پاسخ
در برنامه autoplay این اطلاعات کجان تمام متن برنامه یا همون کد هارو کجا میشه دید برنامه اتوپلی من زیاد اطلاعات ندارم فقط کلیکد گذاشتن و یک فرمان بهش دادم حالا از کجا باید بشمارم تعداد خط هارو؟؟
SajjadKhati (14-06-16)
تعداد خط های هر رویداد که مشخص هست ولی در کل باید تعداد خز های همه ی رویدادها رو حساب کنین و جمع بزنین (برای هر رویداد دونه دونه و جداگانه)برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط mohammad_mahdi64 برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
mohammad- (28-06-16)
سلام
آقاقسمت 9 لینکهاش مشکل داره...
SajjadKhati (19-07-16)
سلامبرای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط icloud برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
تا قسمت 24 که مربوط به آموزش های سری اول هست (برای 3 سال پیش) ، توی سرور پرشین گیگ آپلود شد که گاها مشکل قطعی داره . چاره اش ، چند ساعت تا چند روز صبر کردن هست فقط
اگه سری اول آموزش ها رو پیگیری میکنین ، پیشنهادم اینه همراهش ، قسمت 25 هم که علت اشکال های سری اول گفته شد رو هم ببینین
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
mohammad- (20-07-16)
1 کاربر در حال مشاهده این موضوع. (0 عضو و 1 میهمان)
Bookmarks