Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Kirjainjärjestyksen muunnin 1.2

Harrastelija [22.07.2005 21:37:46]

#

Tämän yksinkertasen Kirjainjärjestyksen muuntimen toimintaperiaate on helppo. Se muuttaa lauseesta jokaisen kirjaimen järjestystä, sanan ensimmäistä ja viimestä kirjainta lukuunottamatta. Siispä, esimerkiksi sana Kumisaapas, muuntui testissä sanaksi: Kupsaaamis.
Silti ei ole mitenkään varmaa, että sanasta tulee aina läheskään yhtä järkevä.

Voit myös tallentaa ja ladata sanalistan, haluamastasi tiedostosta.

Jos sana on pitempi kuin 6 kirjainta, on epätodennäköstä, että saisit sen takaisin normaaliksi.

Tämä ohjelma osaa hypätä väli- ja joidenkin erikoismerkkien yli, esim. å-kirjain, pilkku, piste, kysymysmerkki ja huutomerkki, mutta muiden erikoismerkkienkin paikkaa ohjelma saattaa vaihtaa.

Lisää seuraavat komponentit formillesi:

* CommonDialog

* CheckBox

* 2 RichTextBoxia

* 3 CommandButtonia

Yllämainittuja "tarvikkeita" ei tarvi venytellä mihinkään muotoon, koska koodi muokkaa niiden koon oikeaksi automaattisesti.
Toivottavasti tästä päivitetystä koodivinkin versiosta on mahdollisimman monelle hyötyä!

Huomaa: Mitä pitempää sanaa Convertoit, sitä kauemmin se kestää.

>>Harrastelija>>

koodaus

' koodia saa VAPAASTI hyödyntää omaan käyttöönsä!

Option Explicit
Private Function Poista_Alku_Spacet(merkkijono As String) As String
Dim palaute As String
palaute = merkkijono
While Left(palaute, 1) = " "
palaute = Right(palaute, Len(palaute) - 1)
Wend
Poista_Alku_Spacet = palaute
End Function
Private Sub muunto()
Dim chara As String * 1
Dim j As Integer
Dim leikkuu As String
Dim sana As String

leikkuu = Poista_Alku_Spacet(RichTextBox1.Text)
If InStr(1, leikkuu, " ") > 0 Then
For j = 0 To Len(leikkuu)
chara = Mid(leikkuu, j + 1, 1)
If chara <> " " Then
sana = sana + chara
Else
muuta (sana)
sana = ""
End If
Next
Else
muuta (leikkuu)
End If
End Sub

Private Sub muuta(sana As String)
Dim muuta As String
Dim sanalen As Integer
Dim eka As String * 1
Dim loppu As String
Dim temp() As String * 1
Dim jotaulu() As Integer
Dim j As Integer
Dim i As Integer
Dim nummi As Integer
Dim onjo As Boolean
Dim muunnettu As String

eka = Left(sana, 1)
loppu = Right(sana, 1)
j = 2
Do
If Asc(loppu) > 32 And Asc(loppu) < 48 Then
loppu = Right(sana, j)
j = j + 1
Else
Exit Do
End If
Loop Until 1
sanalen = Len(sana) - j
If RichTextBox2.Text <> "" Then
RichTextBox2.Text = RichTextBox2.Text + " "
End If
If sanalen < 2 Then
RichTextBox2.Text = RichTextBox2.Text + sana
Exit Sub
End If
ReDim temp(sanalen)
ReDim jotaulu(sanalen)
For j = 0 To sanalen - 1 Step 1
Randomize
nummi = Int((sanalen * Rnd) + 1)    'Arvotaan luku jokaon sananpituus -2 ja vähintään 1
onjo = False                        'Toivotaan että lukua ei vielä ole taulussa.

For i = 0 To j Step 1               'Tarkistetaan onko luku taulussa
If jotaulu(i) = nummi Then          'Jos luku on...
j = j - 2                           'arvonta kyseisen luvun osalta suoritetaan uudelleen.
onjo = True                         'Merkitään että esiintyi
Exit For                            'Poistutaan tästä silmukasta
End If
Next
DoEvents
If onjo = False Then
jotaulu(i) = nummi
temp(j) = Mid(sana, nummi + 1, 1)
End If
Next
For j = 0 To sanalen - 1 Step 1
muunnettu = muunnettu + temp(j)
Next
RichTextBox2.Text = RichTextBox2.Text + eka + muunnettu + loppu
End Sub


Private Sub Command1_Click()
On Error GoTo virhe
If Check1.Value = Checked Then
RichTextBox2.Text = ""
If RichTextBox1.Text <> "" Then
muunto
Clipboard.SetText (RichTextBox2.Text)
End If
Else
If RichTextBox1.Text <> "" Then
muunto
Clipboard.SetText (RichTextBox2.Text)
End If
End If
Exit Sub
virhe:
MsgBox "Error"
End Sub

Private Sub Command2_Click()
On Error GoTo virhe

    Dim filu As String

    With CommonDialog1
        .DialogTitle = "Tallenna nimellä..."
        .CancelError = False
        'ToDo: set the flags and attributes of the common dialog control
        .Filter = "Muunnetut sanalistat (*.kjm)|*.kjm"
        .ShowSave
        If Len(.FileName) = 0 Then
            Exit Sub
        End If
        filu = .FileName
    End With
    Form1.RichTextBox2.SaveFile filu
    Exit Sub

virhe:
MsgBox "Ei voi tallentaa tiedostoa " & filu & ".", , "Virhe"
End Sub

Private Sub Command3_Click()
On Error GoTo virhe

    Dim filu As String


    With CommonDialog1
        .DialogTitle = "Avaa"
        .CancelError = False
        'ToDo: set the flags and attributes of the common dialog control
        .Filter = "Muunnetut sanalistat (*.kjm)|*.kjm"
        .ShowOpen
        If Len(.FileName) = 0 Then
            Exit Sub
        End If
        filu = .FileName
    End With
    Form1.RichTextBox2.LoadFile filu
    Exit Sub

virhe:
MsgBox "Tiedostoa " & filu & " ei löydy.", , "Virhe"
End Sub

Private Sub Form_Load()
On Error GoTo virhe
Form1.BackColor = &H80FF&
Form1.Height = 4000   'Asetetaan Formin määritteet
Form1.Width = 5200
Form1.Left = 3300
Form1.Top = 2600
Form1.Caption = "Kirjainjärjestyksen muunnin, versio 2.0"
RichTextBox1.BackColor = &H80C0FF
RichTextBox1.Height = 1400   'TextBoxin määritteet
RichTextBox1.Width = 4800
RichTextBox1.Left = 160
RichTextBox1.Top = 120
RichTextBox1.Text = ""
RichTextBox2.BackColor = &H80C0FF
RichTextBox2.Height = 1400  'Labelin määritteet
RichTextBox2.Width = 4800
RichTextBox2.Left = 160
RichTextBox2.Top = 1700
RichTextBox2.BorderStyle = 1
RichTextBox2.Enabled = False
RichTextBox2.Text = ""
Command1.Height = 400 'Painikkeen määritteet
Command1.Width = 1000
Command1.Left = 1760
Command1.Top = 3200
Command1.Caption = "&Muunna"
Command2.Height = 400 'Tallenna-painikkeen määritteet
Command2.Width = 1000
Command2.Left = 2860
Command2.Top = 3200
Command2.Caption = "&Tallenna"
Command3.Height = 400 'Lataa-painikkeen määritteet
Command3.Width = 1000
Command3.Left = 3960
Command3.Top = 3200
Command3.Caption = "&Lataa"
Check1.BackColor = &H80FF&
Check1.Height = 400   'CheckBoxin määritteet
Check1.Width = 1400
Check1.Left = 160
Check1.Top = 3180
Check1.Caption = "Tyhjennä automaattisesti"
Exit Sub
virhe:
MsgBox "Error"
End Sub

tsuriga [23.07.2005 15:57:07]

#

Kun katsoo koodia niin pakko todeta, että tämän olisi voinut tehdä helpomminkin (lue: laiskemmin) tai sitten kieli on vain huono.

Harrastelija [23.07.2005 20:40:49]

#

Niin kai, mutta tämähän on ihan toimiva toteutus.. ;)

CyantLeap [01.09.2005 21:07:52]

#

Hieno ja hyödyllinen koodi! tosta oli apua mulle ainakin =)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta