PDA

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



hamalous
11-07-13, 21:53
سلام من یه متن که دارای دو ستون دارم می خوام اعداد ستون دوم با هم جابجا بشن یعنی اگه 5-6 بشه 6-5 ممنون میشم کمکم کنید لطفا با سورس اگه ممکنه

ravegoat
11-07-13, 22:55
سلام!
عضویت تون رو در شهر سخت افزار تبریک می گم.:party:

سورسش پیوست شد.

موفق باشید
آرمین

hamalous
12-07-13, 07:32
سلام!
عضویت تون رو در شهر سخت افزار تبریک می گم.:party:

سورسش پیوست شد.


موفق باشید
آرمین

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

ravegoat
12-07-13, 14:26
خطا به خاطر این بود که در آخر فایل اصلی یه خط خالی وجود داشت (یک کارکتر NewLine اضافی) که خیلی راحت با گذاشتن یه شرط قابل حل بود. در ضمن شما ذکر نکرده بودید که اعداد ستون دوم ممکنه دو رقمی هم باشن و به خطر همین تبدیل درست صورت نمی گرفت. سورس اصلاح شده اش از پیوست قابل دریافته.

در مورد اون فایل Word دو تا ابهام وجود داشت:

به دلیل معلوم نبودن راست چین یا چپ چین بودن فایل نمیشه نظر داد ستون قرمز در سمت راسته و یا ستون مشکی؟!
بین ستون مشکی و قرمز در نگاه اول این طور به نظر میومد که چند تا کارکتر Space وجود داره ولی در عوض یه کارکتر بود که کد ASCIIش اصلا" وجود نداشت!! بنده این کارکتر رو با چند تا کارکتر فاصله جایگزین کردم.


در نتیجه بنده اون فایل Word رو در قالب یه فایل متنی (Main.txt) آوردم که به همراه سورس برنامه از پیوست دوم قابل دریافته. اگر مشاهده کردید پیش فرض های در نظر گرفته شده اشتباه بود سورس برنامه رو یه نگاه بندازید و سعی کنید خودتون برحسب نیازی که دارید تغییرش بدید؛ خیلی سخت نیست. این طوری سریع تر به نتیجه خواهید رسید.

موفق باشید
آرمین:give_rose:

hamalous
12-07-13, 19:43
خطا به خاطر این بود که در آخر فایل اصلی یه خط خالی وجود داشت (یک کارکتر NewLine اضافی) که خیلی راحت با گذاشتن یه شرط قابل حل بود. در ضمن شما ذکر نکرده بودید که اعداد ستون دوم ممکنه دو رقمی هم باشن و به خطر همین تبدیل درست صورت نمی گرفت. سورس اصلاح شده اش از پیوست قابل دریافته.

در مورد اون فایل Word دو تا ابهام وجود داشت:

به دلیل معلوم نبودن راست چین یا چپ چین بودن فایل نمیشه نظر داد ستون قرمز در سمت راسته و یا ستون مشکی؟!
بین ستون مشکی و قرمز در نگاه اول این طور به نظر میومد که چند تا کارکتر Space وجود داره ولی در عوض یه کارکتر بود که کد ASCIIش اصلا" وجود نداشت!! بنده این کارکتر رو با چند تا کارکتر فاصله جایگزین کردم.


در نتیجه بنده اون فایل Word رو در قالب یه فایل متنی (Main.txt) آوردم که به همراه سورس برنامه از پیوست دوم قابل دریافته. اگر مشاهده کردید پیش فرض های در نظر گرفته شده اشتباه بود سورس برنامه رو یه نگاه بندازید و سعی کنید خودتون برحسب نیازی که دارید تغییرش بدید؛ خیلی سخت نیست. این طوری سریع تر به نتیجه خواهید رسید.

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

ravegoat
12-07-13, 21:45
سورس جدید پیوست شد...

hamalous
13-07-13, 10:33
دوست عزیز ممنون من می خوام یه برنامه بنویسم که دو تا تکست باکس رو با هم مقایسه کنه یعنی اطلاعات تکست باکس یک رو در تکس باکس دو جستجو کنه و بالعکس و تفاوت تکست باکس یک رو با دو در فایلی به نام New 1 و دو را با یک در فایلی به نام New 2 ذخیره کنه ،من دو تا فایل متنی به نامهای 1 و 2 در ون سورس برنامه قرار دادم که به عناون اطلاعات تکست باکس 1 و 2 استفاده میشه در واقع می خوام این دو فایل با هم دیگه مقایسه بشند یه نکته راجع به مقایسه این دو فایل هم وجود داره که اگه مثلا عددی بصورت 5-5 54154 در یه تکست باکس وجود داشت و ده تا عدد بصورت 4-4 541540، 4-4 541541 ، 4-4 541542 ، 4-4 541543 ، 4-4 541544 ، 4-4 541545 ، 4-4 541546 ، 4-4 541547 ، 4-4 541548 ،4-4 541549 در یه تکست باکس دیگه وجود داشت این ده عدد رو با اون یه عدد به عنوان مشابه فرض کنه یعنی مثل اینه که اون یع عدد داخل هر دو تکست باکس وجود داره می دونم درخواست زیادی ولی اگه لطف کنید کمکم کنید و یا سورسی برای مقایسه دو تا تکست باکس سراغ دارین بهم بگین ممنون میشم من یه دستور با زبان vba که این دو کار رو انجام میده هم دارم اونم قرار می دم شاید بتونه کمکتون کنه ممنون

hamalous
14-07-13, 18:54
سلام دوست عزیز ممکنه در مورد مقایسه دو تکست باکس راهنمایی کنی من دو تا تکس باکس دارم می خوام مواردی رو که در تکست باکس 1 هست اما در تکست باکس 2 نیست به عنوان اختلاف در نظر بگیره و در خروجی چاپ بشه فرض کنید در تکست باکس 1 اعداد 110،120،130،140 باشه و در تکست باکس 2 اعداد 110 و 120 باشه می خوام در خروجی اعداد 130 و 140 به عنوان اختلاف چاپ بشه

ravegoat
14-07-13, 19:50
سلام دوست عزیز ممکنه در مورد مقایسه دو تکست باکس راهنمایی کنی من دو تا تکس باکس دارم می خوام مواردی رو که در تکست باکس 1 هست اما در تکست باکس 2 نیست به عنوان اختلاف در نظر بگیره و در خروجی چاپ بشه فرض کنید در تکست باکس 1 اعداد 110،120،130،140 باشه و در تکست باکس 2 اعداد 110 و 120 باشه می خوام در خروجی اعداد 130 و 140 به عنوان اختلاف چاپ بشه
سورسش پیوست شد.

hamalous
15-07-13, 08:36
دستتون درد نکنه عالی بود ولی مشکل من اینه که فاصله بین دو ستون در دو فایل اصلی من یکسان نیست برای همین حتی در صورت تشابه تمام موارد هر دو تکست باکس اما بازهم بخاطر همین فاصله بین دو ستون اونها را به عنوان تفاوت در نظر میگیره حالا سوال من اینه که چطور سورس برنامه رو تغییر بدم که فاصله بین دو ستون رو به عنوان اختلاف در نظر نگیره من سورس و دو فایل اصلی رو ضمیمه قرار می دم ممنون

ravegoat
15-07-13, 22:59
دستتون درد نکنه عالی بود ولی مشکل من اینه که فاصله بین دو ستون در دو فایل اصلی من یکسان نیست برای همین حتی در صورت تشابه تمام موارد هر دو تکست باکس اما بازهم بخاطر همین فاصله بین دو ستون اونها را به عنوان تفاوت در نظر میگیره حالا سوال من اینه که چطور سورس برنامه رو تغییر بدم که فاصله بین دو ستون رو به عنوان اختلاف در نظر نگیره من سورس و دو فایل اصلی رو ضمیمه قرار می دم ممنون
خواهش می کنم...

شما اگر قصد دارید تنها ستون های اول مقادیر هر دو جعبه ی متنی رو با هم مقایسه کنید کافیه با ترکیب دو دستور Mid و InStr ستون های اول رو جدا کنید. به این شکل که در در تسکت باکس اول تا قبل از کارکتر فاصله (Space) و در تکست باکس دوم تا قبل از Chr(9) رو جدا کنید (Compare1).
اگر هم قصد دارید هر دو ستون رو در مقایسه لحاظ کنید، با دستور Replace در تکست باکس اول کارکتر های فاصله (Space) رو با Null و در تسکت باکس دوم هم Chr(9) رو با Null جایگزین کنید و سپس این دو مقدار جدید حاصل از جایگزینی رو با هم مقایسه کنید (Compare2). این طوری اون ناهماهنگی بین فاصله ی ستون ها رفع میشه.

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

hamalous
16-07-13, 00:59
آره حق با شما ست دوست عزیز من تا جایی که تونستم فایلهای خروجی رو شبیه هم کردم و مشکلم حل شد خواستم بیام اطلاع بدم که شما لطف کرده بودین و زحمت سورس اون رو کشیده بودین ،می دونم زیاد سوال می کنم ولی من فقط یک هفته است که شروع کردم به کار با این زبان و مسلما تسلط شما رو ندارم بنابراین از سورس های شما برای یادگیری استفاده می کنم حالا به عنوان آخرین سوال یه کار دیگه هم می خوام این سورس انجام بده که توی فایلی که ضمیمه کردن توضیح دادم ممنون میشم در اینباره هم کمک کنید یه دنیا ممنون

ravegoat
16-07-13, 21:56
آره حق با شما ست دوست عزیز من تا جایی که تونستم فایلهای خروجی رو شبیه هم کردم و مشکلم حل شد خواستم بیام اطلاع بدم که شما لطف کرده بودین و زحمت سورس اون رو کشیده بودین ،می دونم زیاد سوال می کنم ولی من فقط یک هفته است که شروع کردم به کار با این زبان و مسلما تسلط شما رو ندارم بنابراین از سورس های شما برای یادگیری استفاده می کنم حالا به عنوان آخرین سوال یه کار دیگه هم می خوام این سورس انجام بده که توی فایلی که ضمیمه کردن توضیح دادم ممنون میشم در اینباره هم کمک کنید یه دنیا ممنون
سورس مورد نظر پیوست شد. اگر در موردش سوالی داشتید همین جا مطرح کنید.

موفق باشید
آرمین:give_rose:

hamalous
16-07-13, 22:21
سورس مورد نظر پیوست شد. اگر در موردش سوالی داشتید همین جا مطرح کنید.

موفق باشید
آرمین:give_rose:
ممنون دوست عزیز از توجه و صبرت ولی این سورسی که شما نوشتین چیزی که من خواهش کرده بودم نیست چون دوباره اون اعداد رو که در تایپک بالا عرض کردم به عنوان اختلاف در نظر میگیره من خواسته بودم اون مواردی که در بالا ذکر کردم رو به عنوان اختلاف در نظر نگیره یعنی در واقع نباید در خروجی موردی با ستون دوم 5-5 داشته باشیم ممنون

ravegoat
17-07-13, 07:31
ممنون دوست عزیز از توجه و صبرت ولی این سورسی که شما نوشتین چیزی که من خواهش کرده بودم نیست چون دوباره اون اعداد رو که در تایپک بالا عرض کردم به عنوان اختلاف در نظر میگیره من خواسته بودم اون مواردی که در بالا ذکر کردم رو به عنوان اختلاف در نظر نگیره یعنی در واقع نباید در خروجی موردی با ستون دوم 5-5 داشته باشیم ممنون
متوجه منتظورتون شده بودم فقط یادم رفته بود مقدار یه متغیری رو ریست کنم. سورس اصلاح و پیوست شد.

hamalous
17-07-13, 08:07
عالی بود دوست عزیز دستتون در نکنه حالا اگه بخوام برعکس این اتفاق هم بیفته باید چه تغییری توی سورسی که نوشتین بدم بهتر اینطور توضیح بدم این سورسی که شما زحمت کشیدین اون مواردی رو که ستون 5-5 داره رو با اون ده مورد مشابه می گیره و در تکست باکس 4 نمایش نمیده تا اینجا عالیه حالا می خوام برعکس این مورد هم باشه یعنی اون ده مورد رو مشابه این یه مورد بگیره یعنی در واقع 10 موردی رو که مشابه با اون یه مورد هست نباید در تکست باکس 3 نشون داده بشه ممنون میشم در این مورد هم کمکم کنید ممنون (در واقع اون ده مورد در تکست باکس اول قرار دارند و اونهایی که ستون دوم 5-5 دارند در تکست باکس دوم )

ravegoat
17-07-13, 18:24
عالی بود دوست عزیز دستتون در نکنه حالا اگه بخوام برعکس این اتفاق هم بیفته باید چه تغییری توی سورسی که نوشتین بدم بهتر اینطور توضیح بدم این سورسی که شما زحمت کشیدین اون مواردی رو که ستون 5-5 داره رو با اون ده مورد مشابه می گیره و در تکست باکس 4 نمایش نمیده تا اینجا عالیه حالا می خوام برعکس این مورد هم باشه یعنی اون ده مورد رو مشابه این یه مورد بگیره یعنی در واقع 10 موردی رو که مشابه با اون یه مورد هست نباید در تکست باکس 3 نشون داده بشه ممنون میشم در این مورد هم کمکم کنید ممنون (در واقع اون ده مورد در تکست باکس اول قرار دارند و اونهایی که ستون دوم 5-5 دارند در تکست باکس دوم )
اگه منظورتون رو درست متوجه شده باشم باید الگوریتمی که برای معادل سازی اون 10 مورد به کار رفته در جهت عکس هم کار کنه. چنین چیزی میشه ولی بهینه نیست. بنده یه ترفند دیگه به کار بردم که اگر سورس پیوست رو دانلود کنید متوجه میشید.

موفق باشید
آرمین:give_rose:

hamalous
17-07-13, 20:01
سلام دست شما استاد گرامی درد نکنه عالی بود دقیقا همون چیزی بود که می خواستم بازهم ممنون

hamalous
30-07-13, 03:34
سلام دوست عزیز من سورس یه برنامه رو قرار میدم اگه تونستید لطف کنید مشکل اون رو حل کنید مشکل من وقتی که دکمه وارد کردن 2 رو می زنم اگه در پنجره showopen گزینه cancel رو انتخاب کنم برنامه قفل میشه ،یه سوال دیگه تکست باکسی هست که سرعتش از تکست باکس خود ویبی بیشتر باشه یا راهی تو برنامه نویسی هست که سرعت تکست باکس رو زیاد کنه ممنون

ravegoat
31-07-13, 14:18
سلام!

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


If CommonDialog1.FileName = "" Then Exit Sub



2- گمان نکنم. سریع ترین راه اینه که محتویات فایل رو مستقیما" درون یه String بریزید و پردازش رو براساس این متغیر اجرا کنید؛ به عبارتی به جای اینکه هر بار مقادیر رو از درون جعبه ی متنی بخونید، داده ها رو از این متغیر رشته ای استخراج کنید.

hamalous
04-08-13, 12:17
سلام دوستان من نمی دونم مشکل این برنامه کجاست این برنامه برای مقایسه دو فایل بکار میره خوب کار میکنه اما اگه تعداد خطوط زیاد باشه مثلا 5000 یا 10000 به بالا باشه برنامه درست عمل نمیکنه مشکل چیه ؟ به طور مثال من دو فولدر درون برنامه قرار دادم با فولدر 2 مشکل نداره برنامه درست کارمیکنه اما با فولدر 1 درست کار نمیکنه بعد از چک کردن کامل برنامه متوجه شدم که هنگام ورود فایل 1 تمامی خطوط وارد تکست باکس 1 نمیشه چون خطوط زیاده علت این امر چیه ؟جالب اینجاست فایلی رو که در هنگام ورود 1 به نام new1 به صورت تکست می سازه کامله یعنی تمامی خطوط هستند ولی توی تکست باکس اینطور نیست ؟ من برنامه رو می ذارم دوستان لطف کنید کمک کنید ممنون

hamalous
04-08-13, 15:45
ممنون دوست عزیز از rich text box استفاده کردم ولی سرعتش کمتره ظاهرا چاره دیگه ای ندارم خب میشه یه لطفی بکنید یه نگاهی به کد مقایسه برنامه بندازید این کد رو شما لطف کردین و در یکی از پستها نوشتین ،درست عمل میکنه یعنی مقایسه ها رو انجام میده ولی من یه مقایسه دیگه هم می خوام انجام بده که قبلا پرسیده بودم فرض کنید در تکست باکس 2 یک عدد داریم 12345 و ستون بعدی آن 5-5 و در تکست باکس 1 ، 10 عدد داریم به صورت 123450،123451،123452،123453،123454،123455،12 3456،123457،123458،123459 و ستون دوم 4-4 من می خوام داخل مقایسه این دو تکس باکس اون یک عدد رو مشابه این 10 عدد بگیره و بالعکس کدی که در برنامه وجود داره درست عمل میکنه ولی بصورت کلی نیست و فقط برای اعداد با ستون 5-5 نوشته شده مثلا ممکنه عددی به صورت 1234داشته باشیم و ستون بعدی آن 6-6 و 10 عدد بصورت 12340 الی 12349 باشه با ستون 5-5 برای اینکه بهتر متوجه منظور من بشین من یه فایل حاوی دو فایل تکست زمینه کردم که با توجه به توضیحات من باید مشابه گرفته شوند ممنون

hamalous
05-08-13, 04:47
قانونش اینه فرض کنید ده عبارت وجود داره بصورت 911110 الی 911119 با ستون دوم 4-4 یعنی بصورت 4-4 911110 و الی 4-4 911110 و یک عدد بصورت 91111 با ستون دوم 5-5 یعنی بصورت 5-5 91111 ، همانطور که مشاهده می کنین اون ده عبارت آخر اونها اعداد 0 تا 9 قرار داره که در اون یک عبارت حذف شده و در عوض به ستون دوم اون یک عدد اضافه شده یعنی 4-4 شده 5-5 ، یا یک مثال دیگه ده عدد 123450 الی 123459 با ستون 4-1 میشه یک عدد بصورت 12345 با ستون 5-2 و در واقع اون یک عدد معادل اون 10 عدد میشه یعنی با هم مشایه اند نمی دونم منظورمو درست بیان کردم یا نه

ravegoat
05-08-13, 08:53
سلام!

تا اونجا که بنده اطلاع دارم حجم متن داخل یک جعبه ی متنی نمی تونه از 32 کیلوبایت بیش تر بشه. درنتیجه اگر بخواهید یه فایل با سایز بزرگ تر از 32 KB رو وارد جعبه ی متنی کنید، فایل به طور کامل وارد جعبه ی متنی نمیشه. اگر مستقیما" از یه متغیر String استفاده کنید فکر کنم بتونید تا 2 میلیارد کارکتر رو واردش کنید. برای اطلاعات بیش تر:
Only the registered members can see the link

در مورد سوال بعدی تون هم پیشنهاد می کنم سورس های قبلی رو دقیق تحلیل کنید. این طوری جواب سوال تون رو پیدا می کنید.

hamalous
05-08-13, 09:03
ممنون من از rich text box استفاده کردم مشکل حل شد هر چند که باعث کندی برنامه شد در مورد سوال دوم اینکار رو کردم ولی هر چقدر کدها رو تحلیل کردم نتونستم راهی پیدا کنم ممنون میشم اگه میتونید کمک کنید ببینید این کد شماست
If Text2.Text = "" Then
MsgBox "ÎØÇ:áØÝÇ ˜ÏåÇ ÑÇ æÇÑÏ äãÇííÏ"
End If
Text4.Text = ""
Dim lines() As String, i As Integer, j As Integer, tstr() As String, adder As Boolean

lines() = Split(Text2.Text, vbCrLf)

For i = 0 To UBound(lines)
If InStr(Text1.Text, Trim(lines(i))) = 0 Then
adder = False
tstr() = Split(Trim(lines(i)), Chr(9))
If tstr(1) = "5-5" Then
For j = 0 To 9
If InStr(Text1.Text, tstr(0) + CStr(j) + Chr(9) + "4-4") = 0 Then
adder = True
Exit For
End If
Next
If adder = True Then Text4.Text = Text4.Text + Trim(lines(i)) + vbCrLf
adder = True
End If
If adder = False Then Text4.Text = Text4.Text + Trim(lines(i)) + vbCrLf
End If
Next

lines() = Split(Text1.Text, vbCrLf)

For i = 0 To UBound(lines)
If Trim(lines(i)) <> "" Then
adder = False
tstr() = Split(Trim(lines(i)), Chr(9))
If tstr(1) = "5-5" Then
For j = 0 To 9
If InStr(Text4.Text, tstr(0) + CStr(j) + Chr(9) + "4-4") = 0 Then
adder = True
Exit For
End If
Next

If adder = False Then
For j = 0 To 9
Text4.Text = Replace(Text4.Text, tstr(0) + CStr(j) + Chr(9) + "4-4" + vbCrLf, "")
Next
End If
End If
End If
Next
من اصلا سر در نمیارم اون ch(9) رو برا چی گذاشتین تا اونجاییکه یادمه این رو قرار داده بودین که فاصله بین دو ستون رو تو مقایسه لحاظ نکنه که من عرض کردم خدمتتون اون مشکل رو با شبیه کردن دو فایلی که می خواستم مقایسه کنم حل کردم یعنی دیگه مشکل فاصله بین دو ستون رو ندارم

hamalous
05-08-13, 18:10
سلام اگه من بخوام یه عدد مثلا 9111 با ستون دوم 6-6 مشابه 100 عدد بصورت 911100 الی 911199 با ستون دوم 4-4 بگیره چه تغییری باید در کد بالا بدم هر کاری کردم نتونستم ممنون

ravegoat
05-08-13, 18:25
بله دوست عزیز! Chr(9) کد معادل همون فاصله ی ایجاد شده توسط دکمه ی Tab هستش. بنده زمانی که این کد رو قرار دادم شما هنوز مشکل فاصله ی بین ستون ها رو حل نکرده بودید.

اگر سورس پست #17 رو مطالعه بفرمایید متوجه خواهید شد که یک حلقه وجود داره که از 0 تا 9 شمرده میشه و رکورد های مقایسه رو ایجاد می کنه. حالا شما کافیه شمارنده رو بین 0 تا 99 تغییر بدید. در جایی دیگه مشاهده خواهید کرد که به ازای مقدار 4-4 ، مقدار 5-5 در انتهای رکورد های ستون دیگه جهت مقایسه در نظر گرفته میشه که شما خیلی ساده می تونید این مقادیر رو به 4-4 و 6-6 تغییر بدید.

موفق باشید
آرمین:give_rose:

hamalous
05-08-13, 20:06
ممنون دوست عزیز قبلا اینکار رو انجام دادم چون جواب نگرفتم اینجا مطرح کردم من دو فایل تکست رو به عنوان نمونه قرار می دم برنامه هم که توی پست 17 هست اگه میشه لطف کنید کد اون برنامه رو سازگار با این دو فایل درست کنید چون من هر کاری کردم درست نشد ممنون

hamalous
06-08-13, 04:10
سلام نمیدونم شاید من بد توضیح داده باشم خب من یه الگوریتم دیگه برا قسمت دوم سوالم یعنی اون قسمت 100 عدد تو ذهنم هست شاید از اون طریق راحت تر بشه برنامه نوشت ولی به خاطر اینکه تایپک طولانی نشه اگه میشه فعلا در مورد قسمت اول سوال یعنی تایپک 23 کمک کنید من دو فایل تکست با برنامه رو قرار می دم این دو فایل طبق توضیحاتی که دادم مشابه هستند ممنون

ravegoat
06-08-13, 09:48
ممنون دوست عزیز قبلا اینکار رو انجام دادم چون جواب نگرفتم اینجا مطرح کردم من دو فایل تکست رو به عنوان نمونه قرار می دم برنامه هم که توی پست 17 هست اگه میشه لطف کنید کد اون برنامه رو سازگار با این دو فایل درست کنید چون من هر کاری کردم درست نشد ممنون
اگر این کار رو انجام دادید سورسش رو اینجا بذارید تا با هم بررسی کنیم اشکال کجا بوده.

در مورد سوال پست #23 هم شما هر خط رو با توجه به کارکتر فاصله Split کنید و بخش دوم رشته ی حاصل رو مجددا" براساس کارکتر خط فاصله Split کنید. در این صورت فرضا" 4-4 به شکل دو مقدار 4 و 4 در میاد. حالا کافیه مقدار عددی این دو رو با دستور Val استخراج کنید و با عدد یک جمع کنید. حاصل کار مقادیر 5 و 5 به دست میاد. در نهایت از این دو تا رشته ی مقایسه ی 5-5 رو ایجاد کنید.

hamalous
06-08-13, 11:13
اگر این کار رو انجام دادید سورسش رو اینجا بذارید تا با هم بررسی کنیم اشکال کجا بوده.

در مورد سوال پست #23 هم شما هر خط رو با توجه به کارکتر فاصله Split کنید و بخش دوم رشته ی حاصل رو مجددا" براساس کارکتر خط فاصله Split کنید. در این صورت فرضا" 4-4 به شکل دو مقدار 4 و 4 در میاد. حالا کافیه مقدار عددی این دو رو با دستور Val استخراج کنید و با عدد یک جمع کنید. حاصل کار مقادیر 5 و 5 به دست میاد. در نهایت از این دو تا رشته ی مقایسه ی 5-5 رو ایجاد کنید.
ممنون دوست عزیز اینم سورس ،دوست عزیز من نمی تونم از روی توضیحات کسی برنامه بنویسم چون تسلط ندارم مثل این میونه که یه آدرس بدین دست یه بیسواد اگه بتونید زحمت سورس پست 23 رو بکشین ممنون میشم

hamalous
07-08-13, 18:26
خب دوست عزیز اینم کدی که من طبق توضیحات شما نوشتم حالا میشه لطفا در مورد مقایسه و شمارنده کمکم کنید ممنون

Dim i%
Dim x() As String
x = Split(Text1.Text, vbCrLf)

Dim y() As String, z As String, a As Integer

For i = 0 To UBound(x)
y() = Split(x(i), vbTab)
y(1) = Replace(y(1), "-", "")
z = y(1) + 11
z = Left(z, 1) & "-" & Right(z, 1)
Next

hamalous
10-08-13, 06:16
سلام دوست عزیز مشکلی که گفته بودم حل شد اگه در جایی به مشکل برخوردم باز هم مزاحمتون میشم ممنون

hamalous
11-08-13, 13:21
سلام دوست عزیز من داخل کد شما تغییراتی دادم که بتونم برای مقایسه یک عبارت بصورت مثلا 1234 با ستون دوم 6-6 و 100 عبارت بصورت 123400 الی 123499 با ستون دوم 4-4 استفاده کنم حالا مشکل من اینه که فایل 1 با 2 مقایسه میشه مشکلی هم نداره و اختلافها رو نشون میده اما مقایسه فایل 2 با 1 جواب نمیده یعنی مقایسه رو انجام میده ولی اختلافها رو نشون نمیده میشه لطف کنید یه نگاهی کنید ببینید مشکل از کجاست ممنون

ravegoat
12-08-13, 10:21
سلام دوست عزیز من داخل کد شما تغییراتی دادم که بتونم برای مقایسه یک عبارت بصورت مثلا 1234 با ستون دوم 6-6 و 100 عبارت بصورت 123400 الی 123499 با ستون دوم 4-4 استفاده کنم حالا مشکل من اینه که فایل 1 با 2 مقایسه میشه مشکلی هم نداره و اختلافها رو نشون میده اما مقایسه فایل 2 با 1 جواب نمیده یعنی مقایسه رو انجام میده ولی اختلافها رو نشون نمیده میشه لطف کنید یه نگاهی کنید ببینید مشکل از کجاست ممنون
سلام!

کد اصلاح و پیوست شد.

hamalous
13-08-13, 14:22
سلام ممنون بابت کدتون من می خوام 1 عبارت بصورت مثلا 5-5 12345 رو به 10 عبارت 123450 الی 123459 با ستون دوم 4-4 تبدیل کنم کد زیر رو درست کردم ولی نمی دونم اشکالش کجاست درست عمل نمیکنه ممنون میشم راهنمایی کنید
Private Sub Command1_Click()
On Error Resume Next
Dim tmp As String
Dim filepath As String
cmdg.ShowOpen
filepath = cmdg.FileName
Open filepath For Input As #1
tmp = Input(LOF(1), #1)
Close #1
Text1.Text = tmp
Dim i%
Dim x() As String
x = Split(Text1.Text, vbCrLf)
Dim y() As String, z As String, a As Integer
Open filepath For Output As #1
For i = 0 To UBound(x)
y() = Split(x(i), vbTab)
For j = 0 To 9
Text1.Text = Replace(Text1.Text, Left(y(0), 5) + vbTab + "5-5", Left(y(0), 5) + CStr(j) + vbTab + "4-4")
Next j
Next
Print #1, Text1.Text
Close #1
End Sub

ravegoat
13-08-13, 18:27
سلام ممنون بابت کدتون من می خوام 1 عبارت بصورت مثلا 5-5 12345 رو به 10 عبارت 123450 الی 123459 با ستون دوم 4-4 تبدیل کنم کد زیر رو درست کردم ولی نمی دونم اشکالش کجاست درست عمل نمیکنه ممنون میشم راهنمایی کنید
Private Sub Command1_Click()
On Error Resume Next
Dim tmp As String
Dim filepath As String
cmdg.ShowOpen
filepath = cmdg.FileName
Open filepath For Input As #1
tmp = Input(LOF(1), #1)
Close #1
Text1.Text = tmp
Dim i%
Dim x() As String
x = Split(Text1.Text, vbCrLf)
Dim y() As String, z As String, a As Integer
Open filepath For Output As #1
For i = 0 To UBound(x)
y() = Split(x(i), vbTab)
For j = 0 To 9
Text1.Text = Replace(Text1.Text, Left(y(0), 5) + vbTab + "5-5", Left(y(0), 5) + CStr(j) + vbTab + "4-4")
Next j
Next
Print #1, Text1.Text
Close #1
End Sub
سلام!

خواهش می کنم...

اشکال اینجاست که رشته های مورد نظر شما ده بار با رشته ی حاوی بخش 5-5 جایگزین میشه. در نتیجه در اجرای اول حلقه رشته ی حاوی 4-4 با رشته ی حاوی 5-5 جایگزین میشه و در اجرا های بعدی دیگه رشته ی 5-5 وجود نخواهد داشت که رشته های جدید بخوان اضافه بشن!

میشه کد رو به شکل زیر تغییر داد:


Private Sub Command1_Click()
On Error Resume Next
Dim tmp As String
Dim filepath As String
cmdg.ShowOpen
filepath = cmdg.FileName
Open filepath For Input As #1
tmp = Input(LOF(1), #1)
Close #1
Text1.Text = tmp
Dim i%
Dim x() As String
x = Split(Text1.Text, vbCrLf)
Dim y() As String, z As String, j As Integer
Open filepath For Output As #1
For i = 0 To UBound(x)
y() = Split(x(i), vbTab)
z = Left(y(0), 5) + "0" + vbTab + "4-4"
For j = 1 To 9
z = z + vbCrLf + Left(y(0), 5) + CStr(j) + vbTab + "4-4"
Next j
Text1.Text = Replace(Text1.Text, x(i), z)
Next i
Print #1, Text1.Text
Close #1
End Sub



موفق باشید
آرمین

hamalous
13-08-13, 21:04
دوست عزیز ممنون بابت کد ولی مشکل اینجاست که من فقط می خوام اوناییکه ستون دومشون 5-5 رو تبدیل کنه ولی این کد اگه عبارتی ستون دومش 4-4 باشه هم به 10 عبارت تبدیل می کنه ،اگه به اینصورت نمیشه برعکسش هم باشه کار من رو راه میندازه یعنی 10 عدد با ستون دوم 4-4 رو به یک عدد با ستون دوم 5-5 تبدیل کنه به طور مثال 10 عدد 123450 الی 123459 با ستون دوم 4-4 به 1 عبارت بصورت 12345 با ستون دوم 5-5 تبدیل بشه من سورس با یه نمونه فایل تکست قرار میدم ممنون

ravegoat
13-08-13, 22:38
دوست عزیز ممنون بابت کد ولی مشکل اینجاست که من فقط می خوام اوناییکه ستون دومشون 5-5 رو تبدیل کنه ولی این کد اگه عبارتی ستون دومش 4-4 باشه هم به 10 عبارت تبدیل می کنه ،اگه به اینصورت نمیشه برعکسش هم باشه کار من رو راه میندازه یعنی 10 عدد با ستون دوم 4-4 رو به یک عدد با ستون دوم 5-5 تبدیل کنه به طور مثال 10 عدد 123450 الی 123459 با ستون دوم 4-4 به 1 عبارت بصورت 12345 با ستون دوم 5-5 تبدیل بشه من سورس با یه نمونه فایل تکست قرار میدم ممنون
چاره ی کار این مشکل اضافه کردن یه شرط ساده است:


Private Sub Command1_Click()
On Error Resume Next
Dim tmp As String
Dim filepath As String
cmdg.ShowOpen
filepath = cmdg.FileName
Open filepath For Input As #1
tmp = Input(LOF(1), #1)
Close #1
Text1.Text = tmp
Dim i%
Dim x() As String
x = Split(Text1.Text, vbCrLf)
Dim y() As String, z As String, j As Integer
Open filepath For Output As #1
For i = 0 To UBound(x)
y() = Split(x(i), vbTab)
If y(1) = "5-5" Then
z = Left(y(0), 5) + "0" + vbTab + "4-4"
For j = 1 To 9
z = z + vbCrLf + Left(y(0), 5) + CStr(j) + vbTab + "4-4"
Next j
Text1.Text = Replace(Text1.Text, x(i), z)
End If
Next i
Print #1, Text1.Text
Close #1
End Sub

hamalous
16-08-13, 08:26
سلام من میخوام عکس عملی رو که در پست قبل گفتم انجام بدم یعنی اون 10 عبارت رو به یک عبارت تبدیل کنم کد شما رو تغییر دادم اما فقط برای یک عبارت انجام میشه ،, و باید برای ده عبارت بعدی همین کار رو دوباره تکرار کرد ممکنه لطف کنید کد را تصحیح کنید ممنون
cmdg.ShowOpen
filepath = cmdg.FileName
Open filepath For Input As #1
tmp = Input(LOF(1), #1)
Close #1
Text1.Text = tmp
Dim i%
Dim x() As String
x = Split(Text1.Text, vbCrLf)
Dim y() As String, z As String, j As Integer
Open filepath For Output As #1
For i = 0 To UBound(x)
y() = Split(x(i), vbTab)
If y(1) = "4-4" Then
a = Left(y(0), 5) + vbTab + "5-5"
z = Left(y(0), 5) + CStr(j) + vbTab + "4-4"
For j = 1 To 9
z = z + vbCrLf + Left(y(0), 5) + CStr(j) + vbTab + "4-4"
Next j
Text1.Text = Replace(Text1.Text, z, a)
End If
Next i
Print #1, Text1.Text
Close #1

hamalous
17-08-13, 13:26
از دوستان کسی نیست مشکل من رو حل کنه ؟من سورس برنامه رو همراه دو نمونه فایل تکست قرار می دم فایل تکست 2 باید به فایل 1 تبدیل بشه ممنون

hamalous
18-08-13, 20:56
سلام من می خوام عکس عمل پست 39 رو انجام بدم کد زیر رو دارم ولی درست عمل نمیکنه میشه لطف کنیدمشکل اون رو رفع کنید ممنون
Private Sub Command1_Click()
On Error Resume Next
Dim tmp As String
Dim filepath As String
cmdg.ShowOpen
filepath = cmdg.FileName
Open filepath For Input As #1
tmp = Input(LOF(1), #1)
Close #1
Text1.Text = tmp
Dim i%
Dim x() As String
x = Split(Text1.Text, vbCrLf)
Dim y() As String, z As String, j As Integer
For i = 0 To UBound(x)
y() = Split(x(i), vbTab)
If y(1) = "4-4" Then
a = Left(y(0), 5) + vbTab + "5-5"
For j = 0 To 9
z = Left(y(0), 5) + CStr(j) + vbTab + "4-4"
Next j
End If
Text1 = Replace(Text1, z, a)
Next i
End Sub

hamalous
19-08-13, 15:31
سلام دوستان من دو تا سورس دارم که درون آنها دو تا فایل تکست هست که می خوام فایل تکست 1 به 2 تبدیل بشه ولی هیچکدوم از سورسها درست عمل نمیکنه اگه دوستان می تونند لطف کنند و مشکل هر کدوم رو تونستند برطرف کنند ممنون

ravegoat
21-08-13, 08:13
سلام من می خوام عکس عمل پست 39 رو انجام بدم کد زیر رو دارم ولی درست عمل نمیکنه میشه لطف کنیدمشکل اون رو رفع کنید ممنون
Private Sub Command1_Click()
On Error Resume Next
Dim tmp As String
Dim filepath As String
cmdg.ShowOpen
filepath = cmdg.FileName
Open filepath For Input As #1
tmp = Input(LOF(1), #1)
Close #1
Text1.Text = tmp
Dim i%
Dim x() As String
x = Split(Text1.Text, vbCrLf)
Dim y() As String, z As String, j As Integer
For i = 0 To UBound(x)
y() = Split(x(i), vbTab)
If y(1) = "4-4" Then
a = Left(y(0), 5) + vbTab + "5-5"
For j = 0 To 9
z = Left(y(0), 5) + CStr(j) + vbTab + "4-4"
Next j
End If
Text1 = Replace(Text1, z, a)
Next i
End Sub
سلام!

اگر این شماره ها به ترتیب از صفر تا 9 مرتب شده باشن میشه از کد زیر استفاده کرد. اگر هم غیر از این باشه با مرور کردن کد های قبلی میشه راه حل اش رو به دست آورد.



On Error Resume Next
Dim tmp As String
Dim filepath As String
cmdg.ShowOpen
filepath = cmdg.FileName
Open filepath For Input As #1
tmp = Input(LOF(1), #1)
Close #1
Text1.Text = tmp
Dim i%
Dim x() As String
x = Split(Text1.Text, vbCrLf)
Dim y() As String, z As String, j As Integer
For i = 0 To UBound(x)
y() = Split(x(i), vbTab)
If y(1) = "4-4" Then
a = Left(y(0), 5) + vbTab + "5-5"
z = Left(y(0), 5) + "0" + vbTab + "4-4"
For j = 1 To 9
z = z + vbCrLf + Left(y(0), 5) + CStr(j) + vbTab + "4-4"
Next j
Text1 = Replace(Text1, z, a)
i = i + 10
End If
Next i





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