Ich möchte eine Typkonvertierung von double in string machen und verwende dazu folgende Funktion.
Diese Funktio
Code
void doubleToStr9(const char* str, double flpNumber, Int numFractDigits)
{ int longNumber;
double flpIP, zeros, round;
Int i, remainder, strLen;
Char sign = ' ';
if (numFractDigits < 0 || numFractDigits > 9)
FrmCustomAlert(ErrorAlert, "Error in doubleToStr9.", "", " ");
if (flpNumber < 0.0)
{ flpNumber = -flpNumber;
sign = '-';
}
zeros = 1.0;
for (i=0; i<numFractDigits; i++)
zeros *= 10;
round = 0.5/zeros;
flpNumber += round;
flpIP = (Long) flpNumber;
flpNumber = flpNumber - flpIP;
str[0] = sign;
StrIToA(&str[1], (Long) flpIP);
strLen = StrLen(str);
str[strLen] = '.';
str[numFractDigits+strLen+1] = '\0';
longNumber = flpNumber * zeros;
for (i=numFractDigits+strLen; i>strLen; i--)
{ remainder = longNumber % 10;
str[i] = remainder + 0x30; //diese Zeile scheint das Problem zu sein
longNumber /= 10;
}
}
Alles anzeigen
Diese funktioniert auch, allerdings sagt mein Emulator beim Beenden "un-freed chunk at 0x00F02808, size 5". Auf dem echte Palm (Treo 650) kommt nichts.
Aber ich will mir da ja nicht meinen Speicher mit Müll vollmachen.
Wenn ich die Zeile (oben markiert) auskommentiere tritt das Problem nicht auf (allerdings funktionierts dann natürlich auch nicht mehr)
Irgenwie muss ich wohl den char (char buf[20]) übergebe wieder freigeben - free(buf) funktioniert aber nicht.
Gruss far