Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
Santa
Newbie
Newbie

Anmeldedatum: 06.09.2010
Beiträge: 4

Uebergebener String lässt sich nicht verarbeiten
Verfasst am: 06.09.2010, 15:37

Moin,

ich habe ein Problem mit einem in eine Funktion uebergebenen String. Die aufgerufene Funktion ist Teil einer VB6-DLL und wird aus C++ aufgerufen. Die VB6-Funktion selbst greift wiederum auf eine C-Libary zu.

Der String hat die Form: "Doublezahl$Doublezahl$Doublezahl$Doublezahl$Doublezahl$Doublezahl". Dieser wird an den Dollar zerlegt, die Doublewerte ausgelesen und getrennt in einem vorgegebenen Format tBuffer gespeichert. Dieses tBuffer wird dann an die C-Lib übergeben.
Wenn ich das mit einem derartigen String mache, den ich in der Funktion erstelle z.B. list, funktioniert es einwandfrei.
Versuche ich den uebergebenen String, hier SPSinput, zu nutzen, wird das tBuffer nicht befuellt. Der String ist aber korrekt uebergeben worden wie ich mit einer MsgBox sehen kann.
Auch ein Zwischenspeichern von SPSinput in eine lokale Variable hilft nicht. Wieso laesst sich der uebergebene String nicht vernuenftig bearbeiten?

Vielen Dank für die Hilfe

Santa


Hidden: 
Code:

Public Function ProfibusSetData_String(SPSinput As String) As Integer

  Dim iRet As Integer
  Dim state As Byte
  Dim buffer As tBuffer
  Dim data_len As Byte
   
  data_len = PB_INPUT_SIZE

  Dim counter As Integer
  Dim valuelist() As String
  Dim list As String

  'MsgBox SPSinput
  'list = Str$(SPSinput)
  'list = "1$1$0$1.19495$0$0"
  'list = Replace(list, ".", ",")
 
  valuelist = Split(SPSinput, "$", , vbTextCompare) 'Einzelne Doublewerte als String in Array ablegen
 
  For counter = 0 To 5 Step 1
    buffer.b(counter) = CInt(valuelist(counter))
  Next counter
 
  iRet = profi_set_dps_input_data(buffer, data_len, state)
 
  If iRet = E_OK Then

  Else
  MsgBox "Error sending input data to card " + Str$(iRet) + Chr$(13)
  Exit Function
  End If
   
  ProfibusSetData_String = iRet
 
End Function
 
Santa
Newbie
Newbie

Anmeldedatum: 06.09.2010
Beiträge: 4


Verfasst am: 20.09.2010, 11:00

Als Ergänzung:

Wenn ich mir den uebergebenen String ausgeben lasse, funktioniert es. Sobald ich aber den String SPSinput "verarbeite", z.B. in eine andere Variable speichere, oder mit replace oder split verwende, scheint sich das Programm unbemerkt auszuhängen. Nachfolgende Befehle wie einfach MsgBox werden nicht mehr ausgefuehrt, eine Fehlermeldung oder ähnliches erhalte ich aber auch nicht. Vielliecht kann mir dabei jemand weiterhelfen.

Danke im vorraus

Santa
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: string, übergeben, function, funktion, dollar

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Problem mit always on top funktion 1107 30.10.2009, 12:26
Keine neuen Beiträge IntStr()funktion 1309 11.10.2007, 09:49
Keine neuen Beiträge TopMost Funktion unter DirectX 1022 27.07.2007, 11:48
Keine neuen Beiträge Wie Funktion nutzen ? 1214 29.06.2007, 21:59
Keine neuen Beiträge update funktion einbauen 1455 29.01.2007, 00:11
 


[ Time: 0.1342s ][ Queries: 83 (0.0701s) ][ GZIP on - Debug on ]