schnarchzapfen 10 Geschrieben 30. Mai 2006 Melden Geschrieben 30. Mai 2006 Weis jemand wie man mit VBS einen funktionierenden Rückgabewert einer Funktion hin bekommt? Dazu folgendes Beispiel: Sub holeNummer(Ordner, Dateiname) dim f1,fc1,fl1,hilfNr,nummer set f1 = wshfilesystem.GetFolder(Ordner) set fc1 = f1.files nummer = "000" for each fl1 in fc1 if fl1.name <> "" then if lcase(Left(fl1.name,Len(fl1.name)-4)) = lcase(Left(Dateiname,Len(Dateiname)-4)) then hilfNr = Right(fl1.name,3) end if if nummer < hilfNr then nummer = hilfNr end if end if next if nummer < 10 then if nummer = 9 then nummer = nummer + 1 nummer = "0" & nummer else nummer = nummer + 1 nummer = "00" & nummer end if end if if nummer >= 10 and nummer < 100 then if nummer = 99 then nummer = nummer + 1 else nummer = nummer + 1 nummer = "0" & nummer end if end if if nummer >= 100 then nummer = nummer + 1 end if holeNummer = nummer end sub Die abgebildete Funktion ist dazu gedacht das als Parameter übergebene Verzeichnis nach dem übergebenen Dateinamen zu durchsuchen und die nächste fortlaufende Nummer zu bestimmen also wenn z.B. die folgenden Dateien bereits im angegebenen Verzeichnis existieren: Datei.001 Datei.002 Datei.003 . dann wäre die nächste Nummer demnach: 004 Und diese neue Nummer soll dann als Rückgabewert zurückgegeben werden. Wenn ich jetzt jedoch im Hauptprogramm die Funktion z.B. mittels neuNummer = holeNummer("C:\Test","test.bak") aufrufe stoppt das Programm genau an dieser Stelle, also dort wo die Funktion im Hauptprogramm aufgerufen wird, und dann erhalte ich die folgende Fehlermeldung: Quelle: Laufzeitfehler in Microsoft VBScript; Fehler: Typen unverträglich: 'holeNummer'; Code: 800A000D Hat jemand eine Idee woran das eventuell liegen könnte?
Demon72 10 Geschrieben 30. Mai 2006 Melden Geschrieben 30. Mai 2006 ganz simpel wäre: 1.) im "Hauptprogramm" die Variable deklarieren (dim neuNummer) 2.) in der Funktion den String in die Variable schreiben (neuNummer = nummer) (statt holeNummer = nummer) 3.) Funktion aufrufen (holeNummer("C:\Test","test.bak") 4.) im "Hauptprogramm" steht in der Variable neuNummer nun auch der "Rückgabewert" der Funktion
Sigma 10 Geschrieben 30. Mai 2006 Melden Geschrieben 30. Mai 2006 Hi, so wie Du den Code bzgl. des Rückgabwertes geschrieben hast, brauchst Du eine Function, keine Sub. Tschau, Sigma
MrReview 10 Geschrieben 31. Mai 2006 Melden Geschrieben 31. Mai 2006 Exakt - Subs können keinen Rückgabewert liefern!!!!!! Einfach Function holeNummer(Ordner, Dateiname) As Integer (wenn es ein Int-Wert ist, der zurückgegeben wird, schreiben und es sollte klappen! Gruß Daniel
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden