PDA

View Full Version : مبتدی: سؤال در مورد PasswordChar



elgesi
پنج شنبه 28 آذر 1392, 16:27 عصر
کدی که بتوانیم بدون استفاده از خاصیت passwordChar بتواند کلمه رمزی رااز ورودی بگیرد وآن را نمایش دهد؟ خواهش میکنم هر خط کدراهم توضیح دهید ممنون

محسن واژدی
پنج شنبه 28 آذر 1392, 17:43 عصر
سلام علیکم، سوال مبهمه
برای گرفتن کلمه عبور وارد شده مانند متن معمولی از خاصیت Text استفاده می کنیم

Shahab.
پنج شنبه 28 آذر 1392, 22:49 عصر
سلام علیکم، سوال مبهمه
برای گرفتن کلمه عبور وارد شده مانند متن معمولی از خاصیت Text استفاده می کنیم

ایشون کدی رو میخوان که کار خاصیت passwordchar تکست باکس رو شبیه سازی کنه.
یعنی بدون استفاده از این خاصیت کاراکترهای وارد شده در تکست باکس به شکل ستاره نشون داده بشن و ما بتونیم رمز اصلی رو هم داشته باشیم.
که من فکر میکنم برای این کار باید keyassci رو برابر با کد کاراکتر ستاره بذارید تا هر چی در تکست باکس نوشته شد به شکل ستاره در بیاد و همچنین اصل رمز رو هم در متغیری ذخیره کنید.

m.4.r.m
جمعه 29 آذر 1392, 01:10 صبح
شما باید یکی یکی کاراکتر ها رو بخونی و جاش ستاره قرار بدی

Private Sub Command1_Click()
Dim St As String ' تعريف متغير رشته اي
St = Text1.Text ' قرار دادن مقدار تکست باکس در متغير
For i = 1 To Len(Text1.Text) ' حلقه براي شمارش کاراکتر هاي رشته
S = Replace(S & Mid(St, i, 1), Mid(St, i, 1), "*") ' قرار دادن * به جاي هر يک از کاراکترهاي رشته
Next i
Text1.Text = S ' نمايش کاراکترها به صورت *
Text2.Text = St ' نمايش خود رشته در تکست باکس دوم
End Sub

SlowCode
جمعه 29 آذر 1392, 06:33 صبح
شما باید یکی یکی کاراکتر ها رو بخونی و جاش ستاره قرار بدی

Private Sub Command1_Click()
Dim St As String ' تعريف متغير رشته اي
St = Text1.Text ' قرار دادن مقدار تکست باکس در متغير
For i = 1 To Len(Text1.Text) ' حلقه براي شمارش کاراکتر هاي رشته
S = Replace(S & Mid(St, i, 1), Mid(St, i, 1), "*") ' قرار دادن * به جاي هر يک از کاراکترهاي رشته
Next i
Text1.Text = S ' نمايش کاراکترها به صورت *
Text2.Text = St ' نمايش خود رشته در تکست باکس دوم
End Sub

نیازی به خوندن تک تک کاراکترها نیست! کافیه از تابع string استفاده کنیم.
اگه میخوای با زدن یه دکمه این اتفاق بیافته:

Private Sub Command1_Click()
st = Text1
Text1 = String$(Len(st), "*")
End Sub

Veteran
جمعه 29 آذر 1392, 08:24 صبح
Private strPass As String
Private Sub Command1_Click()
MsgBox strPass
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then
strPass = Replace(strPass, Right(strPass, 1), "")
Exit Sub
End If
strPass = strPass & Chr(KeyAscii)
KeyAscii = Asc("*")
End Sub


این روش مناسبتر هست(خودمون بیایم PasswordChar رو شبیه سازی کنیم)،مانند کد بالا.
چرا که اگر از PasswordChar خوده وی بی استفاده کنیم،میشه به راحتی با API مقدارش رو به دست اورد،که اصلا مناسب نیست.