hab es einfach nur mal zum test in einer MsgBox ausgegeben.
hab es einfach nur mal zum test in einer MsgBox ausgegeben.
poste mal den genauen Code
Also so funktioniert es:
Private Sub Form_Load()
Dim ServerIP As String
ServerIP = "localhost"
Winsock1.Connect ServerIP, 9300
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Eingangstext As String
Winsock1.GetData Eingangstext 'Die Variable "Eingangstext" enthält jetzt das Telegramm
Dim Eingang() As String
Eingang() = Split(Eingangstext, Chr$(9))
'Die Variablen "Eingang(0)", "Eingang(1), "Eingang (...)" enthalten jetzt die einzelnen Felder
MsgBox Eingang(0)
End Sub
Ich bekomme z.B. bei einem Status ein Fenster geöfnet mit dem Inhalt "FMSTlg"
--------------------------------------------------------------------------------------
So funktioniert es nicht:
Private Sub Form_Load()
Dim ServerIP As String
ServerIP = "localhost"
Winsock1.Connect ServerIP, 9300
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Eingangstext As String
Winsock1.GetData Eingangstext 'Die Variable "Eingangstext" enthält jetzt das Telegramm
Dim Eingang() As String
Eingang() = Split(Eingangstext, Chr$(9))
'Die Variablen "Eingang(0)", "Eingang(1), "Eingang (...)" enthalten jetzt die einzelnen Felder
MsgBox Eingang(1)
End Sub
Also mit "Eingang(1) bekomme ich schon eine Fehlermeldung wenn ich das "Programm" starte.
Eigentlich könnte es doch nur ein Fehler beim Spliten sein oder???
Bin was sowas angeht auch nicht so der Experte... bin halt nur son bischen am üben.
Mein Ziel ist es ein kleines Programm zu schreiben das mir die Alarmierungen(5-Ton), Status und die FMS Leitstellentexte in eine MySql Datenbank schreibt.
Also im prinzip fast so etwas wie das Programm das man hier in diesem Thread schon runterladen kann.
Mfg
Hmm. Warum nimmst du denn das Prog nicht was es hier im Thema als Download gibt? Es funktioniert! Nur halt noch nicht mit 5 Ton Alarmierung (kommt sicher noch)
Aber trotz alledem müsste es klappen. Ein Fehler im Split ist es nicht, da ich genau so das Telegramm aufschlüssel.
Was zeigt der denn an wenn der Debugger läuft und du mit dem Cursor über Eingang(1) gehst?
Hallo,
Du hast geschrieben, dass Du Winsock über "Projekt>>Komponenten eingefügt hast.
Das läst vermuten, dass Du nicht mit Access sondern mit VB 6 arbeitest.
Dann musst Du bei
Eingang() = Split(Eingangstext, Chr$(9))
das Klammerpaar hinter Eingang weglassen, also
Eingang = Split(Eingangstext, Chr$(9))
Bei
Dim Eingang() As String
muss es aber stehen bleiben!
Gruss Ralf
Hallo,
Ja ich benutze VisualBasic 6.
Leider funktioniert es auch nicht wenn ich das Klammernpaar wegnehme.
Es könnte eig auch wie gesagt nur daran liegen also beim Spliten muss da irgendwas schief gehen...
Wenn ich z.B die Variable "Eingangstext" ausgebe, bekomme ich ja gleich als ersten von FMS32 den Text:
#Verbindung zu FMS32-Server erfolgreich hergestellt!
#Verbunden mit Anschluss: 1
AN1
Mit der Variable "Eingang(0)" bekomme ich jetzt den Inhalt "#Verbindung", mit der Eingang(1) bekomme ich "zu", usw...
Wenn jetzt allerdings ein richtiger Status kommt, bekomme ich die Fehlermeldung:
Laufzeitfehler 9:
Index liegt außerhalb des gültigen Bereich.
Woran könnte es noch liegen?
Gruß Christian
Hallo Christian,
Eingang = Split(Eingangstext, Chr$(9)) splitted bei jedem Vorkommen des TAB-Zeichens
CHR$(9).
In
#Verbindung zu FMS32-Server erfolgreich hergestellt!
#Verbunden mit Anschluss: 1
AN1
kommt TAB nicht vor, also steht der gesamte Text in Eingang(0). Wenn Du versuchst,
auf Eingang(1) zuzugreifen, kommt die Meldung "Index außerhalb des gültigen Bereichs",
weil Eingang (1) ja gar nicht angelegt wurde.
------
Mit der Variable "Eingang(0)" bekomme ich jetzt den Inhalt "#Verbindung", mit der Eingang(1) bekomme ich "zu", usw...
------
Das kann eigentlich nicht angehen, es sei den, Du hast Chr$(9) in CHR$(32) geändert.
Dann funktionieren aber die richtigen Meldungen nicht mehr.
Lösung:
Chr$(9) muss bleiben.
Nach
Eingangstext=...............
folgendes einfügen:
If Left(Eingangstext, 1) = "#" Then
Exit Sub
End If
Damit wird die Server-Meldung übersprungen und es geht mit der
ersten richtigen Meldung los.
Nun sollte es klappen.
Gru? Ralf
Hallo! Ich arbeite (schon länger) mit folgendem Code (etwas abgeändert) in VB6...erfolgreich. Einfach mal kopieren und schauen ob`s klappt ;)
:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim strData As String
Winsock1.GetData strData
FMSEingang strData
End Sub
Public Sub FMSEingang(ByVal strData As String)
Dim strMultiString() As String
Dim strSimple() As String
Dim I As Integer
If strData <> "" Then
strMultiString = Split(strData, Chr$(13) & Chr$(10)) 'Warum? Falls 2 Telegramme auf einmal gesendet werden, wird keins "verschluckt"!
For I = 0 To UBound(strMultiString)
If strMultiString(I) <> "" Then
strSimple = Split(strMultiString(I), Chr$(9))
Select Case strSimple(0)
Case "FMSTlg"
MsgBox strSimple(1) & "_" & strSimple(6) & "_" & strSimple(8) 'Hier würde FMS-Kennung_Status_Richtung stehen!
Case "POC"
MsgBox strSimple(1) 'Hier würde der RIC stehen!
Case "ZVEI"
MsgBox strSimple(1) 'Hier würde die 5-Tonfolge stehen
End Select
End If
Next I
End If
End Sub
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)