Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 4 von 4

Thema: Problem mit dc.getS16at(i) bei LibNoDave

  1. #1
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich hab ein Problem mit dem Lesen von Daten aus einem Datenbaustein mit dc.getS16at(i). In den DB1 habe ich zu Testzwecken 100 Integerwerte, beginnend bei DBW0 reingeschrieben. Ich habe kontrolliert, dass die Werte tasächlich drinstehen. Nun will ich mit dc.getS16at(i) die Werte herauslesen. Das klappt auch, bis auf die beiden ersten Werte?!

    Code:
    Private Sub btnWerteLesen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWerteLesen.Click
    Dim Zeit As Integer
    If livebit Then
    Zeit = GetTickCount
    res = dc.readBytes(libnodave.daveDB, 1, 0, 200, buffy)
    End If
    txtLesen.Text = GetTickCount - Zeit
    End Sub
     
    Private Sub btnExcelSchreiben_Click(ByVal sender As System.Object, 
    ByVal e As System.EventArgs) Handles btnExcelSchreiben.Click
    Dim i As Integer, Zeit As Integer
    Exc.Worksheets(1).Cells(1, 1).value = "Nummer"
    Exc.Worksheets(1).Cells(1, 2).value = "Wert"
    Zeit = GetTickCount
    For i = 0 To 99
    Exc.Worksheets(1).Cells(i + 2, 1).value = i + 1
    exc.Worksheets(1).Cells(i + 2, 2).value = dc.getS16At(i * 2)
    Next
    txtExcel.Text = GetTickCount - Zeit
    Exc = Nothing
    End Sub
    buffy ist formweit gültig deklariert mit "Dim buffy(199) as Byte".
    Ich schreibe die 100 Integerwerte in eine Excel-Tabelle. Dabei stelle ich fest, dass die beiden ersten Werte nicht stimmen.
    Ich habe es alternativ dazu mal mit davegetS16from(buffy(i*2)) versucht. Damit klappt es.

    Gruß
    Earny
    Zitieren Zitieren Problem mit dc.getS16at(i) bei LibNoDave  

  2. #2
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    "Dim buffy(199) as Byte" kommt mir eins zu wenig vor,
    allerdings muss das nichts heißen...

  3. #3
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Hallo argv,
    die Speichergröße reicht. Wenn man bei der Deklaration angibt

    Dim buffy(199) of Byte,

    so ist ein Array mit 200 Elementen deklariert, weil mit Array-Index 0 losgezählt wird. Es gibt möglicherweise bei VB2005 die Anweisung

    Option Base 1

    Dann zählen alle Arrays ab dem Array-Index 1. Die "Option Base 1" ist aber nicht aktiviert.

    Gruß
    Earny

  4. #4
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    wenn man die Zeile:

    exc.Worksheets(1).Cells(i + 2, 2).value = dc.getS16At(i * 2)

    ersetzt durch

    exc.Worksheets(1).Cells(i + 2, 2).value = dc.getS16At(buffy(i * 2))


    funktioniert es.

    Ich muss wohl mal die Beschreibung zu LibNoDave etwas genauer nachlesen.

    Gruß
    Earny

Ähnliche Themen

  1. libnodave Reconnect Problem
    Von fLaVa im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 31.05.2011, 08:48
  2. Antworten: 0
    Letzter Beitrag: 09.09.2010, 00:27
  3. Problem mit libnodave
    Von BorisDieKlinge80 im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 16.05.2008, 06:24
  4. Problem mit libnodave und Inat OPC
    Von Frank im Forum Hochsprachen - OPC
    Antworten: 6
    Letzter Beitrag: 14.11.2006, 17:26
  5. Problem mit Libnodave unter VB
    Von Buster im Forum Hochsprachen - OPC
    Antworten: 6
    Letzter Beitrag: 25.04.2006, 13:28

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •