Avatar billede mr-bob Nybegynder
17. november 2003 - 22:52 Der er 10 kommentarer og
1 løsning

Ord-deler i Vb6?

søger et ord-delingsprogram lavet i VB6! gerne på densk, men det er ikke et must!

på forhånd tak Mr bob
Avatar billede sjh Nybegynder
17. november 2003 - 23:28 #1
hvad gør et "ord-delingsprogram" ??
Avatar billede martin_moth Mester
18. november 2003 - 08:48 #2
???
Avatar billede martin_moth Mester
18. november 2003 - 13:35 #3
1. Mener du et program der automatisk deler ord op i stavelser, altså:

"Me-ner du et pro-gram der au-to-ma-tisk de-ler ord op i sta-vel-ser"

Hvis du mener det, har jeg et par kommentarer at knytte til din ide ;o)



      -o-



2. Eller mener du et program der der deler en string op i de ord den indeholder, og smider dem i et array?. Så er det Split-funktionen du har brug for:

MyArray = Split("Hej med dig", " ")



      -o-



3. Eller mener du noget helt tredie?
Avatar billede mr-bob Nybegynder
18. november 2003 - 18:44 #4
det var et pro-gram der del-te ord i sta-vel-ser. men har fundet ud af det. det er fordi jeg selv er i gang med at lave det, så jeg tænkte at jeg måske kunne komme videre hvis jeg havde lidt at kigge efter!

Men har jo fundet ud af det så jeg lukker: ellers tak!
Avatar billede martin_moth Mester
19. november 2003 - 08:48 #5
Ja, jeg ville jo mene at det var en ualmindelig stor programmeringsopgave... Hvordan har du løst den?
Avatar billede sjh Nybegynder
22. november 2003 - 17:39 #6
martin_moth < Han har nok ikke løst den, eller også var nok det nok split han skulle brugt ;)
Avatar billede mr-bob Nybegynder
22. november 2003 - 17:46 #7
Jeg har lavet sådan en sjov lille fætter her!

Public Function er_vokal(ByVal ordet, ByVal plads As Integer) As Boolean
    er_vokal = InStr("aeiouyæøå", Mid(ordet, plads, 1))
End Function
Public Function find_næste_vokal(ByVal ordet, ByVal udgangspunkt As Integer) As Integer
    plads = udgangspunkt
    If plads > 0 Then
        Do Until er_vokal(ordet, plads)
            plads = plads - 1
            If plads = 0 Then Exit Do
        Loop
    End If
    find_næste_vokal = plads
End Function

Public Function spstsk(ByVal ordet As String, ByVal vvokal As Integer, ByVal hvokal As Integer) As Integer
    splads = InStr(vvokal, ordet, "s")
    If splads > 0 Then
        If splads < hvokal - 1 Then
            If InStr("ptk", Mid(ordet, splads + 1, 1)) > 0 Then
                spstsk = splads - 1
            End If
        End If
    Else
        spstsk = 0
    End If
End Function

Public Function Dobbelt(ByVal ordet, ByVal vvokal As Integer, ByVal hvokal As Integer) As Integer
    Dobbelt = 0
    For plads = vvokal + 1 To hvokal - 2
        If Mid(ordet, plads, 1) = Mid(ordet, plads + 1, 1) Then
            Dobbelt = plads
            Exit For
        End If
    Next
End Function

Public Function delepunkt(ByVal ordet As String, ByVal vvokal As Integer, ByVal hvokal As Integer) As Integer
    If hvokal - vvokal < 2 Then
        delepunkt = vvokal
    Else
        delepunkt = Dobbelt(ordet, vvokal, hvokal)
        If delepunkt = 0 Then delepunkt = spstsk(ordet, vvokal, hvokal)
        If delepunkt = 0 Then delepunkt = hvokal - 2
    End If
End Function

Public Function indsæt_delestreg(ByVal ordet, delepunkt) As String
    indsæt_delestreg = Mid(ordet, 1, delepunkt) & "-" & Mid(ordet, delepunkt + 1)
End Function

Public Function del_ordet(ByVal ordet As String)
    vvokal = find_næste_vokal(ordet, Len(ordet))
    Do While vvokal > 0
        hvokal = vvokal
        vvokal = find_næste_vokal(ordet, hvokal - 1)
        If vvokal > 0 Then
            ordet = indsæt_delestreg(ordet, delepunkt(ordet, vvokal, hvokal))
        End If
    Loop
    del_ordet = ordet
End Function
Private Sub deleknap_Click()
Delt_ord = del_ordet(ordet)
End Sub
Avatar billede mr-bob Nybegynder
22. november 2003 - 17:47 #8
det er selvfølgelig en meget simpel version, der ikke kan dele ALLE ord rigtigt, men mange!
Avatar billede sjh Nybegynder
22. november 2003 - 18:34 #9
Ok smart nok :)
Avatar billede mr-bob Nybegynder
22. november 2003 - 18:47 #10
men når nu jeg har jer her, har i så en ide til hvordan man kan gøre sådan at der kan skrives flere ord ad gangen? probemet ligenu er at den laver en bindestreg foran hver ord, hvordan skriver man at den skal fjerne en bindestreg hvis den står lige efter et mellemrum?

jeg giver selvfølgelig lidt point hvis i kan hjælpe!

Bob
Avatar billede martin_moth Mester
22. november 2003 - 23:57 #11
Søg efter mellemrum. Tjek det efterfølgende tegn. Er det en - slettes tegnet...

Men InStr, Mid, Len osv skulle det være en smal sag :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester