PDA

View Full Version : سوال: مشکل با مقایسه دو رشته



m2011kh
چهارشنبه 01 شهریور 1391, 16:01 عصر
سلام دوستان.
من میخوام دو تا رشته رو با هم مقایسه کنم.
ولی مثلا وقتی از این کد استفاده میکنم جواب نمیده:
If text1.text = text2.text then
print "ok"
else
print "NOT"
end if

m.4.r.m
چهارشنبه 01 شهریور 1391, 16:08 عصر
If StrComp(Text1.Text, Text2.Text, vbTextCompare) = 0 Then
MsgBox "برابرند", vbInformation, ""
Else
MsgBox "برابر نیستند", vbExclamation, ""
End If


تابع StrComp : این تابع دو رشته ورودی را با هم مقایسه می کند .
فرمت کلی این تابع بصورت زیر است :

StrComp(string1, string2[, compare])

String1 : رشته اول
String2 : رشته دوم
Compare : نوع مقایسه را نشان می دهد . اگر این پارامتر ۰ داده شود مقایسه متنی انجام می شود و اگر ۱ داده شود مقایسه باینری انجام می شود .

اگر string1 کوچکتر از string2 باشد مقدار بازگشتی ۱- است . اگر دو رشته مساوی باشند مقدار بازگشتی صفر است . اگر string1 بزرگتر از string2 باشد مقدار بازگشتی ۱ است .

vbhamed
چهارشنبه 01 شهریور 1391, 18:48 عصر
سلام
اينم تست كنيد

If LCase$(text1) = LCase$(text2) Then
Print "ok"

Else
Print "NOT"

End If

محسن واژدی
چهارشنبه 01 شهریور 1391, 23:24 عصر
سلام علیکم
یا در بالای ماژول "Option Compare Text" قرار بدین

موفق باشید

m2011kh
چهارشنبه 01 شهریور 1391, 23:27 عصر
ببخشید این کلمه "Option Compare Text به چه معن هست آقا محسن؟؟؟
ممنون
MMD
محمد مهدی خلیلی

m2011kh
چهارشنبه 01 شهریور 1391, 23:29 عصر
ببخشید دوستان من از کد هایی که دادید استفاده کردم.
ولی در هر صورت با این که رشته ها با یکدیگر مساوی هستند ولی برنامه اونا رو متفاوت تخیص میده.
من دارم رو یه پروژه کار میکنم ولی این مشکل ظاهرا کوچیک خیلی کلافه ام کرده.
خیلی خیلی ممنون میشم اگه راهنمایی کنید.

ho3ein.3ven
چهارشنبه 01 شهریور 1391, 23:32 عصر
سلام .
با اجازه جناب واژدی عزیز
به این معناست که در کل برنامه برای مقایسه رشته ها میان حروف کوچه و بزرگ هیچ تفاوتی قائل نشود.

m2011kh
چهارشنبه 01 شهریور 1391, 23:37 عصر
با تشکر از اساتید محترم.
ولی متاسفانه هنوزم مشکلم حل نشد و وقت برای تکمیل پروژه بسیار محدوده.
این مشکل کلا روند کارو متوقف کرده.
ممنون میشم از راهنمایی هاتون.

m.4.r.m
چهارشنبه 01 شهریور 1391, 23:55 عصر
تابع مقایسه دو رشته در ویژوال بیسیک همون Strcomp هست که نوشتم برات اگه زیاد پیچیده می خوای صبر کن مسدر جمشیدی بیاد برات جوری بنویسه که توش گم بشی

محسن واژدی
پنج شنبه 02 شهریور 1391, 00:21 صبح
ببخشید این کلمه "Option Compare Text به چه معن هست آقا محسن؟؟؟ سلام علیکم
توضیح دیگر اینکه، چون بصورت پیشفرض مقایسه رشته ها در انواع توابعی مانند InStr,StrComp,InStrRev، عملگرها و ... بصورت باینری صورت میگیرد به عبارتی همانگونه که جناب ho3ein.3ven هم گفتند مابین حروفی مانند a و A تفاوت قائل میشود، اما درصورتیکه Option-Compare-Text را در ابتدای ماژول بنویسیم مقایسه پیش فرض متنی خواهد بود (حتی اگر نوع مقایسه را در توابع فوق مشخص نکنیم)

موفق باشید

vbhamed
جمعه 03 شهریور 1391, 00:22 صبح
سلام

متني كه در تكست باكس ها قرار مي‌گيره چيه ؟
شايد عبارات فارسي هست كه در حرف ي و ك تفاوت دارند ولي به چشم نميان
شايد هم كاراكترهاي نامرئي توشون درج شده مثل شيفت + فاصله

m2011kh
جمعه 03 شهریور 1391, 09:14 صبح
کاراکتر های من یه پسورده که ممکنه هر چیزی باشه
ولی اینگلیسی نیست و حروف نامرئی هم توش استفاده نمیشه.
بازم نمیدونم چیکار باید بکنم.
مثلا تو مقایسه ی M13771377kh با m13771377kh مقدار یک میده تابع
StrComp
دوستان مشکل عجیبیه برا من و تا حالا بهش بر نخورده بودم.
ولی باید حل بشه.
چون به این پروژه خیلی نیاز دارم

vbhamed
جمعه 03 شهریور 1391, 11:49 صبح
سلام

اولا اين دو تا رشته كه شما دادين انگليسيه در صورتيكه كه گفتين انگليسي نداريد، حالا اين زياد مهم نيست
براي اين دو تا رشته StrComp خب داره درست جواب ميده ديگه چون يكي از رشته ها از ديگري بزرگتر هست
اگر بخواين بين m و M فرقي گذاشته نشه دو تا راه داره
راه اول كه توصيه نميشه گذاشتن دستور Option Compare Text بالاترين قسمت كد فرم هست
راه دوم در خود تابع StrComp

MsgBox StrComp("m13771377kh", "M13771377kh", vbTextCompare)

m2011kh
یک شنبه 05 شهریور 1391, 14:28 عصر
ممنون آقا حامد.
ولی ببخشید هر دوشون m13771377kh بود.
تو پست 12 یه اشتباه تایپی بود که m هاش با هم فرق میکرد.
در اصل هر دو یکی هستن.

m2011kh
دوشنبه 06 شهریور 1391, 13:14 عصر
دوستان کسی نیست که بتونه کمکم کنه؟؟؟

vbhamed
دوشنبه 06 شهریور 1391, 13:33 عصر
سلام تو يك پروژه جديد دقيقا اين دستور رو كه مشكل داره با همون عبارات بنويسيد و اگر بازم مشكل داشتيد اون پروژه رو ارسال كنيد

m2011kh
دوشنبه 06 شهریور 1391, 13:53 عصر
مشکلم حل شد.
درست کار نکردن این تابع به علت استفاده از یه کامپوننت برای زیبای برنامه بود.
وقتی اون کامپوننتو از برنامه برداشتم مشکل حل شد.
بازم از دوستان ممنونم
MMD

Mr'Jamshidy
سه شنبه 07 شهریور 1391, 18:26 عصر
تابع مقایسه دو رشته در ویژوال بیسیک همون Strcomp هست که نوشتم برات اگه زیاد پیچیده می خوای صبر کن مسدر جمشیدی بیاد برات جوری بنویسه که توش گم بشی

داداش چرا از همه جا تو پاچه ما میکنی؟
بشکنه این دست که نمک نداره

m2011kh
چهارشنبه 08 شهریور 1391, 15:47 عصر
داداش شوخی میکنه خو ناراحتی نداره جمشیدی جان.
MMD