Javascript zu VB.NET Verfasst am: 06.07.2008, 02:18
Suche entweder nen Converter, oder jemandem der mir Hilft ca. 100 Zeilen Javascript zu übersetzen. Das Gröbste versteh ich ja, allerdings gibts da immer kleinere Dinge, wo ich nicht genau weiß, was die machen/was die bedeuten. ^^ _________________
Dann Poste doch mal den JS Code und makier die stellen, die du nicht weißt _________________
sollniss Überflieger
Anmeldedatum: 01.05.2008 Beiträge: 699
Verfasst am: 06.07.2008, 11:12
function getTillion(i)
{
var WW=new Array("M","B","Tr","Quadr","Quint","Sext","Sept","Okt","Non","Dez","Undez","Duodez","Tredez","Quadradez","Quintadez","Sextadez");
var WWW=new Array("","Un","Duo","Tre","Quattuor","Quin","Sex","Septen","Okto","Novem");
var WWWW=new Array("","Dez","Vigint","Trigint","Quadragint","Quinquagint","Sexagint","Septuagint","Oktogint","Nonagint");
var WWWWW=new Array("","Cent","Ducent","Trecent","Quadringent","Quingent","Sescent","Septingent","Octingent","Nongent");
var WWWWWW=new Array("","Millia","Domillia","Tremillia","Quattuormillia","Quinmillia","Sexmillia","Septenmillia","Oktomillia");
if(i==0)return "";
if(i<10)return WW[i-1];
var e=i%10,z=Math.floor(i/10)%10,h=Math.floor(i/100)%10,t=Math.floor(i/1000)%10,
zt=Math.floor(i/10000)%10,ht=Math.floor(i/100000)%10;
var a=WWW[e]+WWWW[z];if(i<100)return a.charAt(0).toUpperCase()+a.substr(1,a.length).toLowerCase();
a=WWWWW[h]+a;
if(i<4000)a=WWWWWW[t]+a;
else a=WWWWW[ht]+WWW[t]+WWWW[zt]+"millia"+a;
var aa=a.charAt(a.length-1);
if((aa!="t")&&(aa!="z"))a+="t";
return a.charAt(0).toUpperCase()+a.substr(1,a.length).toLowerCase();
}
function getZahlwort(x,tr)
{
x=String(x);
if(x=="pi")return getZahlwort("3,1415")+" ...";
if(x=="e")return getZahlwort("2,7182")+" ...";
if((x=="phi")||(x.indexOf("goldener Schnitt")==0))return getZahlwort("0,6180")+" ...";
if(x=="Phi")return getZahlwort("phi").replace(/null K/,"eins K");
if(x.indexOf("/")>-1)return getBruchZahlwort(x);
if(x=="0")return "null";
x=x.replace(/ /g,"").replace(/./g,",");
xx=x.split(",");
if(x.replace(/D/g,"")=="")return "";
var t="",v=(x.charAt(0)=="-")?"Minus ":"",i=0;
x=x.replace(/-/,"").replace(/ /g,"");
x=xx[0].replace(/D/g,"");
if(x.length>999999*6)return "diese Zahl ist unheimlich groß, die ist mir zu unheimlich";
var ZZ=new Array("null","eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun");
var ZZZ=new Array("zehn","elf","zwölf");
var ZZig=new Array("","zehn","zwanzig","dreißig","vierzig","fünfzig","sechzig","siebzig","achtzig","neunzig");
if((tr==null)||(tr==false)||(x<1000000))tr=(1==0);else tr=(1==1);
var trz=(tr)?" ":"";
if(x=="0,0")return"Nullkommanix";
while(x!="")
{ while(x.length<3)x="0"+x;
var y=x.substr(x.length-3,3);x=x.substr(0,x.length-3);
while(y.length<3)y="0"+y;//alert(y);
var y1=parseInt(y.charAt(0)),y2=parseInt(y.charAt(1)),y3=parseInt(y.charAt(2));
var tt=ZZ[y1]+"hundert";
if(y2==1){if(y3<3)tt+=ZZZ[y3];else tt+=ZZ[y3].replace(/hs/,"h").replace(/en/,"")+"zehn";} else tt+=ZZ[y3]+((y2>1)?"und"+ZZig[y2]:"");
tt=tt.replace(/nullhundert/,"").replace(/eins/g,"ein").replace(/nullund/g,"").replace(/null/g,"");
if((tt=="ein")&&(i==0))tt+="s";
if(i==0)t="_"+tt+t;
if((i==1)&&(tt!=""))t="_"+tt+"tausend"+t;
if((i>1)&&(tt=="ein")){t="_eine"+trz+getTillion(Math.floor(i/2))+(((i%2)==1)?"illiarde":"illion")+trz+t;} else if((i>1)&&(tt!=""))t="_"+tt+trz+getTillion(Math.floor(i/2))+(((i%2)==1)?"illiarden":"illionen")+trz+t;
i++;
} var T=t.split(" ");
//T[0]=T[0].replace(/_/,"");
for(i=0;i)T[i]=T[i].charAt(0).toUpperCase()+T[i].substring(1,T[i].length).toLowerCase();
t=T.join(trz).replace(/_/g,"");
if(!tr)t=t.toLowerCase();
if(xx.length>1)
{
if(t=="")t="null";
x=xx[1].replace(/D/g,"");
t+=" Komma";
for(i=0;i)t+=" "+ZZ[parseInt(x.charAt(i))];
}
return v+t;
}
function getZehnerpotenz(n)
{
n=parseInt(String(n));
if(isNaN(n))return "";if(n==0)return"eins";if(n==1)return"zehn";if(n==2)return"hundert";
if(n==3)return"tausend";if(n==4)return"zehntausend";if(n==5)return"hunderttausend";
if(n==-1)return"ein Zehntel";if(n==-2)return"ein Hundertstel";
if(n==-3)return"ein Tausendstel";if(n==-4)return"ein Zehntausendstel";
if(n==-5)return"ein Hunderttausendstel";
if(n==100)return"zehn Sexdezilliarden - oder 'ein Googol'";
var v=(n<0);n=Math.abs(n);var m=n%6,p=m%3,q=m>2,n=(n-m)/6;
var t=(new Array("eine","zehn","hundert"))[p]+" "+getTillion(n)+"illi"+(q?"arde":"on");
if(!v)return (t+((p>0)?"en":"")).replace(/ee/,"e");
t=t.replace(/eine/,"").replace(/ /,"").toLowerCase();
return "ein "+(t.charAt(0).toUpperCase()+t.substr(1,t.length-1)+"stel").replace(/estel/,"stel");
}
function getBruchZahlwort(x)
{
var xx=x.split("/");if(xx.length==1)return getZahlwort(x);
if((xx[1]=="")||(String(x).replace(/./,",").indexOf(",")>-1))return "";
var Z=getZahlwort(xx[0],true),N=getZahlwort(xx[1])+"tel";
if(N=="nulltel")return Z+" geteilt durch Null (nicht definiert!)";
if(Z=="eins")Z="ein";
N=N.replace(/ttel/,"tel").replace(/igtel/,"igstel").replace(/eine/,"");
N=N.replace(/dreitel/,"drittel").replace(/bentel/,"btel");
N=N.charAt(0).toUpperCase()+N.substr(1,N.length-1);
N=N.replace(/ionentel/,"ionstel").replace(/iardentel/,"iardstel");
N=N.replace(/iontel/,"ionstel").replace(/iardetel/,"iardstel");
if(N=="Zweitel")N=(Z=="ein")?"Halb":"Halbe";
if(N=="Einstel")N=(Z=="ein")?"Ganzes":"Ganze";
return Z+" "+N;
}
% hab ich einfach mal mit Mod, a+=b mit a = a + b übersetzt.
Marduk Überflieger
Anmeldedatum: 16.04.2008 Beiträge: 374
Verfasst am: 06.07.2008, 13:23
Converter wirds da keinen geben, da js meistens auf den HTML Code einer Seite zugreift und diesen direkt ändert. Da kann VB nichts mit anstellen.
Gibt zwar auch andere Bereiche, für die js eingesetzt wird, aber glaub kaum, dass dafür extra ein Converter gibt
Also her mit dem Source:D
sollniss Überflieger
Anmeldedatum: 01.05.2008 Beiträge: 699
Verfasst am: 06.07.2008, 17:26
Die getTillion Funktion hab ich so übersetzt: Visual Basic: [code]Private Function getTillion(ByVal i As Double) Dim WW() As String = {"M", "B", "Tr", "Quadr", "Quint", "Sext", "Sept", "Okt", "Non", "Dez", "Undez", "Duodez", "Tredez", "Quadradez", "Quintadez", "Sextadez"} Dim WWW() As String = {"", "Un", "Duo", "Tre", "Quattuor", "Quin", "Sex", "Septen", "Okto", "Novem"} Dim WWWW() As String = {"", "Dez", "Vigint", "Trigint", "Quadragint", "Quinquagint", "Sexagint", "Septuagint", "Oktogint", "Nonagint"} Dim WWWWW() As String = {"", "Cent", "Ducent", "Trecent", "Quadringent", "Quingent", "Sescent", "Septingent", "Octingent", "Nongent"} Dim WWWWWW() As String = {"", "Millia", "Domillia", "Tremillia", "Quattuormillia", "Quinmillia", "Sexmillia", "Septenmillia", "Oktomillia"}
If i = 0 Then Return "" : Exit Function ElseIf i < 10 Then Return WW(i - 1) : Exit Function End If
Dim e As String = i Mod 10 Dim z As String = Math.Floor(i / 10) Mod 10 Dim h As String = Math.Floor(i / 100) Mod 10 Dim t As String = Math.Floor(1 / 1000) Mod 10 Dim zt As String = Math.Floor(i / 10000) Mod 10 Dim ht As String = Math.Floor(i / 100000) Mod 10
Dim a As String = WWW(e) & WWWW(z) If i < 100 Then Return a : Exit Function
a = WWWWW(h) & a If i < 4000 Then a = WWWWWW(t) & a Else a = WWWWW(ht) & WWW(t) & WWWW(zt) & "millia" & a End If
Dim aa As String = a.Chars(a.Length - 1) If aa <> t And aa <> z Then a = a & "t" Return a.ToUpperInvariant(0) & a.Substring(1, a.Length).ToLower End Function[/code] _________________
The-God-of-all Tutorial Leser
Anmeldedatum: 01.05.2008 Beiträge: 35
Verfasst am: 08.07.2008, 15:17
Also ich kann dir bei einer Sache helfen die du wie ich gesehen habe mehrfach markiert hast: das: || bedeutet nichts anderes als OR in VB.
Was ist das überhaupt für ein Code? So wie der geschrieben ist soll der wohl nicht von Menschen verstanden werden weil das:
Wie du sicher bereits gemerkt hast werden in Javaskript (genau so wie in C, C++, Java...) zwischen einem Vergleich (immer ==) und einer Zuweisung unterschieden. tr=(1==0) weist also der Variable tr das Ergebnis vom Vergleich 1 == 0 zurück was immer false sein wird. In dem else Block wird tr immer auf true gesetzt. Das ganze könnte man also in VB auch so schreiben:
Visual Basic: [code]If tr is Nothing [/code]Visual Basic: [code]Or tr = false or x < 1000000 then tr = False Else tr = True End If[/code]
Das: var trz=(tr)?" ":""; deklariert erst die Variable trz und weist ihr dabei einen Wert zu. In JS gibt es die Konstruktion Bedingung ? Dann : Sonst, das entspricht also in etwa der VB Funktion IIf. Der Variable trz wird also je nach dem ob die Variable tr True oder False ist entweder " " oder "" zugewiesen.