schnarchzapfen 10 Geschrieben 30. Mai 2006 Melden Teilen 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? Zitieren Link zu diesem Kommentar
Demon72 10 Geschrieben 30. Mai 2006 Melden Teilen 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 Zitieren Link zu diesem Kommentar
Sigma 10 Geschrieben 30. Mai 2006 Melden Teilen Geschrieben 30. Mai 2006 Hi, so wie Du den Code bzgl. des Rückgabwertes geschrieben hast, brauchst Du eine Function, keine Sub. Tschau, Sigma Zitieren Link zu diesem Kommentar
MrReview 10 Geschrieben 31. Mai 2006 Melden Teilen 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.