PDA

View Full Version : جایگزینی شرطی متن



hossein2211
شنبه 20 مهر 1392, 21:12 عصر
سلام. با دستورات if چجوری می شه یه برنامه تو Visual Basic نوشت که مثلا تو یه ادیت باکس من یه متن وارد می کنم بعد اگر داخل اون متن کلمه x بود اون وقت کلمه x رو با y جایگزین کنه و اگر کلمه x رو پیدا نکرد ( else ) اونوقت شرط رو برعکس چک کنه یعنی اگر داخل اون متن اولیه کلمه y بود اون وقت کلمه y رو با x جایگزین کنه. این برنامه رو دوستان تو بخش C++ تکمیل کردند البته به لطف فراوان کاربران Ananas (http://barnamenevis.org/member.php?233990-Ananas) و vasilopita (http://barnamenevis.org/member.php?121507-vasilopita) وomidshaman (http://barnamenevis.org/member.php?263476-omidshaman).

one hacker alone
شنبه 20 مهر 1392, 21:58 عصر
خب شما تو رویداد change هر سری باید باید کل رشته رو بگیرید و تو رشته با تابع left اخرین کاراکتر رو برگردونین بررسی کنید اگه x بود بزنه y اگه y بود بزنه X که برای جایگزین کردنش هم از replace استفاده کنید برای جستجو هم میتونید از instr استفاده کنید اما با توجه که هر سری شما اخرین کاراکتر وارد شده رو چک میکنید پس نیازی به این تابع نیست
اما اگه منظور شما اینه ما این کارهارو در برنامه ی دیگه ای انجام بدین که کلا قضیه فرق میکنه و باید با هندل پنجره و کنترل و تابع sendmessage کار کنیم

hossein2211
یک شنبه 21 مهر 1392, 00:09 صبح
خب شما تو رویداد change هر سری باید باید کل رشته رو بگیرید و تو رشته با تابع left اخرین کاراکتر رو برگردونین بررسی کنید اگه x بود بزنه y اگه y بود بزنه X که برای جایگزین کردنش هم از replace استفاده کنید برای جستجو هم میتونید از instr استفاده کنید اما با توجه که هر سری شما اخرین کاراکتر وارد شده رو چک میکنید پس نیازی به این تابع نیست
اما اگه منظور شما اینه ما این کارهارو در برنامه ی دیگه ای انجام بدین که کلا قضیه فرق میکنه و باید با هندل پنجره و کنترل و تابع sendmessage کار کنیم

اره همنطوره ولی اگر x بود با y جایگزین کنه و برنامه تمام بشه و اگر x نبود بعد بره ببینه y هست تا با x جایگزین کنه یا نه. حالا برنامه این چی میشه

محسن واژدی
یک شنبه 21 مهر 1392, 07:01 صبح
سلام علیکم
همانطور که جناب one hacker alone (http://barnamenevis.org/member.php?33297-one-hacker-alone) عزیز هم اشاره داشتن می توان از InStr و Replace برای این منظور استفاده کرد، کد زیر بررسی کنید:
Private Sub Text1_Change()
Dim iCP%
With Text1
iCP% = .SelStart
If InStr(1, .Text, "x", vbTextCompare) > 0 Then
.Text = Replace$(.Text, "x", "y", , , vbTextCompare)
.SelStart = iCP%
ElseIf InStr(1, .Text, "y", vbTextCompare) > 0 Then
.Text = Replace$(.Text, "y", "x", , , vbTextCompare)
.SelStart = iCP%
End If
End With
End Sub

اما اینکه در هربار x به y تبدیل بشه و بالعکس ظاهر جالبی ندارد

موفق باشید

hossein2211
یک شنبه 21 مهر 1392, 07:54 صبح
ممنون عالی بود. دستت درد نکنه . حالا با چه کدی میشه تعداد تغییرات رو شمارد. یعنی اگر من این کد رو 10 بار برای متغیر های مختلف بکار ببرم و اونوقت اگر مثلا متغیر های اولی جابجا شدند یکی بشماره و ... .