Denna kanske kan hjälpa dig? :)
http://www.webforum.nu/showthread.php?s=&postid=723735#post723735
Frågan#1
håller på att göra om en funktion från ASP till C#
Grundkoden:
Function ConvFileSize (FileSize, Decimaler)
Dim DotPos, strFileSize
FileSize = cDbl(FileSize)
' Gigabytes.
If FileSize >= 1048576000 Then
strFileSize = cStr(cSng(FileSize / 1048576000))
DotPos = Instr(strFileSize, ".")
IF DotPos THEN
IF Decimaler = 0 THEN Decimaler = -1
strFileSize = MID(strFileSize, 1, DotPos + Decimaler)
END IF
strFileSize = strFileSize + " gb"
' Megabytes.
ElseIf FileSize >= 1048576 THEN
strFileSize = cStr(cSng(FileSize / 1048576))
DotPos = Instr(strFileSize, ".")
IF DotPos THEN
IF Decimaler = 0 THEN Decimaler = -1
strFileSize = MID(strFileSize, 1, DotPos + Decimaler)
END IF
strFileSize = strFileSize + " mb"
' Kilboytes.
ElseIf FileSize >= 1024 THEN
strFileSize = cStr(cSng(FileSize / 1024))
DotPos = InStr(strFileSize, ".")
IF DotPos THEN
IF Decimaler = 0 THEN Decimaler = -1
strFileSize = MID(strFileSize, 1, DotPos + Decimaler)
END IF
strFileSize = strFileSize + " kb"
' Bytes.
Else
IF FileSize > 1 THEN
strFileSize = cStr(Int(FileSize)) + " b"
ELSE
strFileSize = cStr(Int(FileSize)) + " b"
END IF
END IF
ConvFileSize = Trim(strFileSize)
End Function
Min kod:
public string ConvFileSize(int FileSize,int Decimaler)
{
double mySize = Convert.ToDouble(FileSize);
string strFileSize;
int DotPos;
int gb=1048576000,mb=1048576,kb=1024;
//Gigabytes.
if(mySize >= gb)
{
strFileSize = Convert.ToString(Convert.ToSingle(mySize / gb));
DotPos = strFileSize.IndexOf(".",0);
if(DotPos>0)
{
if(Decimaler == 0)
Decimaler = -1;
strFileSize = strFileSize.Substring(1, DotPos + Decimaler);
}
strFileSize = strFileSize + " gb";
}
//Megabytes.
else if(FileSize >= mb)
{
strFileSize = Convert.ToString(Convert.ToSingle(mySize / mb));
DotPos = strFileSize.IndexOf(".",0);
if(DotPos>0)
{
if(Decimaler == 0)
Decimaler = -1;
strFileSize = strFileSize.Substring(1, DotPos + Decimaler);
}
strFileSize = strFileSize + " mb";
}
//Kilboytes.
else if(mySize >= kb)
{
strFileSize = Convert.ToString(Convert.ToSingle(mySize / kb));
DotPos = strFileSize.IndexOf(".",0);
if(DotPos>0)
{
if(Decimaler == 0)
Decimaler = -1;
strFileSize = strFileSize.Substring(1, DotPos + Decimaler);
}
strFileSize = strFileSize + " kb";
}
//Bytes.
else
{
if(mySize > 1)
strFileSize = Convert.ToString(Convert.ToInt32(FileSize)) + " b";
else
strFileSize = Convert.ToString(Convert.ToInt32(FileSize)) + " b";
}
return strFileSize.Trim();
}
Men jag får ut:
.36 mb
när jag skickar in: 1433206 och 2 (decimaler)
och när jag provade med det här:
MMPath storlek = new MMPath();
int dec=2;
storlek.ConvFileSize(Convert.ToInt32(rS["MDownSize"].ToString()),dec);
Så fick jag felet:
System.ArgumentOutOfRangeException: Index and length must refer to a location within the string. Parameter name: length
Vad gör jag fel?
