Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: zamiana liter na cyfry
anonim




Typ: Nie zarejestrowany
zamiana liter na cyfry

Mam problem.
Chciałbym zamienić słowo, np. Kowalski na cyfry. Miałoby to postać następującą:
k na 22
o na 30
w na 46
a na 2
itd.
czyli
Kowalski = 22 30 46 2 ...
Text6.Text ---> Text5.Text
polskie znaki, np. "ą" = 3

Próbowałem
Dim zm1 As String
Dim zm2 As Byte
Dim zm3 As String
Dim zm4 As String
Dim zm5 As String
Dim zm6 As String
Dim zm7 As String
Dim zm8 As Byte


zm3 = "a"
zm4 = InStr(Text6.Text, zm3)
zm1 = Mid(Text6.Text, zm4)
zm5 = "b"
zm6 = InStr(Text6.Text, zm5)
zm7 = Mid(Text6.Text, zm6)
If zm1 = "a" Then
zm2 = 10
Text5.Text = Text5.Text & Chr(32) & zm2
End If

If zm7 = "b" Then
zm8 = 12
Text5.Text = zm2 & Chr(32) & zm8
End If

Ale poza mnożeniem zmiennych nic ciekawego nie uzyskałem - nie tędy droga...
Próbowałem tekst z TextBox wpisać do pliku i zamienić, ale też mi nie wyszło.
oto fragment:

Dim zmienna As String
Select Case zmienna
Case "a": zmienna = 2 

tu było dobrze, zamieniło mi na 2
ale już np.

Case "e": zmienna = 10

tu dawało mi tylko 1 a nie 10
niemogłem uzyskać dwucyfrowych
nie pomogło dopisanie

Dim zmienna As String * 2 'nie zamieniało
tylko
Dim zmienna As String * 1
nie sygnalizowało błędu i zamieniało (choć na jedną, pierwszą część liczby) - ale "1"? Zresztą i tak dawało w efekcie tylko jedną cyfrę...

nie pomogła zamiana String na Byte - dużo nauki VB jeszcze przede mną.
Pewnie można to zrobić o wiele prościej, bez zakrętów, w które ja wchodziłem.

07-10-2004 01:00
  
anonim




Typ: Nie zarejestrowany

Sprawdź ten kod, działa mi w VBA ale wartości liczbowe znaków są inne, w VB nie sprawdzałem.
NARA

Sub zamiana()
Dim nazwa As String
Dim liczbowo As String
Dim calosc As String
nazwa = "Kowalski"
For a = 1 To Len(nazwa)
liczbowo = Asc(Mid(nazwa, a, 1))
calosc = calosc + " "
calosc = calosc + liczbowo
Next a
'Range("a1" = calosc 'Tutaj podaj gdzie zapisać powstały ciąg

End Sub

07-10-2004 08:10
  
mikmas
From Łódź Stadt




Typ: neutral
Postów: 772
Zarejestrowany: Apr 2003

Ale kombinujesz! Jeżeli wiem o co chodzi to wystarczy:

const Litery="abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ"
dim Odpowiedniki as variant
dim Text as string,TextWyjsciowy as string
dim I as byte
for i=1 to len(litery)
odpowiedniki=odpowiedniki & i & "|"
next
odpowiedniki=left(odpowiedniki,len(odpowiedniki)-1)
odpowieniki=split(odpowieniki,"|"

for i=1 to len(litery)
textwyjsciowy=replace(text,mid(litery,i,1)) & " "
next
textwyjsciowy=left(textwyjsciowy,len(textwyjsciowy)-1)
msgbox textwyjsciowy,vbinformation

Sprawdź, bo (jak widać po nie sformatowanym texcie) ja nie sprawdzałem


_____________________________________________
4C;65;70;69;65;6A;20;62;79;9C;20;73;69;EA;20;
62;61;72;64;7A;69;65;6A;20;73;6B;6F;6E;63;65;
6E;74;72;6F;77;61;B3;20;6E;61;20;6F;64;70;6F;
77;69;65;64;7A;69;2C;20;61;20;6E;69;65;20;6E;
61;20;72;6F;7A;73;7A;79;66;72;6F;77;79;77;61;
6E;69;75;20;3A;50

07-10-2004 16:47
Pokaż profil mikmas  Wyślij email do mikmas   Odwiedź stronę mikmas       3632553
anonim




Typ: Nie zarejestrowany

replace???

09-10-2004 22:30
  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Ale kombinujecie... O_o

Function Zakoduj(sInput As String) As String
    Dim sKody(255) As Long
    Dim cChar As Long
   
    sKody(Asc("a" )) = 2
    sKody(Asc("o" )) = 30
    '.
    '. Tutaj dajesz resztę na tej samej zasadzie
    '.
   
    For cChar = 1 To Len(sInput)
        Zakoduj = Zakoduj & sKody(Asc(Mid$(sInput, cChar, 1))) & " "
    Next
End Function


Zamiast przypisywać wartości ręcznie do sKody, możesz tam umieścić jakiś kod ładujący te informacje z innej zmiennej lub pliku.
Jeśli masz zamiar odwoływać się do tej funkcji ciąglem, to warto sKody zdeklarować dla całego modułu, przypisywanie wartosci przenieść np. do procedury Przygotuj() i usunąć stąd - wtedy będzie się szybciej wykonywało, bo przypisywanie wartości będzie się przeprowadzało tylko raz, na początku. Na dodatek zaoszczędzi się odrobinkę czasu na alokacji pamięci dla zmiennej.

UWAGA! Pamiętaj, że funkcja działa w trybie binarnym, nie tekstowym, czyli "a" i "A" to dla niej dwie różne rzeczy!

[Post edytowany dnia 09-10-2004 22:44 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

09-10-2004 22:39
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
anonim




Typ: Nie zarejestrowany

Dzięki marcin_an!!!

12-10-2004 00:16
  
Wszystkich odpowiedzi: 5 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1