array in functie procedure om lijn uit tekstbestand te lezen

Status
Niet open voor verdere reacties.

erton

Gebruiker
Lid geworden
6 mrt 2009
Berichten
38
hallo,

ik zou graag mijn code in een functie procedure steken zodat ik ze kan herbruiken. Het probleem is dat mijn procedure geen waarde returnt.
Heeft iemand een suggestie?

hartelijk dank

Code:
Public Function Inlezen(ByVal lijnnummer As Integer) As String
        Dim locatieBestand As String = System.Windows.Forms.Application.StartupPath & "\vermogen.txt"
        Dim TextReader As System.IO.TextReader = New System.IO.StreamReader(locatieBestand) 'Open je textfile in een TextReader

        Dim lijn As Array
        Dim AantalLijnen As Integer
        Dim waarde As Decimal
        Dim f As Integer = FreeFile()

        Do 'While TextReader.Peek <> -1 'Kijk of textreader geen fout returnt
            lijn(AantalLijnen) = TextReader.ReadLine 'Stop de data van een textreader lijn in de Array
            AantalLijnen += 1 'AantalLijnen = AantalLijnen + 1
        Loop Until EOF(f)

        TextReader.Close() 'Sluit de textfile, want je Array is gevuld.

        Dim i As Integer
        waarde = String.Empty

        For i = 0 To lijn.GetUpperBound(0)
            waarde &= lijn(lijnnummer) & vbNewLine
        Next i

        'En print de Array-lijn in je Immediate Window.

        'Maak je Array Leeg als je er niets meer mee doet.
        Return (waarde)

    End Function

Code:
Inlezen(4)
 
Laatst bewerkt:
Heb er geen idee van wat er moet gebeuren ...

  1. Is het de bedoeling dat de functie die lijn returnt?
  2. Is het de bedoeling dat die functie niets returnt?
  3. Is het de bedoeling dat die functie het getal op die lijn returnt?
  4. Of ... ???

De onderstaande functie returnt de gevraagde lijn en heeft een dynamisch pad:

Code:
    Private Function Inlezen(ByVal lijnnummer As Integer, ByVal path As String) As String
        Dim sr As StreamReader = New StreamReader(path)

        Try
            For i As Integer = 1 To lijnnummer - 1
                sr.ReadLine()
            Next

            Dim correcteLijn As String = sr.ReadLine()

            sr.Close()

            Return correcteLijn
        Catch ex As Exception
            Return Nothing
        End Try        
    End Function

en je hebt nodig als import:

Code:
Imports System.IO
 
Laatst bewerkt:
het is de bedoeling dat ik bepaalde lijnen uit een tekstbestand ga lezen, en deze lijnen bevatten een getal. dat getal moet ik kunnen gebruiken.
ik zou dit graag met arrays willen verwezelijken.
 
Waarom met array's? Als je enkel het getal nodig hebt, is dit onnodige resourses verspilling.

Met mijn vorige methode aangepast naar een getal, krijg je:

Code:
Private Function Inlezen(ByVal lijnnummer As Integer, ByVal path As String) As Double
        Dim sr As StreamReader = New StreamReader(path)

        Try
            For i As Integer = 1 To lijnnummer - 1
                sr.ReadLine()
            Next

            Dim correcteLijn As String = sr.ReadLine()

            sr.Close()

            Return Convert.ToDouble(correcteLijn)
        Catch ex As Exception
            Return Nothing
        End Try        
    End Function
 
ja, ik weet het, maar het is een project voor school, en er MOESTEN nog arrays en een functie procedure in. Maar het is gelukt. dit is de uiteindelijke code:
Code:
Private Sub btnPKnaarKW_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPKnaarKW.Click
        Try
            Dim pkNKw, kwUit As String


            pkNKw = CStr(Val(txtInvoerPKNaarKW.Text))
            kwUit = pkNKw * Inlezen(0)
            txtUitvoerPKNaarKW.Text = kwUit.ToString
        Catch
            MessageBox.Show("Het bestand vermogen.txt is niet gevonden." & vbNewLine & "Plaats het bestand in de debugmap van het programma." & vbNewLine & "(../Vermogen/bin/debug)", "Bestand niet gevonden", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub


Public Function Inlezen(ByRef soort As String) As String
        Dim WaardesInArrays(1) As String

        Dim i As Integer

        WaardesInArrays(0) = "0,7457"   'PK naar KW
        WaardesInArrays(1) = "1,34102"  'KW naar PK

        For i = 0 To WaardesInArrays.GetUpperBound(0)
            Inlezen = CStr(WaardesInArrays(soort))
        Next
        Return Inlezen
    End Function

bedankt mannen!!!!!
 
Laatst bewerkt:
nog een kort vraagje ivm variabelen

is het mogelijk om een button zijn naam variabel te maken zodat je dan aan die variabele nog opties zoals _click kan geven?
zoals het er nu staat krijg ik de error dat de variabele knop_click niet gedeclareerd is.

Code:
Private Function Sneltoetsen(ByVal knop As String, ByVal invoer As String, ByVal uitvoer As String, ByVal e As System.Windows.Forms.KeyEventArgs) As String
        If e.KeyCode = Keys.Enter Then 'Als het bepaalde invoervak actief is, en er wordt op enter geduwd, wordt de bewerking uitgevoerd.
            Call [B]knop[/B]_Click(knop, e)
        ElseIf e.KeyCode = Keys.Escape Then 'Als er op escape wordt geduwd, sluit het venster af.
            Call btnSluiten_Click(btnSluiten, e)
        ElseIf e.KeyCode = Keys.Delete Then 'als er op delete geduwd wordt, wordt enkel de invoer en uitvoer van de betreffende omzetting leeggemaakt.
            invoer = String.Empty
            uitvoer = String.Empty
        End If
        Exit Function
    End Function
 
Laatst bewerkt:
Je verandert die lijn in het vet naar:

Code:
AddHandler knop.Click, AddressOf knop_click

en je zet de volgende functie erbij

Code:
Private Sub knop_click()
     'hier komt code
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan