hallo an alle,
habe mich fuer dein akku 3 entschieden und auch eingebaut.
alles i.o.
hallo an alle,
habe mich fuer dein akku 3 entschieden und auch eingebaut.
alles i.o.
hallo an alle,
mein akku scheint defekt zu sein (m505).
so bekomme ich den palm nicht mehr an.
wenn ich das usb/cradle-kabel angeschlossen habe,
dann leuchtet der an-aus-button gruen.
ich kann mich im palmos bewegen;
die batterie zeigt einen blitz.
loese ich das usb/cradle-kabel wieder, so ist alles schlagartig aus -
nichts geht mehr.
ich habe schon ein paar akkus im internet gefunden die ich mir kaufen kann,
zum beispiel:
akku 1
akku 2
akku 3
akku 4
die preise schwanken sehr.
was die leistungsmerkmale angeht kann ich nicht viel sagen,
da ich kein elektrotechniker bin.
vielleicht weiss einer von euch etwas?
auf jeden fall wuesste ich gerne wie ich meinen akku testen kann;
ob es andere moeglichkeiten gibt den akku auf fehler zu testen?
so, nun bin ich aus der sonne zurueck ...
hallo MetaView,
Zitat
Du schließt scheinbar die DB nicht, nach dem Öffnen und Auslesen der Nummern.
ja, das habe ich mir auch schon gedacht.
aber wenn ich das tue bekomme ich andere fehler.
ersteinmal moechte ich die ergebnisse des debuggers posten.
meine debugging habe ich so durch gefuehrt:
1. pose mit dem rom PalmOS412_FullDgb_EZ_EFIGS.rom gestartet
2. mein programm installiert
3. eine datenbank angelegt
4. m68k-palmos-gdb gestartet
5. "target pilot telnet:2000" eingegeben
6. mein programm gestartet
7. formular "loeschen" geoeffnet => alles in ordnung
8. zum startformular zurueck
9. wieder formular "loeschen" geoffnet
nun kommt folgende fehlermeldung:
jetzt habe ich zwei moeglichkeiten:
pose stuerzt ab und m68k-palmos-gdb verabschiedet sich mit:
oder
die bekannte fehlermeldung taucht auf:
Kartei (0.0.7) just read from memory location 0x4E55FFF8,
causing a bus error.
A "bus error" means that the application accessed a
memory location that is not in RAM or ROM, nor
corresponds to a memory-mapped hardware register.
druecke ich nun wieder und wieder " Continue "
stuerzt nach ein paar mal pose ab und m68k-palmos-gdb verabschiedet sich mit:
ich glaube auch das es mit den offenen datenbanken zusammen haengt.
aber das schliessen macht auch probleme.
willst du die fehlermeldungen sehen
wenn ich das schliessen der datenbank einbaue?
Zitat
Oder mit HostTraceOutputTL() debug ausgaben einzubauen?
ich weiss nicht wie.
in meinem buch habe ich nichts darueber gefunden.
wo, an welcher stelle in dem programm,
sollte ich deiner meinung nach die datenbank schliessen -
wenn ich das formular "loeschen" verlasse?
top tip!
ja, ich habe ausgabe auf 9 vergroessert.
nun klappt es!
aber ... nur einmal
das heisst: nachdem ich das formular KarteiLoeschen verlasse
und wieder zurueckkomme tritt ein aehnlicher fehler auf:
Kartei (0.0.7) just read from memory location 0x4E55FFFC,
causing a bus error.
A "bus error" means that the application accessed a
memory location that is not in RAM or ROM, nor
corresponds to a memory-mapped hardware register.
ich habe mir gedacht dass eine variable beim zweiten start
der funktion KarteiLoeschenFrmHandleEvent "belegt" oder "besetzt" ist.
auf jeden fall kann ich das formular nur einmal nutzen,
beim zweiten eintritt haengt pose wieder, aehnlich wie vorher.
aber mit zwei unterschieden 1. die datenbanknummer (8384951) wird nicht mehr ausgegeben 2. die speicheradresse ist eine andere 0x4E55FFFC).
hast du eine idee warum nun wieder ein speicherbereich verwendet wird der ungueltig ist?
ps: ich habe vorsichtshalber den gesammten bereich hier angehaengt:
// Funktion zum Abfragen der Formularevents von KarteiLoeschen
Boolean KarteiLoeschenFrmHandleEvent(EventPtr event) {
typedef struct {
UInt32 Datenbanknummer;
} Datensatz;
char ausgabe[9];
FormPtr formular;
Boolean handled = false;
Err fehler = 0;
LocalID datenbankNr;
LocalID datenbankNrAusgabe;
UInt16 speicherKarte = 0;
DmOpenRef datenbankZeiger;
UInt16 datenbankAnzahlEintraege;
UInt16 i;
MemHandle lesenHandle;
Datensatz* lesenZeiger;
// switch-Abfrage zum ermitteln des Formularevents von "KarteiLoeschenFrmHandleEvent"
switch(event->eType) {
case frmOpenEvent:
// Das aktive Formular wird als Zeiger der Variable "formular" bekannt gemacht
formular = FrmGetActiveForm();
// Zeichnen des Formulars "KarteiNeuFormular"
FrmDrawForm(formular);
// Ermitteln der Datenbanknummer der Systemdatenbank KarteiDB_KTEI
datenbankNr = DmFindDatabase(speicherKarte, "KarteiDB_KTEI");
// Öffnen der Systemdatenbank KarteiDB_KTEI
datenbankZeiger = DmOpenDatabase(speicherKarte,
datenbankNr, dmModeReadWrite);
// Anzahl der Datensätze ermitteln
datenbankAnzahlEintraege = DmNumRecords(datenbankZeiger);
// Speicher für nummerische Ausgabe
for(i = 0; i < datenbankAnzahlEintraege; i++) {
// Datenbank abfragen nach Records
lesenHandle = DmQueryRecord(datenbankZeiger, i);
// Testen ob es einen ermittelt wurde
if(lesenHandle != NULL) {
// Pointer auf den Datensatz ermitteln
lesenZeiger = (Datensatz *) MemHandleLock(lesenHandle);
// Datenbanknummer ausgeben
StrIToA(ausgabe, lesenZeiger->Datenbanknummer);
WinDrawChars(ausgabe,StrLen(ausgabe), 0, i*10);
// Speicher freigeben
MemHandleUnlock(lesenHandle);
} // Ende der if-Abfrage "lesenHandle gleich Null"
} // Ende der for-Schleife "i kleiner datenbankAnzahlEintraege"
handled = true;
break; // break für "case frmOpenEvent"
// Wenn ein Button im Formular gedrückt wurde
case ctlSelectEvent:
// Neue switch-Abfrage starten um den gedrückten Button zu ermitteln
switch (event->data.ctlSelect.controlID) {
// Wenn der Button "Abbrechen" gedrückt wurde
case KarteiAbbrechen:
// Hinweisfenster mit Frage ausgeben und mit hilfe der switch-Anweisung
// ermitteln welcher Button bei der Frage gedrückt wurde
switch (FrmCustomAlert(KarteiFrageAbbrechen, "Wollen Sie Wirklich abbrechen?", NULL, NULL)) {
// Wenn "Ja" gedrückt wurde
case 0:
// Zurück zum KarteiStartFormular
FrmGotoForm(KarteiStartFormular);
handled = true;
break; // break für "case 0"
// Wenn "Nein" gedrückt wurde
case 1:
handled = true;
break; // break für "case 1"
} // Ende der switch-Abfrage welcher Button bei der Frage gestellt wurde
handled = true;
break; // break für "case KarteiAbbrechen"
} // Ende der switch-Abfrage zum Ermitteln des gedrückten Buttons
handled = true;
break; // break für "case ctlSelectEvent"
} // Ende der switch-Abfrage zum Ermitteln des Formularevents von "KarteiLoeschenFrmHandleEvent"
return handled;
} // Ende der Funktion KarteiLoeschenFrmHandleEvent
Alles anzeigen
@henk
super! nun geht es.
das ausgabe= war der fehler.
wie schon geschrieben: das buch ist rotze.
nach ein paar weiteren aenderungen werden nun
die datenbanknummer untereinander gelistet.
leider haengt sich pose danach auf mit der fehlermeldung:
Kartei (0.0.7) just read from memory location 0x35323100,
causing a bus error.
A "bus error" means that the application accessed a
memory location that is not in RAM or ROM, nor
corresponds to a memory-mapped hardware register.
ich verstehe nur das auf in einen bereich zugegriffen wird,
der weder ram noch rom ist, vielleicht ein zeiger?
kann es sein das der pose sehr zimperlich ist
und das dieser fehler bei einem hardware palm nicht auftreten wuerde?
habe mein palm gerade in der reparatur.
hier der betreffende teil:
[PHP]
// Funktion zum Abfragen der Formularevents von KarteiLoeschen
Boolean KarteiLoeschenFrmHandleEvent(EventPtr event) {
typedef struct {
UInt32 Datenbanknummer;
} Datensatz;
char ausgabe[3];
LocalID datenbankNr;
DmOpenRef datenbankZeiger;
UInt16 datenbankAnzahlEintraege;
UInt16 i;
MemHandle lesenHandle;
Datensatz* lesenZeiger;
[..]
// Anzahl der Datensätze ermitteln
datenbankAnzahlEintraege = DmNumRecords(datenbankZeiger);
// Speicher für nummerische Ausgabe
for(i = 0; i < datenbankAnzahlEintraege; i++) {
// Datenbank abfragen nach Records
lesenHandle = DmQueryRecord(datenbankZeiger, i);
// Testen ob es einen ermittelt wurde
if(lesenHandle != NULL) {
// Pointer auf den Datensatz ermitteln
lesenZeiger = (Datensatz *) MemHandleLock(lesenHandle);
// Datenbanknummer ausgeben
StrIToA(ausgabe, lesenZeiger->Datenbanknummer);
WinDrawChars(ausgabe,StrLen(ausgabe), 0, i*10);
// Speicher freigeben
MemHandleUnlock(lesenHandle);
} // Ende der if-Abfrage "lesenHandle gleich Null"
} // Ende der for-Schleife "i kleiner datenbankAnzahlEintraege"
handled = true;
break; // break für "case frmOpenEvent"
[/PHP]
hallo an alle,
ich schreibe ein progamm in dem datenbanken angelegt werden.
(zu meiner person: c newbie, palm programming newbie)
in einer extra datenbank werden die datenbanknummern nach dem anlegen gespeichert.
nun will ich auch die datenbanken wieder loeschen koennen.
dazu soll spaeter eine liste erstellt werden die untereinander die datenbanknummern zeigt.
aber ich kann nicht einmal die eintraege aus der datenbank auslesen.
beim kompilieren erhalte ich folgende fehlermeldung:
[admin@emma kartei]$ make
m68k-palmos-gcc -g -O2 -o kartei kartei.c
kartei.c: In function `StartApplication':
kartei.c:28: warning: passing arg 2 of `StrIToA' makes integer from pointer without a cast
kartei.c: In function `KarteiLoeschenFrmHandleEvent':
kartei.c:241: incompatible types in assignment
make: *** [code0000.kartei.grc] Fehler 1
mein programm beinhaltet folgende einschlaegige programmteile:
[PHP]
// Wenn der Button "Anlegen" gedrückt wurde
case KarteiAnlegen:
// Das aktive Formular wird als Zeiger der Variable "formular" bekannt gemacht
formular = FrmGetActiveForm();
// Zeiger auf den Feldinhalt holen
feldZeiger = FrmGetObjectPtr(formular,
FrmGetObjectIndex(formular, KarteiName));
// Den Inhalt des Feldes "KarteiName" in den String textZeiger kopieren
textZeiger = FldGetTextPtr(feldZeiger);
// Einen Zeiger auf die Liste "KarteiFarbe" anlegen
listenZeiger = FrmGetObjectPtr(formular,
FrmGetObjectIndex(formular, KarteiFarbe));
// Den gewählten Popup-Listeneintrag ermitteln
KarteiFarbeAuswahl = LstGetSelectionText(listenZeiger,
LstGetSelection(listenZeiger));
// Wenn eine Name für die Datenbank eingegeben wurde
if(textZeiger != NULL) {
// Hinweisfenster mit Frage ausgeben und mit hilfe der switch-Anweisung
// ermitteln welcher Button bei der Frage gedrückt wurde
switch(FrmCustomAlert(KarteiFrageAnlegen, textZeiger, KarteiFarbeAuswahl, NULL)) {
// Wenn "Ja" gedrückt wurde
case 0:
// Anlegen der Datenbank
fehler = DmCreateDatabase(speicherKarte,
textZeiger, 'KTEI', 0, false);
// Überprüfen ob das Anlegen der Datenbank fehlschlug
if(fehler) {
// Hinweis ausgeben, daß das Anlegen fehlschlug
FrmCustomAlert(KarteiFehler,
"Fehler beim anlegen der Datenbank:", StrIToA(fehlercode, fehler), NULL);
} // Ende der if-Abfrage auf fehler unleich NULL
// Wenn das Anlegen der Datenbank erfolgreich war
else {
position = 0;
// Nummer der Benutzerdatenbank ermitteln
datenbankNr = DmFindDatabase(speicherKarte, textZeiger);
// Nummer der Systemdatenbank ermitteln
KarteiDB_datenbankNr = DmFindDatabase(speicherKarte, "KarteiDB_KTEI");
// Systemdatenbank öffnen, im schreib-lese Modus
datenbankZeiger = DmOpenDatabase(speicherKarte,
KarteiDB_datenbankNr, dmModeReadWrite);
if(datenbankZeiger == 0)
WinDrawChars("Line 161",8, 0, 15);
// Neuen Datenbank-Eintrag-Bereich in der Systemdatenbank reservieren
// indem nach freiem Speicherplatz gefragt wird
datensatzHandle = DmNewRecord(datenbankZeiger, &position,
sizeof(KarteiDB_datenbankNr));
// Wenn das Reservieren des freien Speicherplatzes fehlschlug
if(datensatzHandle == 0)
WinDrawChars("Fehler beim Einfuegen",20, 0, 50);
// Den neuen Datenbank-Eintrag-Bereich sperren
// um das eigene Schreiben zu sichern
datensatzZeiger = MemHandleLock(datensatzHandle);
// Nummer der Datenbank in die Systemdatenbank KarteiDB_KTEI schreiben
DmWrite(datensatzZeiger, 0, &datenbankNr,
sizeof(KarteiDB_datenbankNr));
// Hinweis ausgeben, daß das Anlegen erfolgreich war
FrmCustomAlert(KarteiHinweis, "Die Datenbank", textZeiger, "konnte angelegt werden.");
} // Ende der if-Alternative auf fehler ungleich NULL
handled = true;
break;
// Wenn "Nein" gedrückt wurde
case 1:
handled = true;
break;
} // Ende der switch-Abfrage welcher Button bei der Frage gestellt wurde
handled = true;
break;
} // Ende der if-Abfrage ob "textZeiger" ungleich 0[/PHP]
[PHP]
// Funktion zum Abfragen der Formularevents von KarteiLoeschen
Boolean KarteiLoeschenFrmHandleEvent(EventPtr event) {
typedef struct {
UInt16 Datenbanknummer;
UInt16 leer;
} Datensatz;
char ausgabe[3];
FormPtr formular;
Boolean handled = false;
Err fehler = 0;
LocalID datenbankNr;
LocalID datenbankNrAusgabe;
UInt16 speicherKarte = 0;
DmOpenRef datenbankZeiger;
UInt16 datenbankAnzahlEintraege;
UInt16 i;
MemHandle lesenHandle;
Datensatz* lesenZeiger;
// switch-Abfrage zum ermitteln des Formularevents von "KarteiLoeschenFrmHandleEvent"
switch(event->eType) {
case frmOpenEvent:
// Das aktive Formular wird als Zeiger der Variable "formular" bekannt gemacht
formular = FrmGetActiveForm();
// Zeichnen des Formulars "KarteiNeuFormular"
FrmDrawForm(formular);
// Ermitteln der Datenbanknummer der Systemdatenbank KarteiDB_KTEI
datenbankNr = DmFindDatabase(speicherKarte, "KarteiDB_KTEI");
// Öffnen der Systemdatenbank KarteiDB_KTEI
datenbankZeiger = DmOpenDatabase(speicherKarte,
datenbankNr, dmModeReadWrite);
// Anzahl der Datensätze ermitteln
datenbankAnzahlEintraege = DmNumRecords(datenbankZeiger);
// Speicher für nummerische Ausgabe
for(i = 0; i < datenbankAnzahlEintraege; i++) {
// Datenbank abfragen nach Records
lesenHandle = DmQueryRecord(datenbankZeiger, i);
// Testen ob es einen ermittelt wurde
if(lesenHandle != NULL) {
// Pointer auf den Datensatz ermitteln
lesenZeiger = (Datensatz *) MemHandleLock(lesenHandle);
// Datenbanknummer ausgeben
ausgabe=StrIToA(ausgabe, lesenZeiger->Datenbanknummer);
WinDrawChars(ausgabe,StrLen(ausgabe), 0, i*10);
// Speicher freigeben
MemHandleUnlock(lesenHandle);
} // Ende der if-Abfrage "lesenHandle gleich Null"
} // Ende der for-Schleife "i kleiner datenbankAnzahlEintraege"
handled = true;
break; // break für "case frmOpenEvent"[/PHP]
gerne schicke ich auch das ganze programm.
was ich auch mache ich bekomme das programm nicht kompiliert.
dabei habe ich viele programmteile aus dem buch von dirk noeldner "palm os programmierung" entnommen. ein buch mir vielen fehlern.
nun kann es sein das auch hier ein fehler im buch mein programm schrottet.
aber ich kenne mich auch wenig mit c aus
und habe schwierigkeiten das zeigersystem zu verstehen.
zwar habe ich einfuerungen in c gelesen, aber wirklich damit arbeiten kann ich noch nicht. also kann auch der fehler vor meinem rechner sitzen.
ueber antworten freue ich mich natuerlich.
ich habe zlauncher wieder deaktivert
und empfinde, subjektiv,
dass die aukkulaufzeit sich verlaengert hat.
ZitatOriginally posted by DerUdo
[..]
Nach der Installation vom ZLauncher hält der Akku nur noch die halbe Woche.
[..]
danke udo,
fuer deine antwort.
nun ich habe keine hardware erweitert.
im moment habe ich zlauncher deaktiviert,
mal sehen was sich nun aendern wird.
hallo an alle,
ich habe seit ein paar wochen zlauncher auf meinem m505 installiert.
soweit bin ich zu frieden und würden den gerne behalten.
aber der akku ist nun, selbst wenn ich den m505 zwei tage nur standby nutze,
wesendlich schneller alle.
kann es sein das zlauncher, wenn es geladen ist mehr stromzieht als
der standart applauncher von palm?
ist es möglich das software mehr oder weniger strom frisst?
hi metaview, hi tam hanna,
richtig ich bin _diese_ instanz
und das mit dem array geht -
ich werde es auch so machen.
dank euch.
hallo an alle,
ich bin in der lage datenbanken zu schliessen, zu oeffnen usw.
nur was passiert, wenn ich mein programm verlasse,
(mittels dem button "applications" auf meinem palm m505) -
werden alle datenbanken vom "data manager" geschlossen,
die mein programm geoffnet hat?
ich frage mich wie ich sonst alle geoeffneten bequem datenbanken schliessen
kann ohne diese beim oeffnen in einer datendank mit ihren LocalIDs zu speichern
und diese nach und nach abarbeite.
ein funktion wie "DmCloseAllDatabases()" gibt es nicht,
daher muss sich eine andere instanz darum kuemmern.
hallo an alle,
danke ersteinmal fuer eure erklaerungen.
das mit dem handled true ist wohl erst am ende einer kette sinvoll.
wie das genau laeuft habe ich noch nicht verinnerlicht.
frage mich das einmal in sechs monaten wieder.
aber, solltest du es bis dahin nicht aushalten:
http://www.theoinf.tu-ilmenau.…A_SA/Data/HS_PalmProg.PDF
hi metaview,
danek fuer den tip!
du hast recht mit true return.
ich habe die entsprechende zeile auskommentiert
und hatte sofort das gewuenschte ergebnis.
hier noch einmal mein progammkode
[PHP]
// Neue switch-Abfrage starten um den gedrückten Button zu ermitteln
switch (event->data.ctlSelect.controlID) {
// Wenn der Button Abbrechen gedrückt wurde
case KarteiAbbrechen:
// Hinweisfenster mit Frage ausgeben und mit hilfe der switch-Anweisung
// ermitteln welcher Button bei der Frage gedrückt wurde
switch (FrmCustomAlert(KarteiFrage, "Wollen Sie Wirklich abbrechen?", NULL, NULL)) {
// Wenn "Ja" gedrückt wurde
case 0:
// Zurück zum KarteiStartFormular
FrmGotoForm(KarteiStartFormular);
break;
// Wenn "Nein" gedrückt wurde
case 1:
break;
} // Ende der switch-Abfrage welcher Button bei der Frage gestellt wurde
handled = true;
break;
} // Ende der switch-Abfrage um den gedrückten Button zu ermitteln
// handled = true;
break;
[/PHP]
also in der vorzetzten zeile das
auskommentiert.
aber das mit dem popSelectEvent habe ich nicht verstanden.
meist du, wenn ich ermitteln will welcher listeneintrag gewaehlt wurde
soll ich diese event abfragen?
und wie soll ich nun handled bewerten.
mit false?
hallo an alle,
ich versuche gerade meinem programm eine popupliste bekannt zu geben.
[PHP]
POPUPTRIGGER "waehlen" ID KarteiFarbeListe AT (30 60 AUTO AUTO)
LIST "Blau" "Gelb" "Gruen" "Rosa" "Weiss" ID KarteiFarbe AT (30 60 129 100)
VISIBLEITEMS 5 NONUSABLE
POPUPLIST KarteiFarbeListe KarteiFarbe
[/PHP]
der POPUPTRIGGER wird auch angezeigt,
aber wenn ich diesen betaetige wird er nur schwarz hinterlegt
und sonst passiert nichts.
wenn ich die LIST auf USABLE setze kann ich sie sehen
und beim verschieben der koordinaten kann ich beide sehen.
lediglich das zusammenspiel funktioniert nicht.
hat jemand eine idee?
frohe ostern!
ps: die IDs habe ich in einer headerdatei bekannt gegebn und eingebunden.
hi tede,
also: dein tip mit dem compiler auf meinem system war schon recht gut.
da du meinen code erfolgreich bei dir getestet hast,
konnte es nur an meiner entwicklungsumgebung liegen.
das programm pilrc fehlte und haette als erstes gestartet werden muessen,
wenn ich mein prc baue.
pilrc baut ein *.bin das alle infos der resourcedatei enthaelt.
somit war mein formular mit der id 1000 nicht zu finden -> handle NULL.
das debug rom von plamos hat mir sogar mehr infos geliefert als das
"standart" palmos rom.
aber das sagt auch schon der name und vielleicht weisst du es selbst.
mein buch ist echt grotte. in nebensaetzen wird auf diesen kompilerschritt hingewiesen.
haette ich geld, so wuerde ich mir ein anderes buch kaufen.
danke fuer deine hilfe.
hallo tede,
als erstes: vielen dank fuer deine muehen und dein detailerte antwort.
ich werde einmal schauen ob ich etwas mit den gcc optionen machen kann.
was die quellen angeht:
hast du einen link wo ich die quellen der freien palm os 4.0 teile bekommen kann?
ps: tzzaetaynzz, soll z1 gesprochen werden (zwei silben).
hi Tam Hanna,
danke fuer dein posting.
- ich habe es versucht, aber auch mein realer palm gibt die meldung aus.
- das mit dem handle kann ich nicht erkennen.
- dein tip mit dem forum werde ich annehmen.
weist du ob es das auch auf deutsch gibt?
ich kann es nicht finden.
hallo an alle,
nun versuche ich mich in palm programmierung
und scheitere schon beim ersten programm.
diese programm habe ich einwenig abgeaendert
und ist dem buch "palm-programmierung mit dem gcc" entnommen (s. 54 und 55).
lediglich habe ich meine namen fuer die funktionen gewaehlt.
also haben meine dateien folgende eintraege:
kartei.c
[PHP]
#include <PalmOS.h>
#include "kartei.h"
//-----------------
// Hilfsfunktionen
//-----------------
// Start Funktion des Kartei Programm
void StartApplication(void) {
FrmGotoForm(KarteiStartFormular);
} // Ende der Funktion StartApplication
// Stop Funktion des Kartei Programm
void StopApplication(void) {
FrmCloseAllForms();
} // Ende der Funktion StopApplication
// Funktion zum Abfragen der Formularevents von KarteiStartFormular
Boolean KarteiStartFrmHandleEvent(EventPtr event) {
FormPtr formular;
Boolean handled = false;
switch (event->eType) {
case frmOpenEvent:
// Referenz des Formulars ermitteln
formular = FrmGetActiveForm();
// Zeichen des Formulars
FrmDrawForm(formular);
// Text in das gezeichnete Formular schreiben
WinDrawChars("Kartei!",7 ,80,80);
handled = true;
break;
} // Ende der switch-Anweisung
return handled;
} // Ende der Funktion KarteiStartFrmHandleEvent
// Funktion zum Abfragen der Applicationevents
Boolean ApplicationHandleEvent(EventPtr event) {
FormPtr formular;
int formularId;
Boolean handled = false;
if (event->eType == frmLoadEvent) {
// Bestimmen der Formular ID
formularId = event->data.frmLoad.formID;
formular = FrmInitForm(formularId);
// Formular aktiv setzten
FrmSetActiveForm(formular);
switch(formularId) {
case KarteiStartFormular:
FrmSetEventHandler(formular, KarteiStartFrmHandleEvent);
break;
} // Ende der switch-Anweisung
handled = true;
} // Ende der if-Abfrage, der Zeiger von eType gleich frmLoadEvent
return handled;
} // Ende der Funktion ApplicationHandleEvent
//---------------
// Hauptprogramm
//---------------
UInt32 PilotMain(UInt16 cmd, void *cmdPBP, UInt16 launchFlags) {
EventType event;
if (cmd == sysAppLaunchCmdNormalLaunch) {
// Starten der StartApplication Funktion
StartApplication();
do {
EvtGetEvent(&event, evtWaitForever);
if (!SysHandleEvent(&event)) {
if (!ApplicationHandleEvent(&event)) {
FrmDispatchEvent(&event);
} // Ende der if-Abfrage ob ApplicationHandleEvent ungleich event
} // Ende der if-Abfrage ob SysHandleEvent ungleich event
} while (event.eType != appStopEvent); // Ende der do-while Schleife
// Starten der StopApplication Funktion
StopApplication();
} // Ende der if-Abfrage
return 0;
} // Ende der PilotMain Funktion
[/PHP]
kartei.h
[PHP]
#define KarteiStartFormular 1000
[/PHP]
kartei.res
[PHP]
#include "kartei.h"
FORM ID KarteiStartFormular AT (0 0 160 160)
BEGIN
TITLE "Kartei"
END
[/PHP]
das kompilieren funktioniert ohne probleme.
auch das resourcefile kompilieren geht ohne fehler,
sowie das prc bauen.
/usr/bin/m68k-palmos-gcc -g -O3 -o kartei kartei.c
m68k-palmos-obj-res kartei
build-prc kartei.prc "Kartei" KTEI *.kartei.grc
nun installiere ich mein programm in pose (version 3.5/linux) mit dem rom PalmOS412_FullRel_EZ_enUS.rom.
auch ok.
nun starte ich mein programm kartei.prc
und bekomme folgende meldung:
Kartei (unknown version) called SysFatalAlert with the
message: "MemoryMgr.c, Line:4365, NULL handle".
nun druecke ich auf continue und bekomme diese fehlermeldung:
Kartei (unknown version) called SysFatalAlert with the
message: "MemoryMgr.c, Line:4450, Nil Ptr".
ein weiteres continue ermittelt folgende fehlermeldung:
Kartei (unknown version) just read from memory location
0xFFFFFFFC, which is in the storage heap. In order to
protect the integrity of the user's data, such direct access
is not allowed. Instead, applications should use special
Palm OS functions for this purpose.
der button debug laesst sich nicht betaetigen
und der pose muss resetet werden.
nun habe ich es auch schon mit dem debugger versucht:
und bekomme nach dem ich das programm kartei.prc auf meinem pose gestartet habe folgende meldungen:
dann gebe ich continue ein und bekomme diese meldung:
Kartei (unknown version) called SysFatalAlert with the
message: "MemoryMgr.c, Line:4365, NULL handle".
also wie oben.
nun kann ich aber den button debug druecken
und bekomme eine neue fehlermeldung:
das sagt mir aber alles wenig.
das programm habe ich mehrfach abgeglichen
und es immer als fehlerfrei empfunden,
pose aber nicht.
hat jemand eine idee?
hallo AlLange,
das mit dem overlay hatte so ersteinmal nicht geklappt.
nachdem ich die software deinstalliert hatte
und phonelink_update_v2 wieder installierte gunktionierte es sofort!
schoen das wir mal darueber geschrieben haben!
nun weiss ich aber nicht ob die datei MoHiSp1Lib.prc wichtig ist.
diese laesst sich nicht installieren.