übergabe parameter
lima-city → Forum → Programmiersprachen → Basic
auswahl
auswahlfenster
auto
befehl
beitrag
definierte auswahlfenster
doubeln
fehler
folgendes schreiben
mglichkeit
option
parameter
passender eintrag
rang
rote schrift
schreibe
stat
test
treffen
bergabe
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Kannst du dein Problem nochmal anders formulieren, ich versteh die Frage nicht ganz...
du kannst doch einfach so schreiben:
Sub Test(ByVal Param As Integer)
'Code...
End Sub
Nun kannst du Zahlen einsetzen... -
ne ich mein wenn ich z.B. hab
Public Sub start_auto()
Call auto(False,10)
End sub
Public Sub auto(ByVal AutoRange As Boolean, ByVal Range As Double)
....
im obenangeführten code kann man in der public sub start_auto im call beim ersten zwischen False und True wählen. Da erscheinen zwei möglichkeiten.
Gibt es einen befehl, bei dem ich diese Auswahlmöglichkeiten selbst treffen kann?
Das z.B. beim 2. die Auswahl hast zwischen 20 und 30. -
Ja das geht:
Public Enum States As Byte Number20 = 20 Number30 = 30 Number40 = 40 End Enum Private Sub Test(ByVal iState As States) If iState = States.Number20 Then 'Code... ElseIf iState = States.Number30 Then 'Code... ElseIf iState = States.Number40 Then 'Code... End If End Sub Private Sub Caller() Test(States.Number30) End Sub
(Code ist für .NET geschrieben)
Beitrag geändert: 18.8.2007 12:37:54 von cbhp -
bei mir funkt das nicht!
kann das sein weil ich 6.0 progge?
brauch ich da einen anderen code als bei .NET?
Beitrag geändert: 20.8.2007 12:23:38 von zordy -
Hättest du vielleicht mal in der VB Hilfe nachgeschaut, dann wüsstest du, dass es die "Enum"-Anweisung auch in VB 6 gibt...
So sieht es in VB 6 aus:
Public Enum States
Number20 = 20
Number30 = 30
Number40 = 40
End Enum
Private Sub Test(ByVal iState As States)
If iState = States.Number20 Then
'Code...
ElseIf iState = States.Number30 Then
'Code...
ElseIf iState = States.Number40 Then
'Code...
End If
End Sub
Private Sub Command1_Click()
Call Test(States.Number30)
End Sub -
soweit so gut...
allerdings habe ich das problem, dass wenn ich call test( schreibe kein auswahlfenster erscheint(soetwa wie bei boolean)
ist da noch immer was falsch oder hab ich was falsch gemacht? -
Was soll denn da für ein Auswahlfenster kommen?
Du brauchst doch nur folgendes schreiben:
Call Test(States.Number40) -
ich versuchs nochmal zu erklären
zordy schrieb:
ne ich mein wenn ich z.B. hab
Public Sub start_auto()
Call auto(False,10)
End sub
Public Sub auto(ByVal AutoRange As Boolean, ByVal Range As Double)
....
im obenangeführten code kann man in der public sub start_auto im call beim ersten zwischen False und True wählen. Da erscheinen zwei möglichkeiten.
Gibt es einen befehl, bei dem ich diese Auswahlmöglichkeiten selbst treffen kann?
Das z.B. beim 2. die Auswahl hast zwischen 20 und 30.
wie ich in dem post schon geschrieben habe...
ich kann den public sub aufgrund der parameter nicht starten daher schreibe ich
Public Sub start_auto()
Call auto(False,10)
End sub
die den auto sub aufruft. Wenn ich call auto(
schreibe dann kann ich die parameter festlegen
wenn im public sub auto z.B. autorange as boolean gestanden ist
dann würde jetzt ein auswahlfenster erscheinen das mir True und False anzeigt.
Hier sollte nun das eigens definierte auswahlfenster auch bei meiner funktion erscheinen. Wie mach ich das? -
Meinst du vielleicht das automatische Auflisten von möglichen Optionen?
Das sieht dann so aus:
http://cbhp.lima-city.de/lima-city/VB6_Enum_1.png
http://cbhp.lima-city.de/lima-city/VB6_Enum_2.png
Falls das bei dir nicht so eingezeigt wird, musst du es unter Extras / Optionen aktivieren:
http://cbhp.lima-city.de/lima-city/VB6_Optionen.png
(Menüpunkt "Mitglieder / Elemente automatisch auflisten") -
danke soweit funktionierts erstmal...
Nun hab ich aber folgendes Problem:
Ich möchte gerne in meinen übergabe Parametern folgendes schreiben: "AC"
VB scheint irgendetwas gegen "" zu haben...
wenn ich das Range20 = 20
durch "AC" = 1 ersetze dann bekomme ich sofort die rote schrift!
gibt's da eine möglichkeit -
Du kannst es doch auch ohne Anführungszeichen schreiben:
Enum Optionen
AC = 1
AD = 2
AE = 3
End Enum
Oder wolltest du statt den Zahlen einen Text übergeben?
Das ist erst ab VB 7 möglich, darunter noch nicht. -
ich wollte aber einen string übergeben...
-
Das ist, wie schon gesagt, in VB 6 noch nicht möglich. Du kannst dir dazu aber selbst Hilfsprozeduren schreiben.
Beispiel:
Option Explicit Private Enum Ranges AC = 1 AD = 2 AE = 3 End Enum Private Function RangeToString(ByVal MyRange As Ranges) As String Select Case MyRange Case Ranges.AC RangeToString = "AC" Case Ranges.AD RangeToString = "AD" Case Ranges.AE RangeToString = "AE" Case Else MsgBox "Fehler: Es wurde kein passender Eintrag gefunden." End Select End Function Private Function StringToRange(ByVal MyString As String) As Ranges Select Case MyString Case "AC" StringToRange = Ranges.AC Case "AD" StringToRange = Ranges.AD Case "AE" StringToRange = Ranges.AE Case Else MsgBox "Fehler: Es wurde kein passender Eintrag gefunden." End Select End Function Private Sub Auto(ByVal AutoRange As Boolean, ByVal Range As Ranges) Dim strRange As String strRange = RangeToString(Range) MsgBox "Vorher: " & Range & " - Nachher: " & strRange 'Code... End Sub Public Sub Start_Auto() Call Auto(False, Ranges.AC) 'oder: Call Auto(False, StringToRange("AC")) End Sub
Startprozedur ist die Start_Auto() -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage