سلام.
چه جوری میشه از Vb یه عدد با ترکیب حروف گرفت که رندوم انتخاب بشه؟مثلا طول این کاراکتر ها هم 6 تا
باشه؟
Printable View
سلام.
چه جوری میشه از Vb یه عدد با ترکیب حروف گرفت که رندوم انتخاب بشه؟مثلا طول این کاراکتر ها هم 6 تا
باشه؟
شما مي توانيد 6 عدد رندم را پيدا كنيد و آنها را برابر با keycode قرار دهيد. براي اينكه كاركترهايي مثل اينتر را وارد نكند نيز بنويس اگر عدد رندم برابر keycode دكمه اينتر بو دوباره رندم بگيره
حتما میدونید که کد اسکی کاراکترها از 0 تا 255 هستن.
اعداد از 1 تا 31 مخصوص کلیدهایی مثل Enter و Delete و ... هستن.
حالا شما میخوای یه رشته 6 کاراکتری به صورت رندم تولید کنید.
برای اینکار باید 6 تا عدد پیدا کنید که از 32 تا 255 باشن (البته اگه بخواید تولید رشته رو هم محدود کنید، بازم این رنج محدودتر میشه). بعد با استفاده از تابع Chr این کدها رو به معادل کاراکتری شون تبدیل میکنید. و در آخر هم 6 تا حرف دارید که باید بذاریدشون کنار هم تا یه رشته بشن.
برای تولید اعداد توی یه رنج خاص من از این راه استفاده میکنم.
مثلا برای 32 تا 255 :
255-32=223
حالا با استفاده از تابع Rnd یه عدد رندم پیدا میکنیم که کوچیکتر یا مساوی 223 باشه. بعد اون عدد رو با 32 جمع میکنیم.
امیدوارم خوب توضیح داده باشم.
اقا.افتضاح توضیح دادید.:31:نقل قول:
بزارید این جوری توضیح بدم:
1-کدی که یه رشته ی عددی 6 رقمی رو به صورت رندوم و بدون ممیز با ما بدهد.
2-کدی که مقدار علاوه بر موارد گفته شده در بالا شامل # و % و $ هم باشه.
امیدوارم متوجه شده باشید
یا حق.
من درست توضیح دادم. ایراد از شماست که تا حالا کار نکردید، و متوجه نمیشید.
من چمیدونستم که شما تا حالا با تابع Rnd کار نکردید.
ببین عزیز من، این تابع یه عدد بین 0 تا 1 میده. مقدار 0 میشه، ولی هیج موقع برابر با یک نمیشه.
حالا شما مثلا میخواید یه عدد صحیح بین 0 تا 9 بگیری. چیکار باید بکنید؟
از این کد استفاده میکنید.
اون رنج عددی ای هم که گفتم شامل تمام حروف میشه. حتی چیزایی که مطمئنا مایل نیستید تو نتیجه باشن.کد:random_number = Fix(Rnd() * 10)
مثل اینا :
© ¨ § ¦ ʙ ¤ £ ¢
حالا به خودتون یه مقدار زحمت بدید و یه مقدار فسفر مصرف کنید، ببنید با توجه به این مطالبی که گفتم چطوری میتونید یه کد 6 حرفی از حروفی که به صورت رندم تولید شدن ایجاد کنید. :10:
اگه نتونستی :41: ، اون موقع بگو، بازم بیشتر راهنماییت کنم!!!. البته فکر کنم، دیگه باید کد رو به صورت کامل براتون بنویسم. :19:
پس از 10 دقیقه فسفر سوزوندت فهمیدم.
حالا فقط 2 تا مشکل دارم:
چی کار کنیم تا حروف فارسی توی رشته ای که میخواهیم بسازیم نباشه؟
2-تابع rnd چه جوری محدود میشه؟
البته من يه چيزي بگم اينكه تمام كاركترهاي كامپيوتر 256 تا نيست.
مثلا من در موقع نصب ويندوز تمام زبان هاي آسياي شرقي را فعال كردم پس اين ها هم جز كاركترها حساب ميشه.
شما مي توني دامنه كاركتر هاي مورد نظرتون را پيدا كنيد و بين آنها رندوم بديد.
بله تایید میشه.نقل قول:
بفرمایید
اینم کدی که خواستید
کمتر از 10 دقیقه شد.
کد:Dim rnd_str As String, st As String
For i = 1 To Minute(Now) + Second(Now) * Hour(Now)
a = Rnd()
Next i
st = "abcdefghijklmnopqrstuvwxyz"
For i = 1 To 6
lp:
new_chr = Chr(Fix(Rnd() * 256))
If InStr(st, new_chr) <> 0 Then
rnd_str = rnd_str & new_chr
Else
GoTo lp
End If
Next i
MsgBox rnd_str
فقط یه توضیحی بدم.
اون رشته ی st ، کل کاراکترهایی رو که می خواید توی رشته ی نهایی باشن، اونجا بدون فاصله بنویسید.
اون حلقه اول هم برای این گذاشتم که کاراکترها تکراری انتخاب نشن.
اگه حذف بشه، هر بار که این کد اجرا بشه، یه رشته یکسان میده.