Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Tvinga radbrytning i fil

Postades av 2005-03-04 07:54:57 - Johan Hjort, i forum visual basic - allmänt, Tråden har 25 Kommentarer och lästs av 1841 personer

Jag har en textbox där jag skriver viss data, nu är det så att jag vill att datan aldrig ska övergå 64 tecken per rad. En kille tipsade mig lite men försvann sen, nedan är vad han gav mig och jag söker nu er hjälp, delvis för att jag inte vet hur jag ska få till det och plus att jag aldrig har förstått mig på loopar :/.

"Om din maxlängd/rad på textboxen är tex 50 så tar du left(strData,50), sen hittar du sista spacetecknet i den raden med hjälp av InstrRev(nyasträngen," "), sen, strData = right(strData,len(strData)-len(nyastesträngen)) och sen loopar du det".

Jag står som sagt helt nollställd, och vet inte alls hur jag ska få det här att fungera, så hjälp mottages.


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-04 13:48:53 - Jens Hallberg

Gjorde en test som verkar fungera.

Lägg upp en textbox "text1" och prova koden.

<code>
Private Sub BreakText()
Dim TextLen As Integer
Dim MaxLineLen As Integer
Dim Breakpos As Integer
Dim TextToBreak As String
Dim NewText As String
Dim EnterPos As Integer


'Antal tecken per rad
MaxLineLen = 20

TextToBreak = Text1.Text

TextLen = Len(TextToBreak)
If TextLen < MaxLineLen Then
Exit Sub
End If


Do Until Len(TextToBreak) < MaxLineLen
'Kolla om raden är bruten.
EnterPos = InStr(1, Mid(TextToBreak, 1, MaxLineLen + 2), vbCrLf, vbTextCompare)
If EnterPos < 1 Then
'Raden är ej bruten, måste brytas
'Leta upp sista blankslaget
Breakpos = InStrRev(TextToBreak, " ", MaxLineLen, vbTextCompare)
'lägg till rad i ny text
NewText = NewText & Left(TextToBreak, Breakpos) & vbCrLf
'ta bort samma rad från orgtext
TextToBreak = Mid(TextToBreak, Breakpos + 1)
Else
'Raden är redan bruten
'lägg till rad i ny text
NewText = NewText & Left(TextToBreak, EnterPos - 1) & vbCrLf
'ta bort samma rad från orgtext
TextToBreak = Mid(TextToBreak, EnterPos + 2)
End If
Loop


'Lägg till sista delen av texten.
NewText = NewText & TextToBreak

'Skriv tillbaka till textbox.
Text1.Text = NewText

End Sub
</code>


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-04 14:20:36 - Sven Åke Persson

Alldeles för mycket kod för en så enkel sak.

Så här skall det i princip lösas.Tycker Jag ;-)

Du kan inte låsa på exakt 64 tecken .Med en Select Case sats plockar du
när ett ord efterföljs av mellanslag, punkt eller komma och
ligger då detta tecken i intervallet 50 - 70 så byter Vi Rad


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-04 14:50:38 - Jens Hallberg

Vet inte om det är så mycket kod.
Hälften är kommentarer.

Antar att det finns bättre sätt att lösa på än mitt.

Utveckla gärna mer hur du menar.


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-04 15:42:26 - Sven Åke Persson

mmm det finns det.Men fråga till Hjorten är det viktigt att det blir exakt 64 ?


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-04 18:13:54 - Johan Hjort

Det får inte vara över 64 tecken, glömde bort att skriva det i mitt första inlägg.


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-04 19:21:22 - Sven Åke Persson

Är det logiska ord som måste brytas. ?

Dvs om jag skriner "extraordinarivaktmästarebiträde" så skall det brytas eller ?


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-04 20:08:53 - Johan Hjort

Det kommer nog aldrig vara så långa ord i datan som ska matas in, men svaret är ja.


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-05 00:37:04 - Håkan Borneland

Hej!

Frågor:
Ska texten i textboxen skrivas till en fil, som det står i inläggets rubrik?
Eller ska den radbrytas i textboxen?
Ska raderna vara 64 tecken långa MED eller UTAN radbrytningstecken?
Om man radbryter, ska man då göra det vid 64 utan hänsyn till var i texten det är?
Eller ska det brytas "snyggt", t.ex backa till närmaste mellanslag?

//Håkan


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-05 01:27:59 - Johan Hjort

> Ska texten i textboxen skrivas till en fil, som det står i inläggets rubrik?

Ja.

> Eller ska den radbrytas i textboxen?

Nej.

> Ska raderna vara 64 tecken långa MED eller UTAN radbrytningstecken?

Efter en koll i min kod så ska raden vara max 61 tecken, MED radbrytningstecken.

> Om man radbryter, ska man då göra det vid 64 utan hänsyn till var i texten det är?

Nej.


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-05 01:34:43 - Håkan Borneland

<b>> Om man radbryter, ska man då göra det vid 64 utan hänsyn till var i texten det är?

Nej.</b>
Detta tolkar jag som att du vill ha hela ord (bara bryta vid mellanslag)..?

//Håkan


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-05 01:41:47 - Johan Hjort

<b>Detta tolkar jag som att du vill ha hela ord (bara bryta vid mellanslag)..?</b>

Nja, det får dock inte överstiga 61 tecken per rad.
Exempel:

"En gång gick Peter och handlade på ICA Supermarket, han tyckte att det var roligt."

Där ska den bryta flytta ner "tyckte att det var roligt." till nästa rad, om du förstår vad jag menar.


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-05 01:54:57 - Håkan Borneland

Visst jag förstår.
Om 59 är en bokstav, kika bakåt till närmsta mellanslag.

//Håkan


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-05 02:01:02 - Johan Hjort

> Om 59 är en bokstav, kika bakåt till närmsta mellanslag.

Mnjaa, sista mellanslaget ska det gå till och sen ska texten som kommer efter det ner på nästa rad. En tanke dock, vad händer om jag trycker enter två gånger för att få en ny tom rad, kommer det knasa till någonting?


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-05 02:18:43 - Håkan Borneland

Angående enterslagen så tror jag inte det.
Annars verkar vi vara på samma sida.

//Håkan


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-05 02:28:50 - Håkan Borneland

Känner John Blund knacka på axeln, återkommer under helgen.
Om ingen annan fixat en lösning innan dess.
Blir lite mer meck, när du vill bryta "ssssnyggt". ;-)

//Håkan


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-06 02:08:55 - Håkan Borneland

Hej igen!

Kanske det här gör det du vill.
Har bakat in filhantering (då det ska skrivas till fil).
Bara att ta bort eller göra på annat vis.
Vet inte hur du vill använda texten som skrivs till filen.
Som den skrivs ner nu, så kan vissa rader börja med mellanslag (i filen).
Annars kan man ta bort dem, om de inte behövs vid en uppläsning/visning.

Private Sub Save_Click()
    Dim iStop            As Integer
    Dim iCounter       As Integer
    Dim iRows           As Integer
    Dim strText         As String
    Dim mFileSysObj  As New FileSystemObject
    Dim mFile            As File
    Dim mTxtStream  As TextStream

    strText = TextBox.Text
    
    If Len(strText) > 0 Then
        Call mFileSysObj.CreateTextFile("C:\Test.txt")
        Set mFile = mFileSysObj.GetFile("C:\Test.txt")
        Set mTxtStream = mFile.OpenAsTextStream(ForWriting)
        iRows = Len(strText) \ 61
 
        If iRows = 0 Then
           Call mTxtStream.WriteLine(strText)
        Else
            For iCounter = iRows To 0 Step -1
                If Mid$(strText, 61, 1) = " " Then
                    Call mTxtStream.WriteLine(Left$(strText, 61))
                    strText = Mid$(strText, 61)
                Else
                    iStop = InStrRev(strText, " ", 61)
                    If iStop = 0 Then
                        Call mTxtStream.WriteLine(strText)
                    Else
                        Call mTxtStream.WriteLine(Left$(strText, iStop))
                        strText = Mid$(strText, iStop)
                    End If
                End If
            Next iCounter
        End If
        Call mTxtStream.Close
    End If
    Set mFileSysObj = Nothing
End Sub


//Håkan


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-06 16:53:09 - Johan Hjort

Tack, men jag vet inte riktigt hur jag ska få in koden i min nuvarande kod. Jag använder inte FSO i min kod. Det här är en del av koden:

<code>
Open FileName For Output As #Filenr
Print #Filenr, " totalt: " & txtTotalTime
Print #Filenr, " "
Print #Filenr, " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
Print #Filenr, " "
Print #Filenr, " data:"
Print #Filenr, " "
Print #Filenr, " " 'här vill jag att den radbrytna datan ska läggas in
Close #Filenr
</code>


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-06 18:08:27 - Thomas Roman

<code>
Open FileName For Output As #Filenr
Print #Filenr, " totalt: " & txtTotalTime
Print #Filenr, " "
Print #Filenr, " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
Print #Filenr, " "
Print #Filenr, " data:"
Print #Filenr, " "
Print #Filenr, " " & FixText("Här sätter du in den långa texten som du vill bryta vid 64 tecken. Innehåller meningen många ord så delas den vid lämpligt mellanrum, annars delas den mellan tecken 64 och 65.")
Close #Filenr

Function FixText(ByVal strText As String) As String
Dim tempLine As String
Do Until strText = ""
Do Until Len(tempLine) = 64 Or strText = ""
tempLine = tempLine & Left(strText, 1)
strText = Mid(strText, 2)
If Right(tempLine, 2) = vbCrLf Then
FixText = FixText & tempLine
tempLine = ""
End If
Loop
If InStr(1, tempLine, " ") > 0 Then
strText = Mid(tempLine, InStrRev(tempLine, " ") + 1) & strText
FixText = FixText & vbCrLf & Left(tempLine, InStrRev(tempLine, " ") - 1)
tempLine = ""
Else
FixText = FixText & vbCrLf & tempLine
tempLine = ""
End If
Loop
If Left(FixText, 2) = vbCrLf Then FixText = Mid(FixText, 3)
End Function
</code>


Thomas


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-06 18:54:56 - Johan Hjort

Funkade finfint, dock ett litet problem som jag inte tänkte på först i min frågeställning, eller senare i tråden. Vid vare radbrytning ska fyra mellanslag läggas till innan texten börjar igen.

Skrev in följande text: "Testar ett två tre fyra fem sex sju åtta nio tio elva tolv. Ut i skogen bor smurfarna och Gargamel vill äta upp dom. Lala. Hej och hå, ut i skogen dom gå." (Utan citationstecken).

Det ser då ut så här i filen:

<code>
Testar ett två tre fyra fem sex sju åtta nio tio elva tolv. Ut
i skogen bor smurfarna och Gargamel vill äta upp dom. Lala. Hej
och hå, ut i skogen dom
gå.
</code>

Det borde dock se ut så här:

<code>
Testar ett två tre fyra fem sex sju åtta nio tio elva tolv.
Ut i skogen bor smurfarna och Gargamel vill äta upp dom.
Lala. Hej och hå, ut i skogen dom gå.
</code>


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-06 20:05:38 - Thomas Roman

<code>
Open FileName For Output As #Filenr
Print #Filenr, " totalt: " & txtTotalTime
Print #Filenr, " "
Print #Filenr, " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
Print #Filenr, " "
Print #Filenr, " data:"
Print #Filenr, " "
Print #Filenr, FixText("Testar ett två tre fyra fem sex sju åtta nio tio elva tolv. Ut i skogen bor smurfarna och Gargamel vill äta upp dom. Lala. Hej och hå, ut i skogen dom gå.")
Close #Filenr

Function FixText(ByVal strText As String) As String
Dim tempLine As String
Do Until strText = ""
Do Until Len(tempLine) = 64 Or strText = ""
tempLine = tempLine & Left(strText, 1)
strText = Mid(strText, 2)
If Right(tempLine, 2) = vbCrLf Then
FixText = FixText & " " & tempLine
tempLine = ""
End If
Loop
If InStr(1, tempLine, " ") > 0 Then
strText = Mid(tempLine, InStrRev(tempLine, " ") + 1) & strText
FixText = FixText & vbCrLf & " " & Left(tempLine, InStrRev(tempLine, " ") - 1)
tempLine = ""
Else
FixText = FixText & vbCrLf & " " & tempLine
tempLine = ""
End If
Loop
If Left(FixText, 2) = vbCrLf Then FixText = Mid(FixText, 3)
End Function
</code>


Thomas


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-06 20:10:56 - Thomas Roman

<b>Efter en koll i min kod så ska raden vara max 61 tecken, MED radbrytningstecken.</b>

Ser nu att jag hade missat den detaljen. Men du får justera koden själv så att antalet tecken stämmer.


Thomas


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-06 21:05:10 - Johan Hjort

Det funkar tokfint nu! Dock så blir det åtta tecken på första raden, men det kan jag ändra manuellt.


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-06 21:14:04 - Thomas Roman

Om du kollar på mitt andra exempel så har jag tagit bort dom första 4 mellanrummen eftersom det kommer 4 genom FixText(). Antar att det är det du har glömt att ändra.


Thomas


Svara

Sv:Tvinga radbrytning i fil

Postades av 2005-03-06 21:39:35 - Johan Hjort

Aah, såg inte det. Tack!


Svara

Sv: Tvinga radbrytning i fil

Postades av 2005-03-06 23:14:19 - Håkan Borneland

Hej!

Ser att du har en fungerande lösning.
Lägger ändå upp lösningen ihop med din kod.
Så får du se ett sätt att lösa det på.
Jag kanske rörde till det för dig, med fihanteringen och FSO.
Där det står "Text1" skulle namnet på din textbox stå.

    Dim iStop        As Integer
    Dim iCounter   As Integer
    Dim iRows       As Integer
    Dim strText     As String

    Open FileName For Output As #Filenr
    Print #Filenr, "    totalt: "
    Print #Filenr, "    "
    Print #Filenr, "    ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
    Print #Filenr, "    "
    Print #Filenr, "    data:"
    Print #Filenr, "    "
    
    strText = Text1.Text
    If Len(strText) > 0 Then
        iRows = Len(strText) \ 61
        If iRows = 0 Then
           Print #Filenr, "    " & strText
        Else
            For iCounter = iRows To 0 Step -1
                If Mid$(strText, 61, 1) = " " Then
                    Print #Filenr, "    " & Left$(strText, 60)
                    strText = Mid$(strText, 62)
                Else
                    iStop = InStrRev(strText, " ", 61)
                    If iStop = 0 Then
                        Print #Filenr, "    " & strText
                    Else
                        Print #Filenr, "    " & Left$(strText, iStop - 1)
                        strText = Mid$(strText, iStop + 1)
                    End If
                End If
            Next iCounter
        End If
    End If
    Close #Filenr


//Håkan


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
810
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies