vbfixedstring geeft problemen

  • Onderwerp starter Onderwerp starter jan68
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

jan68

Gebruiker
Lid geworden
19 apr 2012
Berichten
90
Ik wil van een oud vb-6 program een vb2010 uitvoering maken
doch loopt vast op de fixed lengte strings.
tot zo ver ben ik gekomen.
maar in de string van label4 staan alle waardes tegen elkaar aan zonder tussen ruimte

HTML:
Public Class Form1
    Public Structure TextvbFixedString
        <VBFixedString(30)> Public name As String
        <VBFixedString(4)> Public telNumber As System.int32
        <VBFixedString(10)> Public xwaarde As System.Single
        <VBFixedString(10)> Public ywaarde As System.Single
        <VBFixedString(10)> Public anglehoek As System.Single
    End Structure
----------------------------------------------------------------------------------
public sub testtext

    Dim string1 As New TextvbFixedString
    Dim string2 As New TextvbFixedString


        string1.name = " i                      x                          y                         angle "  &  vbNewLine & "- - - - - - - - - - - - - - - - - - -"
        string2.anglehoek = imax
        string2.telNumber = amax
        string2.xwaarde = x(imax)
        string2.ywaarde = y(imax)


        Label4.Visible = True
        Label4.Text = string1.name
        Label4.Text = string2.anglehoek & string2.xwaarde & string2.ywaarde & string2.telNumber.ToString 

end sub
end class

wat is er nu fout aan ?????
 
VB.Net ondersteund geen strings van een vaste lengte. Die VBFixedString is er voor terugwaartse compatibiliteit met VB6.
 
Laatst bewerkt:
Hallo edmoor
Ik verwachten toch op deze manier een nette tabel te kunnen maken.
de lengte van de waardes varieren sterk 0.1 tot 0.9761256 in het aantal bytes
Zoiets in een tabel onder en naast elkaar geeft een slordige indruk.
maar hoe dan CQ wat nu te doen
want vb2010 kent geen vaste lengte string of zoals in vb-6 eenoplossing met TAB(15) en tab(30)
ik hoop dat iemand een oplossing heeft.
groeten jan
 
edmoor
hoewel mijn "Engels"niet zo goed is ,geloof ik dat dit direct de oplossing.
vba en excel
ik wil alleen netjes een paar getallen op een label preseteren.
gr jan
 
Waar om gebruik je hier geen listbox voor?
Anders moet je karakters gaan tellen.

Of dit maak een form met een listbox en twee tekstboxen
Zie afbeelding
Knipsel22.PNG

Code:
Imports System.Runtime.InteropServices

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Set the ListBox tabs.
        SetListBoxTabs(lstCars, New Integer() {120, 170, 220})

        ' Set the TextBox tabs.
        SetTextBoxTabs(txtCars, New Integer() {120, 170, 220})

        ' Make some data.
         AddData("SSC Ultimate Aero", 257, 1183, 654400)
        AddData("Bugatti Veyron", 253, 1001, 1700000)
        AddData("Saleen S7 Twin-Turbo", 248, 750, 555000)
        AddData("Koenigsegg CCX", 245, 806, 545568)
        AddData("McLaren F1", 240, 637, 970000)
        AddData("Ferrari Enzo", 217, 660, 670000)
        AddData("Jaguar XJ220", 217, 542, 650000)
        AddData("Pagani Zonda F", 215, 650, 667321)
        AddData("Lamborghini Murcielago LP640", 211, 640, 430000)
        AddData("Porsche Carrera GT", 205, 612, 440000)
    End Sub

    ' Add some data to all three controls.
    Private Sub AddData(ByVal name As String, ByVal mph As Integer, ByVal hp As Integer, ByVal price As Decimal)
        ' Build a tab-delimited string.
        Dim txt As String = name & vbTab & mph.ToString() & " mph" & vbTab & _
            hp.ToString() & " hp" & vbTab & price.ToString("C")

        ' Display in the ListBox and first TextBox.
        lstCars.Items.Add(txt)
        txtCars.Text &= txt & vbCrLf

        ' Display formatted.
        txtFormattedCars.Text &= _
            String.Format("{0,-30}{1,7} mph{2,7} hp{3,15:C}" & vbCrLf, _
            name, mph, hp, price)
    End Sub

    ' Set tab stops inside a ListBox.
    Private Sub SetListBoxTabs(ByVal lst As ListBox, ByVal tabs As IList(Of Integer))
        ' Make sure the control will use them.
        lst.UseTabStops = True
        lst.UseCustomTabOffsets = True

        ' Get the control's tab offset collection.
        Dim offsets As ListBox.IntegerCollection = lstCars.CustomTabOffsets

        ' Define the tabs.
        For Each tab As Integer In tabs
            offsets.Add(tab)
        Next tab
    End Sub


    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer()) As IntPtr
    End Function

    Private Const EM_SETTABSTOPS As Integer = &HCB

    ' Set tab stops inside a TextBox.
    Private Sub SetTextBoxTabs(ByVal txt As TextBox, ByVal tabs As Integer())
        SendMessage(txt.Handle, EM_SETTABSTOPS, tabs.Length, tabs)
    End Sub
End Class
 
Laatst bewerkt:
hallo old hippy
dat ziet er erg veelbelovend uit.doch veel code voor iets simpel ??????
misschien kan het eenvoudiger
"Anders moet je karakters gaan tellen."
iets in deze richting????
gr jan
 
Hi jan68
Helaas is dat ook niet simpel de code is natuurlijk wel voor drie mogelijkheden.
Je kunt er een van gebruiken.

karakters tellen zoiets
Als je weet hoveel het er zijn kanje dat van je max aftrekken

Code:
Dim hoeveel_Off As Integer = 0
Dim char_Off As List(Of Char)

char_Off = OffTextBox.Text.ToList()


For Each o As Char In char_Off
            If o = o Then
                hoeveel_Off += 1
            End If
        Next

TB_Pos.Text = String.Format(hoeveel_Off.ToString())

Hopelijk helpt dit je verder.

Groet Old Hippy
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan