Ein herzliches Hallo,
den Profis in VB2005/2008 hier in diesem Forum!
Kurz: Ich bin Dietmar Hohl, arbeite als Konstrukteur im Maschinenbau
in Linz/Österreich und wenn die karge Privatzeit es zulässt arbeite
ich an meinem Hobby - am Magnetmotor.
Nach zahlreichen Grundlagenversuchen die u.a. auf meiner HP unter
www.magnetmotor.at veröffentlicht wurden reifte im Februar d.J. die
Erkenntnis sich tiefer mit Grundlagenforschung Betreff Magnetfelder
zu beschäftigen. Wie manche wissen bzw. sich denken können ist das
ein steiniger Weg.
Ohne sauber konstruierte Prüfaufbauten mit denen man "reproduzierbar"
zu möglich, wichtigen Schlüsselerkenntnissen gelangen könnte führt
m.E. kein Weg vorbei.
Im aktuellen Projektaufbau wird aus diesem Grund ein über den USB-Port
gesteuerter CNC-Motorcontroller eingesetzt der über einen Stepper-Motor
eine Linearachse bewegt.
Auf der Linearachse selbst ist angeschossen an einem weiteren USB-Port
ein Zug-/Druckmesser aufgebaut der die jeweils ermittelten Zug-/Druck
Werte liefern soll.
Ziel der ersten Etappe des Projekts ist es ein Zug-/Druckdiagramm mit
aussagefähigen, gesicherten IST-Daten zu erhalten.
Um den von mir eingesetzten CNC-Motorcontroller aber jedoch korrekt
ansteuern zu können werden unbedingt Funktionen wie MKL$ und CVL
benötigt die in älteren DOS-basierenden Basic-Compilern vorhanden
und portiert auf Visual Basic-Versionen VB6.0 unter XP funzen.
Mein Problem ist diese MKL/CVL-Funktionen von VB6.0 auf
Visual-Basic 2008 (VB2008) zu portierten.
Wer kann mir helfen ? Danke !
Dietmar Hohl, Linz/Österreich ;-) d.hohl@magnetmotor.at
--------------------------------------------------------------------
Hier im Anhang zur Begutachtung die in VB6 funktionierenden MKL/CVL
Funktionen:
' ---------------------( Visual Basic 6.0 )------------------
' MKL, CVL Funktionen
' --------------------------------------------------------------
Option Explicit
Private Declare Sub MoveMemory Lib "Kernel32" Alias "RtlMoveMemory" _
(ByVal Dest As Any, ByVal Source As Any, ByVal Bytes As Long)
Private Declare Sub MoveString Lib "Kernel32" Alias "RtlMoveMemory" _
(Dest As Any, ByVal Source As String, ByVal Bytes As Long)
'-----------------( START )-----------------
Private Sub Command1_Click()
Dim in0 As String
Dim in1 As Long
Dim erg1 As String
Dim erg2 As Long
in1 = Val(txtArg1.Text)
in0 = MKL(in1)
erg1 = in0
Label2 = erg1
erg2 = CVL(erg1)
Label3 = erg2
' ....
End Sub
' -------------( MKL / CVL )----------------
Public Function MKL(ByVal N&) As String
MKL = Space$(4)
Call MoveMemory(ByVal MKL, VarPtr(N&), 4)
End Function
Public Function CVL(ByVal S$) As Long
If Len(S$) < 4 Then
MsgBox ("CVL Error - String too Short")
Exit Function
End If
Call MoveString(CVL, S$, 4)
End Function
' -----------------------------------------
Was mögen denn MKL und CVL anstellen? Bist Du Dir sicher, daß Du deren Verhalten mit RtlMoveMemory nachbilden willst? Sieh Dir mal das hier an: http://www.aboutvb.de/khw/artikel/khwmkicvi.htm
Hallo Rufus, meinen Dank an Dich für den Verweis. Super! Diese MKL/CVL-Funktionen funzen in VB6 sauber. ;-) Beim Portieren nach 2008 steigt aber der Compiler u.a. bei den Funktionen LSet aus. Die Funktion LSet in VB2008 erlaubt kein LSet varname1 = varname2 wie in VB6. VB2008 verhält sich restrektiv. Im Dateianhang sende ich Dir zur Begutachtung den VB6 code der nicht nach VB2008 will. Wer hat eine funktionierende Lösung zu diesem Problem? Meinen Dank im voraus! Dietmar Hohl, Linz/Österreich (www.magentmotor.at)
In VB.Net ist LSet eine Stringverarbeitungsfunktion mit zwei Argumenten:
1 | Dim TestString As String = "Left" |
2 | Dim lString As String |
3 | |
4 | ' Returns "Left " |
5 | lString = LSet(TestString, 10) |
6 | |
7 | ' Returns "Le" |
8 | lString = LSet(TestString, 2) |
9 | |
10 | ' Returns "Left" |
11 | lString = LSet(TestString, 4) |
Vielleicht hilft Dir ja das hier weiter: http://msdn.microsoft.com/de-de/library/cc485158(VS.71).aspx Das beschreibt Probleme bei der Portierung von LSet aus VB6 nach VB.Net.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.