kontrola textboxu   zodpovězená otázka

VB6/VBA

Zdravim

vytvaram program vo VB6 a narazil som na jeden problem

mam vytvoreny textbox do ktoreho vkladam datum...

problem je v tom ze potrebujem aby mi za bodky v datume vlozilo medzeru

chcel by som postupovat tak ze vytvorim retazec ktori mi skontroluje znak po znaku a ked najde bodku tak za nu vlozi medzeru... a naopak ked tam medzera je tak neurobi nic

Ale som uplny zaciatocnik a neviem ako postupovat

vopred diki za nejaky ukazkovy kod

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Skúste toto. Cyklus While, s premennou, v ktorej by sa počítali iterácie(s počiatočnou hodnotou 0), podmienka pred telom cyklu, a to pokým počet iterácii nie je rovný aktuálnej dĺžke textu(Until iterations = Len(TextBox1.Text), alebo tak nejako). V tele cyklu porovnám znak na pozícii rovnej počtu iterácii s bodkou. Ak je tam bodka, pospájam: 1)od 0 do počet iterácii - 12)". ", čiže bodka a medzera3)od počet iterácii - 1 do dĺžka textu - 1

, a uložím ako novú hodnotu do TextBox1.Text.

Nakoniec pripočítam k počtu iterácii 1.

Alebo lepšie by bolo miesto TextBox1.Text používať na toto lokálnu premennú, ktorej obsah by na konci nahradil TextBox1.Text, kvôli rýchlosti celej operácie.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

tak prehladanie textu som vyriesil takto

Dim strPrehladavany As String
Dim strHladany As String
Dim lngLen As Long
Dim retPosition As Long
Dim lngPocet As Long
      
strPrehladavany = Text5.Text
strHladany = "."
lngLen = Len(strPrehladavany)

For i = 1 To lngLen
    retPosition = InStr(i, strPrehladavany, strHladany, vbTextCompare)
    If retPosition = 0 Then Exit For
    lngPocet = lngPocet + 1
    i = retPosition
Next i

takze v textboxe 5 mi najde vsetky bodky len teraz si neviem dat rady s pridanim tej medzery

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pre pridanie bodky bude nutné reťazec rozdeliť na časť pred bodkou, na bodku, a za bodkou. Tú časť, kde je bodka nahradíte ". ", a opäť pospájať.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

tak vysledny funkcny kod vyzera takto, ale este sa vraj da zjednodusit aby bol bez cyklu... aj aj tak vdaka


Dim strPrehladavany As String
Dim strHladany As String
Dim lngLen As Long
Dim retPosition As Long

strPrehladavany = Text5.Text
strHladany = "."
lngLen = Len(strPrehladavany)

For i = 1 To lngLen
    retPosition = InStr(i, strPrehladavany, strHladany, vbTextCompare)
    If retPosition = 0 Then Exit For
    Text5.Text = Replace(strPrehladavany, ".", ". ")
Next i

ked sa mi to podari spravit bez cyklu tak to tu vlozim

EDIT: tak uz to mam je to pomerne jednoduche neviem nad cim som maturoval :D nabuduce skusim viac hladat po EN forach

Kod bez cyklu


Dim strPrehladavany As String
strPrehladavany = Text5.Text
Text5.Text = Replace(strPrehladavany, ".", ". ")

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Moje nervy, o funkcii Replace som vôbec nevedel. Vidieť, že nepoznám VB6. Inak, ak použijete funkciu Replace, nahradí všetky bodky za ". ", takže ten cyklus v prvej verzii je úplne zbytočný.

No, s použitím Replace je podľa mňa najjednoduchšie riešenie toto:

Text5.Text = Replace(Text5.Text, ".", ". ")

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

v podstate je to to iste co som pouzil ja len bez premmenych

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback