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


Skriva snyggt till fil

Postades av 2001-06-20 11:39:00 - Kjell Andersson, i forum visual basic - allmänt, Tråden har 12 Kommentarer och lästs av 586 personer

Hur skriver man till en fil så att det blir raka kolumner när orden är olika långa?


Svara

Sv: Skriva snyggt till fil

Postades av 2001-06-20 13:16:00 - Sven Åke Persson

Hej
Du använder Tab funktionen

Exempel från ett av mina projekt

Printer.Print ; Tab(11); dtaBasData.Recordset(10) _
; Tab(40); dtaBasData.Recordset(0); "." _
; Tab(45); dtaBasData.Recordset(1) _

Byt ut mina dtaBasData.Recordset() mot en experiment
text sträng så förstår du tekniken.

mvh
Sven


Svara

Sv: Skriva snyggt till fil

Postades av 2001-06-20 15:52:00 - Kjell Andersson

Det blev jättebra!


Svara

Sv: Skriva snyggt till fil

Postades av 2002-05-06 21:55:57 - Mattias Wästle

om man vill ha tre kolumner efter varann hur kan man då skriva?
det ska se ut ungefär så här:

Jag 17 år Gymnastik
Han 15 år Golf

/Bulten


Svara

Sv: Skriva snyggt till fil

Postades av 2002-05-06 22:05:07 - Tobias Eklind

Ett annat sätt att göra det på är

<code>
Dim psVar1 As String * 20
Dim psVar2 As String * 20

psVar1 = "Test"
psVar1 = "Test2 Test2"


Debug.Print psVar1
Debug.Print psVar2
</code>

När du skriver String * 20 så kommer den att bli 20 tecken lång vad du en fyller i den, på detta sätt kan du defenera hur allt skall se ut väldigt lätt.

//Tobbe


Svara

Sv: Skriva snyggt till fil

Postades av 2002-05-06 22:23:18 - Mattias Wästle

Jag har testat det du skrev men det blev endå inte som jag ville. Jag vill att det ska bli som följande:

Petter 25 sundsvall
Erik 24 Kalmar

Men i stället blev det:

petter 25 sundsvall
Erik 24 Kalmar

De ligger inte efter kolumner! hur ska jag göra ??

Mega tacksam för svar
/Bulten


Svara

Sv: Skriva snyggt till fil

Postades av 2002-05-06 22:34:23 - Tobias Eklind

Testa detta så skall det funka
byt ut debug.print till rutinen du har för att skriva till fil

<code>
Dim a(1) As String * 10
Dim b(1) As String * 5
Dim c(1) As String * 15


a(0) = "Petter"
b(0) = "25"
c(0) = "sundsvall"

a(1) = "Erik"
b(1) = "24"
c(1) = "Kalmar"

Debug.Print a(0) & b(0) & c(0)
Debug.Print a(1) & b(1) & c(1)
</code>


//Tobbe


Svara

Sv: Skriva snyggt till fil

Postades av 2002-05-06 23:43:09 - Mattias Wästle

Det fungerade men.. om jag vill ha så att a(1) inte stöter ihop med b(1) vad ska jag göra då, om du har så att man bara kan ha tio tecken på a(1) så börjar nästa b(1) på 11 platsen! Hur ska jag göra om jag vill att det minst ska vara ett mellanslag mellan dem ??


Jag gjorde som det stod i din kod men det blev inte exat på linje, det såg ut såhär:

Petter 24 sundsvall
Erik 25 Kalmar


Svara

Sv: Skriva snyggt till fil

Postades av 2002-05-07 00:52:27 - Ronny Thörnvall

Om du vill ha texten i kolumner med max ett teckens mellanrum mellan den längsta texten i en kolumn och nästa så måste du ta reda på hur många tecken den längsta texten har i varje kolumn först...

Säg att du har all text i en 2-dimensionell array som du skickar som indata till en procedur som sedan skall formatera texten och skriva ut den till något media (immediate-fönstret i mitt exempel):

<code>
Option Explicit

Private Sub Command1_Click()
Dim arr() As String
'Lite fejk-data
ReDim arr(0 To 1, 0 To 2)
arr(0, 0) = "Petter"
arr(0, 1) = "24"
arr(0, 2) = "Sundsvall"
arr(1, 0) = "Erik"
arr(1, 1) = "25"
arr(1, 2) = "Kalmar"
'Skicka arraen för utskrift
Call PrintThis(arr)
End Sub

Private Sub PrintThis(Data As Variant)
'beräkna maxbredden per kolumn och spara i en array
Dim i As Integer
Dim j As Integer
Dim max() As Integer
ReDim max(UBound(Data, 2))
'Gå igenom varje rad i arrayen
For i = 0 To UBound(Data, 1)
'och varje kolumn
For j = 0 To UBound(Data, 2)
max(j) = IIf(max(j) < Len(Data(i, j)), Len(Data(i, j)), max(j))
Next j
Next i
'Nu kan arrayen skrivas ut
For i = 0 To UBound(Data, 1)
For j = 0 To UBound(Data, 2)
Debug.Print Data(i, j) & Space(max(j) - Len(Data(i, j)) + 1);
Next j
Debug.Print
Next i
End Sub
</code>

Hm, det såg lite krångligt ut... borde finnas enklare sätt?! :-)

// Qezlot


Svara

Sv: Skriva snyggt till fil

Postades av 2002-05-07 08:10:15 - Andreas Hillqvist

Enklast är att bara lägga till ett mellanslag mellan alla.

Dim a As String * 10
Dim b As String * 5
Dim c As String * 15

a = "Petter"
b = "25"
c = "sundsvall"
Debug.Print a & " " & b & " " & c

a = "Erik"
b = "24"
c = "Kalmar"
Debug.Print a & " " & b & " " & c



Svara

Sv: Skriva snyggt till fil

Postades av 2002-05-07 08:31:34 - Andreas Hillqvist

Hej. Tänkte bidra med lite konstruktiv kritik:
* Använd inte IIF funktionen. Den är långsam.
* När man jämför max min värden är det bäst att tilldela första värdet.
Slipper man ifsats för det samt att negativa värden inte ställer till det.
* Long är snabbare än integer på 32 bitars system som win9x och uppåt.
Det är oxå den "minsta" variabel. Mindre variabler tar onödiga resurser i anspråk vid beräkningar.
* Använd namn på variabler. Inte bokstäver som inte säger något.
* För att fylla ut en variabel kan man lägg till lika antal utfyllnads tecken före/efter och använda left/right funktionen.
* Använd funktioner som slutar på $. Detta retunerar strängar istället för variant.
* Utför beräkningar om möjligt utanför loop.
<code>
Option Explicit

Private Sub Command1_Click()
Dim arr() As String
'Lite fejk-data
ReDim arr(0 To 1, 0 To 2)
arr(0, 0) = "Petter"
arr(0, 1) = "24"
arr(0, 2) = "Sundsvall"
arr(1, 0) = "Erik"
arr(1, 1) = "25"
arr(1, 2) = "Kalmar"

'Skicka arraen för utskrift
Call PrintThis(arr)
End Sub

'beräkna maxbredden per kolumn och spara i en array
Private Sub PrintThis(Data As Variant)
Dim Row As Long
Dim Col As Long
Dim Length As Long
Dim Max() As Long
Dim Padding() As String
ReDim Max(UBound(Data, 2))

'tilldelar maxvärdena för första raden
For Col = 0 To UBound(Data, 2)
Max(Col) = Len(Data(0, Col))
Next
'Gå igenom varje rad i arrayen
For Row = 1 To UBound(Data, 1)
'och varje kolumn
For Col = 0 To UBound(Data, 2)
Length = Len(Data(Row, Col))
If Max(Col) < Length Then
Max(Col) = Length
End If
Next
Next
'Förbereder värden
ReDim Padding(0 To UBound(Data, 2))
For Col = 0 To UBound(Data, 2)
Max(Col) = Max(Col) + 1
Padding(Col) = Space$(Max(Col) + 1)
Next Col

'Nu kan arrayen skrivas ut
For Row = 0 To UBound(Data, 1)
For Col = 0 To UBound(Data, 2)
Debug.Print Left$(Data(Row, Col) & Padding(Col), Max(Col));
Next Col
Debug.Print
Next
End Sub
</code>

Annars är det ett bra exempel.

/Mvh, Andreas Hillqvist


Svara

Sv: Skriva snyggt till fil

Postades av 2002-05-07 13:05:12 - Ronny Thörnvall

Hej och tack!

Prestandatips är alltid välkomna, måste väl erkänna att jag läst de tipsen förut fast jag inte lever som jag lär ;-)

Anledningen till Iif() var bara för att det var sent och jag kände mig lite elak. ;-)

// Qezlot


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 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

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 612
27 953
271 709
6 570
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