Jeg er også ret sikker på det er derfor de har lavet de tekst-filer med tab.. ellers ser det jo ud af noget lort.. hvis de åbnes med en anden font-type
Du vil aldrig kunne lave det hvis det skal kunne ses.. med alle font-typer
Private Sub Form_Load() Me.AutoRedraw = True
With Me.Font .Name = "MS Sans Serif" .Size = 10 End With
Print "Her her vil det aldrig komme til at passe, fordi det er med mellemrum." Print Me.TextWidth("Hej Martin") Print Me.TextWidth("Davs Martin")
Print "Her her vil det passe, fordi det er med tab." Print Me.TextWidth("Hej" & vbTab & "Martin") Print Me.TextWidth("Davs" & vbTab & "Martin") End Sub
Er helt med på at forskellige fonte ikke har samme bredde.
Min opgave går på at konvertere dataene til en ascii-fil, hvor de står under hinanden. Uden tab's.
Dataene kommer egenligt fra en html-fil hvor de er ordnet i tabeller, ganske nydeligt. Dem har jeg hentet over i excel, og gemt som txt. Det var den eneste måde jeg kunne få det til at se nogenlunde ordenligt ud på. Men der bliver indsat tabs...
Ja, nok noget i den stil. Det skal læses ind i en totalstation, der kun fatter mellemrum, og som SKAL have dataene ordnet på en bestemt måde, i kolonner.
Nå - jeg må nok bare læse linie for linei. Bestemme hvordan dataene skal stå for hver linie, afhængig af typen af data, og derefter skrive det til en textfil. Og så en løkke om det hele. Tænkte at der var en genvej
Nej, for de forskellige tab's svare til forskellige antal spaces.... Det er jo netop ideen med tab's hej<tab><tab>med<tab>dig hejsa<tab><tab>Anders<tab>And
Det står under hinanden når der anvendes tab's. erstatter jeg hver tab med et bestemt antal spaces, står det ikke længere under hinanden...
Tror at du skal glemme det her, og evt. lige skimme til 10/08-2005 13:53:09
Private Sub Form_Load() Dim i As Long, j As Long Dim strText As String Dim arrLine() As String Dim arrTabs() As String Dim strLine As String Dim arrTextLength() As Long Dim blnIsRedim As Boolean
arrLine = Split(strText, vbCrLf) For i = LBound(arrLine) To UBound(arrLine) arrTabs = Split(arrLine(i), vbTab) For j = LBound(arrTabs) To UBound(arrTabs) If blnIsRedim = False Then ReDim arrTextLength(LBound(arrTabs) To UBound(arrTabs)) As Long blnIsRedim = True End If If Len(arrTabs(j)) >= arrTextLength(j) Then arrTextLength(j) = Len(arrTabs(j)) + 2 ' <- din tab bliver så 2 mellemrum her End If Next 'j Next 'i
arrLine = Split(strText, vbCrLf) For i = LBound(arrLine) To UBound(arrLine) arrTabs = Split(arrLine(i), vbTab) For j = LBound(arrTabs) To UBound(arrTabs) strLine = (strLine & RightSpace(arrTabs(j), arrTextLength(j))) Next 'j strLine = (strLine & vbCrLf) Next 'i
'HUSK -> Text1.MultiLine = True Text1.Font.Name = "Courier New" Text1.Text = strLine End Sub
Public Function RightSpace(strText As String, intSpace As Long) As String RightSpace = strText & Space$(intSpace - Len(strText)) End Function
Private Sub Form_Load() Dim i As Long, j As Long Dim strText As String Dim arrLine() As String Dim arrTabs() As String Dim strLine As String Dim arrTextLength() As Long Dim blnIsRedim As Boolean
Do While InStr(1, strText, vbTab & vbTab) strText = Replace(strText, vbTab & vbTab, vbTab) Loop
arrLine = Split(strText, vbCrLf) For i = LBound(arrLine) To UBound(arrLine) arrTabs = Split(arrLine(i), vbTab) For j = LBound(arrTabs) To UBound(arrTabs) If blnIsRedim = False Then ReDim arrTextLength(LBound(arrTabs) To UBound(arrTabs)) As Long blnIsRedim = True End If If Len(arrTabs(j)) >= arrTextLength(j) Then arrTextLength(j) = Len(arrTabs(j)) + 2 ' <- din tab bliver så 2 mellemrum her End If Next 'j Next 'i
arrLine = Split(strText, vbCrLf) For i = LBound(arrLine) To UBound(arrLine) arrTabs = Split(arrLine(i), vbTab) For j = LBound(arrTabs) To UBound(arrTabs) strLine = (strLine & RightSpace(arrTabs(j), arrTextLength(j))) Next 'j strLine = (strLine & vbCrLf) Next 'i
'HUSK -> Text1.MultiLine = True Text1.Font.Name = "Courier New" Text1.Text = strLine End Sub
Public Function RightSpace(strText As String, intSpace As Long) As String RightSpace = strText & Space$(intSpace - Len(strText)) End Function
Som det fremgår af en anden tråd, har jeg lavet det - og mistet det. Og er nu ved at lave det - igen
Synes godt om
Ny brugerNybegynder
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.