Double in String umwandeln

Willkommen!

Wenn du im Nexave-Forum mitmachen möchtest, schreib an community@nexave.de. Wir haben die Registrierungsfunktion in unserem Diskussionsforum nämlich deaktiviert, weil sich praktisch nur noch Spammer und Werbebots registriert haben. Per E-Mail sind wir dir gern behilflich, einen Account anzulegen.
  • Ich möchte eine Typkonvertierung von double in string machen und verwende dazu folgende Funktion.
    Diese Funktio



    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

    • Offizieller Beitrag

    Ich sehe keine markierte Zeile?


    Edit: ach doch, jetzt habe ich sie gefunden. Was steht denn ab der angegebenen Adresse? Stimmt die Adresse mit str überein? Du mußt nur freigeben, was Du auch belegst. Ich sehe kein MemPtrNew also brauchst Du auch kein MemPtrFree in der Funktion. Btw. kannst Du nicht irgendwas in der Art machen?


    if (dbl < 0)
    {
    minus = true;
    dbl = -dbl;
    }


    StrPrintF(str, "%s%d.%08d", minus ? "-" : "", (int) dbl, (int) (dbl * 10^8) - (((int) dbl) * 10^8));



    Gruß
    Henk

  • Ich glaube da ist ein grundlegendes Problem, in der Art wie ich meinen String da verbaue, denn ich habe jetzt noch selbst einige Funktionen geschrieben (die Idee von Metaview zB) - aber immer dasselbe am Ende.


    Deswegen schreibe ich hier mal wie ich das ganze aufrufe:


    Egal wie ich buf verändere oder mit welcher Funktion - immer meckert er beim Beenden.


    bye far

    • Offizieller Beitrag

    MemHandleNew(), MemHandleLock(), MemHandleUnlock(), MemHandleFree()


    oder gleich MemPtrNew(), MemPtrFree()


    Ist das Feld editierbar? Dann mach doch einfach FldSelect, FldInsert(), dann mußt Du Dich nicht um Handles und die Speicherverwaltung des Fields kümmern.

  • Das Feld ist nicht editierbar.
    Wenn ich MemHandleFree() verwende, kommt beim FrmReturnToForm(0); ein Fehler: "Free Handle". Der Fehler liegt ja auch am Verändern von buf, wenn ich das doubleToStr weglasse gibt es keinen Fehler.


    edit:
    So funktioniert es jetzt: