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.