Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: (vb) Haaste taitaville

Hellami [22.11.2003 18:01:14]

#

Millä koodilla saisin tehtyä mahd. lyhyen ohjelman joka lukisi tietokannasta tarvittavat tiedot. Ohjelman tulisi lukea jostain suomi-englanti -sanakirjasta ensin suomen kielinen sana ja sitten englanninkielinen ( mistä tällainen tietokanta olisi saatavilla?). Sen jälkeen sen tulisi sijoittaa sanat:

 .replace("suomen", "englannin kielinen")

Ja tämän jälkeen tulostaa vaikka textbox1:een jokainen lause omalle riville.

Tämän tarvitsisi olla toteutettavissa Vb .net:illä

tnb [23.11.2003 09:51:11]

#

Tässä ratkaisu käännöskoneeksi.
Formilla tulee olla textbox1 ja 2 joilla multiline ja vertical scroll. Sanakirja tiedosto on oletettu teksi tiedostoksi, jossa on ";" erottimena suomen ja englannin sanan välissä. Kaikki suomen kielen taivutusmuodot tulee olla tiedostossa. Silti kielioppi mättää.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim al1(100) As String
    Dim al2(100) As String
    Dim s() As String
    Dim i As Long
    Dim k As Long
    Dim k_max As Long
    Dim m As Integer
    Dim n As Integer
    Dim st1 As String
    Dim st2 As String
    Dim ss As String
    Dim sss As String
    Dim ff As Integer
    Dim fname As String

    'esimerkki teksitiedoston koodauksesta:
    'tämä;this
    'on;is
    'minun;my
    'uusi;new
    'sanakirja;dictionary
    'teksti;text
    'suomeksi;with Finnish
    'tähän;to here

    'luetaan tekstitiedosto
    Dim TextLine As String
    FileOpen(1, "C:\suomeksi.txt", OpenMode.Input)   ' Open file.
    k = 0
    While Not EOF(1)   ' Loop until end of file.
        TextLine = LineInput(1)   ' Read line into variable.
        s = Split(TextLine, ";") ' split
        al1(k) = s(0) ' laitetaan listaa 1
        al2(k) = s(1) ' laitetaan listaa 2
        k = k + 1
    End While
    FileClose(1)   ' Close file.
    k_max = k - 1
    'Kännettävä teksti
    'TextBox1.Text = "tämä on minun uusi sanakirja"
    TextBox2.Text = ""
    'Käännetään
    For k = 0 To UBound(TextBox1.Lines)
        sss = ""
        s = Split(TextBox1.Lines(k), " ") ' pilkotaan rivi sanoiksi taulukkoon s()
        'kaikki rivillä olevat sanat käydään läpi
        For m = 0 To UBound(s)
            ' poistetaan pilkku ja piste
            ss = Replace(s(m), ".", "")
            ss = Replace(ss, ",", "")
            ss = Replace(ss, ":", "")
            For n = 0 To k_max
                'huomioidaan myös isolla alkavat
                st1 = al1(n).ToUpper
                st1 = st1.Chars(0) + al1(n).Substring(1, al1(n).Length - 1)
                st2 = al2(n).ToUpper
                st2 = st2.Chars(0) + al2(n).Substring(1, al2(n).Length - 1)

                'pienellä alkavat
                If (ss = al1(n)) Then
                    sss = sss & al2(n)
                    'lisätään pisteet takaisin
                    If s(m).Chars(s(m).Length - 1) = "." Then sss = sss & "."
                    If s(m).Chars(s(m).Length - 1) = "," Then sss = sss & ","
                    If s(m).Chars(s(m).Length - 1) = ":" Then sss = sss & ":"
                    If (m <> UBound(s)) Or (k <> UBound(TextBox1.Lines)) Then sss = sss & " "
                End If
                ' isolla alkavat
                If (ss = st1) Then
                    sss = sss & st2
                    'lisätään pisteet takaisin
                    If s(m).Chars(s(m).Length - 1) = "." Then sss = sss & "."
                    If s(m).Chars(s(m).Length - 1) = "," Then sss = sss & ","
                    If s(m).Chars(s(m).Length - 1) = ":" Then sss = sss & ":"
                    If (m <> UBound(s)) Or (k <> UBound(TextBox1.Lines)) Then sss = sss & " "
                End If

            Next
        Next
        If k = UBound(TextBox1.Lines) Then
            TextBox2.Text = TextBox2.Text & sss 'viimeiseen riviin ei rivinvaihtoa.
        Else
            TextBox2.Text = sss & TextBox2.Text & Chr(13) & Chr(10) 'rivinvaihto
        End If
    Next
End Sub

Hellami [23.11.2003 11:50:04]

#

Tiedän että kielioppi mättää mutta sen saa jos jaksaa korjattua suurinpiirtein oikein jos haluu...
Niin tämä koodi ei siis lue mitään mistään tietokannasta... vaan tekstitiedostosta "Suomeksi.txt"
mutta sehän tarkoittaa että minun pitää kuitenkin kirjoittaa sanakirjasta kaikki koneelle... vai onko jostakin saatavilla valmiina oleva???

Antti Laaksonen [23.11.2003 13:04:23]

#

Enpä usko, että tuollaisia sanalistoja on olemassa, ainakaan ilmaiseksi. Sanakirjoissakin tapaa olla tekijänoikeudet. Muutenkaan kääntäminen ei valitettavasti ole niin helppoa, että yksittäinen sana korvataan toisenkielisellä vastineella.

Hellami [23.11.2003 13:15:04]

#

No jaa... taidan sitten vaihtaa ideaa... vai keksisikö kukaan aloittelevalle ohjelmoijalle hyvää "projektia" -jossa saisi harjoiteltua vähän kaikilta osa-alueilta.

juhapekka [26.11.2003 20:37:42]

#

:D

ainakin sulla on vaatimattomat aloitusideat.
mitä jos tekisit half-life 3:sen?

tee perinteinen cd-kansiohjelma winapi-käskyillä.
älä luo yhtään objektia ide:n avulla vaan puhtaalla koodilla.
käytä esikatselussa bitblt:ta ja muita kivoja juttuja..

ja lisää siihen sitten pieni tietokanta, mitä cd:n kansio on jo tehty.. sitten tuki, että se osaa hakea netistä kansia. ja sitten siihen voisi tulla kovalevyn skannausjuttu, joka etsii kovolta imageja ja sitten se yrittäis arpoa niihin oikeat kannet nimen perusteella.. ja sitten vielä..

Vastaus

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

Tietoa sivustosta