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ä
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 SubTiedä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???
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.
No jaa... taidan sitten vaihtaa ideaa... vai keksisikö kukaan aloittelevalle ohjelmoijalle hyvää "projektia" -jossa saisi harjoiteltua vähän kaikilta osa-alueilta.
: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ä..
Aihe on jo aika vanha, joten et voi enää vastata siihen.