Beiträge von farion

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.

    Mir scheint, dass die PilotMain nicht in einer Section definiert werden darf, seid ich die Deklaration dieser Funktion weggelassen habe funktioniert es.


    Noch ne andere Frage zu Sections, gibt es da irgendwelche vordefinierten Namen, die irgendeine Bedeutung haben - ich habe eine meiner Sections data genannt, was aber nicht funktionierte - ein anderes Wort hat dann problemlos funktioniert.


    Gruss farion

    Hallo,


    meine Palmanwendung ist nun immer grösser geworden und benötigt nun mehrere Sections. Allerdings stürzt mein Programm nach dem "Section"-Umbau ab (vorher gab es keinerlei Probleme) - der Fehler im Emulator ist "Unhandled instr" und "Records left locked in closed unprotected DB".


    Ich habe zum testen in meiner PilotMain nur noch "return 0" stehen und alles andere auskommentiert - trotzdem kommt dieser Records-locked Fehler.


    Ich beschreibe mal kurz was ich getan habe um Sections zu implementieren


    .def erzeugt

    Code
    application { "PWatcher" PWa }
    multiple code { "main" }


    Sections.h erzeugt

    Code
    #ifndef _SECTIONS_H
    #define _SECTIONS_H
    #define SECTION_MAIN __attribute__ ((section("main")))
    #endif


    meine hautp .c sieht folgendermaßen aus:


    mein Makefile entsprechend so:


    in der pw.h habe ich die PilotMain deklariert

    Code
    UInt32 PilotMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags) SECTION_MAIN;


    Naja und in der resource.rcp und der resource.h stehen die bisher verwendeten FormElemente.


    Gruss farion

    Dazu hätte ich ne idee, die mit vertretbarem Aufwand auch recht schnell implementiert wäre.
    Wie wäre es wenn du mit dem Palm nur einen Server steuerst. Du nimmst eine kleine Linuxkiste, die du an den beamer anschliesst. Auf der Linuxkiste sind die ganzen Daten (Datenbank, Textdateien ...) . Nun muss noch ein Konsolenprogramm her, das nur folgendes tun muss:
    Nummer eintippen - Infos ausgeben, Bild auf Monitor ausgeben (export DISPLAY=:0, display $BILD).
    Man kann dann auch noch ein idle Programm starten lassen, das zufällig Bilder in gewissen Abständen anzeigt - ohne das der Palm an ist.


    Mit dem Palm lockt man sich jetzt per pssh auf dem server ein (am besten mit screen, da so das Programm immer auf dem Server läuft und man sich nur zum steuern verbindet) startet das Programm und kann nun nach herzenslust infos abrufen und Dinge auf dem Beamer anzeigen.


    Auf dem Palm muss nur WLAN funktionieren und pssh installiert sein.
    Alternative zu ssh und konsole wäre das ganze mit Apache/php/mysql zu realisieren und nun mit einem Browser auf dem Palm (zb Opera) den Server per Webinterface steuern. Im Hintergrund sollten aber dann trotzdem immer noch ein paar Skripte werkeln um die Bilder auf dem Beamer anzuzeigen.


    Der Nachteil ist natürlich, dass du einen kleinen Server brauchst (brauchst du aber doch sowieso - oder wie sollen die Bilder auf den Beamer kommen) der Vorteil - du musst dich nicht mit Palmprogrammierung rumschlagen und bist sehr flexibel, was Datenbestände und Bildmaterial angeht)


    Gruss far

    Ich habe den Fehler gefunden, nachdem ich überall mal debugging-meldungen reingemacht habe. Du hattest recht, es war sowas wie das return.


    Ich habe zu jedem Lock auch ein Unlock, das habe ich auch 20x überprüft. Allerdings gab es noch ne kleine Funktion, die ein Pulldown füllt und dort wird die Schleife mit break verlassen und der Unlock übergangen. Das hatte ich übersehen - naja nun ist es gefixt.


    Ich habe allerdings noch eine Frage. Kann ich ein bestimmtes Handle nur 15x locken oder insgesamt nur 15 Handles? Weil der Fehler trat ja bei einem ganz anderen Handle auf, anstatt bei dem welches wirklich nicht geunlockt wurde.


    Gruss far

    okay, das erklärt die seltsame Zahl. Ich locke noch beim Schreiben des Datensatzes ein Handle:


    Aber das ist doch auch in Ordnung - oder unlock MemPtrUnlock recH2 nicht?
    Die MemHandleUnlocks habe ich überprüft, dort wird immer das vorher gelockte Handle angegeben.

    Hallo


    ich bekomme den Fehler "Chunk over-locked" im Emulator (der echte Palm stürzt an der Stelle ab)


    Die Stelle ist folgende und der Error kommt beim Lock:

    Code
    MemHandle       recH;
    DBRecordTypeCntPtr	recP;
    ...
    if (recH = (MemHandle)DmQueryRecord(dbCnt, i))
    {
    recP = (DBRecordTypeCntPtr)MemHandleLock(recH);
    //Hier hole ich per recP->xxx Daten
    MemHandleUnlock(recH);
    }


    An mehreren anderen Stellen (auch mit anderen dbs) funktioniert das problemlos, aber bei einer Stelle bekomme ich den Fehler, genau nachdem ich den 14. Datensatz eingefügt habe. Den Fehler gibt es reproduzierbar nur an dieser Stelle - nach einem Reset kann ich 15 ff problemlos einfügen.


    Was bedeutet denn der Fehler genau und nach was muss ich da suchen? Ich habe schon überall geschaut, ob ich irgendwo einen Handle auf die Datenbank nicht wieder freigegeben habe, bisher leider erfolglos.


    Danke farion

    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:

    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

    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

    Ich habe FntLineWidth() gefunden, FntGetLineWidth() gabs nicht - ich musste auch nochmal 18 für den Pfeil abziehen.


    Wieso ist das keine gute Idee. Wie macht es dann der Standard Launcher, da passiert mit den Kategorien doch genau das. Das Pulldown ändert ständig seine Grösse in Abhänigkeit des Textes - oder?


    farion

    LstSetListHeight gab es nicht, dafür aber LstSetHeight - damit hat es dann auch funktioniert die Länge des Pulldowns dynamisch anzupassen.


    Ich habe mich dann mal mit FrmSetObjectBounds beschäftigt:

    Code
    FrmGetObjectBounds(frm, triggerobj, &triggerBounds);
    triggerBounds.topLeft.x=160-triggerBounds.extent.x;
    FrmSetObjectBounds(frm,triggerobj,&triggerBounds);


    Das ist soweit schonmal ein Fortschritt. Leider kann man nur topLeft.x und nicht topRight.x setzen. Somit müsste ich noch die Breite von 160 abziehen, aber extent.x gibt mir nur die ursprüngliche Breite zurück und nicht die Breite die durch das ändern des Textes entstanden ist. Vielleicht hat sich die Breite auch nicht verändert und man sieht nur den Text herausragen.


    Meine Frage wäre also noch: wird die richtige Breite automatisch nach Ändern des Textes gesetzt und wenn ja, wie kann ich sie auslesen und wenn nein, wie komme ich an die korrekte Breite?


    Gruss und Danke farion

    Hallo


    ich habe mittels POPUPTRIGGER, LIST und POPUPLIST ein Pulldown erstellt - eine Art Kategorie Pulldown rechts oben.
    Funktionieren tut es gut, also wenn ich etwas auswähle kann ich das Event handeln und etwas dementsprechendes tun.


    Danach wird dann immer der ausgewählte Eintrag im POPUPTRIGGER angezeigt. Die Position des POPTRIGGERs ist RIGHT@160 und die Breite AUTO. Das Problem ist jetzt aber, dass diese Werte nicht angepasst werden, wenn sich der Inhalt ändert und somit etwas längerer Text rechts abgeschnitten wird.


    Mein zweites Problem ist, das die Anzahl der Einträge in der LIST varieren können. Wie kann ich je nachdem wieviele Einträge ich verwende die LIST automatisch verlängern, also den VISIBLE-Wert in Abhängigkeit der Einträge setzen. Die Liste soll immer genau so lang sein, wie es Einträge hat und erst ab einer maximal Anzahl dann scrollen.


    Ich programmiere in C, verwende ein aktuelles PalmSDK und die prc-tools.


    Gruss farion