Visual Basic befehl

Hanfyy

Commander
🎅Rätsel-Elite ’12
Registriert
Feb. 2010
Beiträge
2.316
Hi,
ich muss für eine Uniaufgabe ne selbst nen prog schreiben, das von hex auf dez zahlen umrechnet.

Dazu suche ich einen befehl, der von einer eingegebenen hex zahl (zB 1a2b) erst die 1. stelle von rechts ausliest ( also b ) um dann im nächsten schritt zu sagen für b an der 1. stelle +11 zu meinem Endergebnis.


später dann für 2 an der 2. stelle + 2*16
für a an der 3. stelle + 10*16²
usw.


kennt jmd so einen befehl? also nur um die einzelnen stellen auszulesen?

hab nur InStrRev gefunden aber ich schaff es nicht diesen richtig zu verwenden...


Danke Lg
 
Mid() wäre hier das richtige für dich.
 
right hatt ich auch schon ging auch für die 1. stelle aber für die nächste dnan nichtmehr

If right(wert_1,1) = a then
DezWert = DezWert + 10
end if

If right(wert_1,2) = a then
DezWert = DezWert + 10*16
end if
 
Mit left und right kannst du keine einzelnen Stellen abgreifen.

Mit instr und instrrev kannst du prüfen ob eine Bedingung war ist, aber auch keinen einzelnen Character aus einem String abgreifen.

Nimm mid dazu.
 
wie muss ich die mid dann einbauen??
also wie muss der befehl aussehen wenn ich aus wert_1 = 1a2b die rechte stelle will?


EDIT: DANKE an alle! habs geschafft ;)
 
Zuletzt bearbeitet:
Bin noch nicht wirklcih erfahren also ohne den ganzen schnickschnack
und vereinfachen werd ich erst wenns dann mal alles tut^^

Dim wert_1 As String
Dim wert_2 As Integer

Dim var_1 As String
Dim var_2 As String

Dim DezWert As Double


var_1 = Mid(wert_1, 4, 1)

If var_1 = "0" Then
DezWert = DezWert + 0
End If
Ergänzung ()

Endlösung:

Sub Aufgabe ()


Dim str_HexWert As String

Dim str_1 As String

Dim dbl_DezWert As Double



str_HexWert = InputBox("Hexadezimalzahlen können 0...9 sowie a...f enthalten", "4-stellige Hexadezimalzahl eingebn")

If vbCancel = True Then
Exit Sub
End If



dbl_DezWert = 0

k = 0



Do Until k > 3

str_1 = Mid(str_HexWert, 4 - k, 1)

If str_1 = "0" Then
dbl_DezWert = dbl_DezWert + 0 * 16 ^ k
ElseIf str_1 = "1" Then
dbl_DezWert = dbl_DezWert + 0.1 * 16 ^ k
ElseIf str_1 = "2" Then
dbl_DezWert = dbl_DezWert + 0.2 * 16 ^ k
ElseIf str_1 = "3" Then
dbl_DezWert = dbl_DezWert + 0.3 * 16 ^ k
ElseIf str_1 = "4" Then
dbl_DezWert = dbl_DezWert + 0.4 * 16 ^ k
ElseIf str_1 = "5" Then
dbl_DezWert = dbl_DezWert + 0.5 * 16 ^ k
ElseIf str_1 = "6" Then
dbl_DezWert = dbl_DezWert + 0.6 * 16 ^ k
ElseIf str_1 = "7" Then
dbl_DezWert = dbl_DezWert + 0.7 * 16 ^ k
ElseIf str_1 = "8" Then
dbl_DezWert = dbl_DezWert + 0.8 * 16 ^ k
ElseIf str_1 = "9" Then
dbl_DezWert = dbl_DezWert + 0.9 * 16 ^ k
ElseIf str_1 = "a" Then
dbl_DezWert = dbl_DezWert + 1 * 16 ^ k
ElseIf str_1 = "b" Then
dbl_DezWert = dbl_DezWert + 1.1 * 16 ^ k
ElseIf str_1 = "c" Then
dbl_DezWert = dbl_DezWert + 1.2 * 16 ^ k
ElseIf str_1 = "d" Then
dbl_DezWert = dbl_DezWert + 1.3 * 16 ^ k
ElseIf str_1 = "e" Then
dbl_DezWert = dbl_DezWert + 1.4 * 16 ^ k
ElseIf str_1 = "f" Then
dbl_DezWert = dbl_DezWert + 1.5 * 16 ^ k
End If

k = k + 1
Loop


MsgBox (dbl_DezWert * 10)


End Sub
 
Zuletzt bearbeitet:
Naja, normalerweise nimmt man für Umrechnungen dieser Art den Modulo-Operator...
Und statt nem Do-Loop würd ich hier direkt ne For-Schleife nehmen...
 
wir hatten grad nen paa std VB und ich hab fast keine ahnung davon und bin ehrlichgesagt froh des soweit hinbekommen zu haben.
und nach dem semester hab ich auch kein informatik mehr ;)
 
Zurück
Oben