DmWrite calls DmWriteCheck internally before it writes. If it gets an error,
they return the message you received. Therefore in your release version
there is no reason to call DmWriteCheck;
What you should do is, for debugging purposes, add your own DmWriteCheck
with an error message, so you should know exactly where and why the error is
happening.
For example:
#define DebugWriteCheck 1
#ifdef DebugWriteCheck
err = DmWriteCheck (recordP, offset, bytes);
if (err)
{
const char * errorType;
char errorStr[84];
switch (err)
{
case (dmErrWriteOutOfBounds):
errorType = "dmErrNotValidRecord";
break;
case (dmErrWriteOutOfBounds):
errorType = "dmErrNotValidRecord";
break;
default:
errorType = "UnknownError";
}
StrPrintF(errorStr, DmWriteCheck caused ErrorType %s:0x%x, errorType,
err);
ErrFatalDisplay(err, errorStr);
}
#endif
err = DmWrite (recordP, offset, srcP, bytes);
You can even add more info in the error message. Let me know if this helps.
LionScribe
"Robert Moynihan" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Steve Ely wrote:
>
>>Bob,
>>
>>Thanks for the insight. I did manage to get a customer to fax me a
>>set of barcodes that will reproduce the problem, so that is a big step
>>in the right direction.
>>
> Yes, that will be a big help for you.
>
>>The fatal alert message is:
>>
>>DataMgr.c, Line:7025,
>>DmWrite:DmWriteCheck failed
>>
>>What is the signifigance of Line:7025?
>>
> That really will mean nothing to you, same as it doesn't really mean
> anything to me. If you had access to the source code for DataMgr.c then
> you could look up that line and see what was likely going on, but from the
> evidence at hand it really just means that one of your calls to a Dm....
> function caused the crash.
>
>>Is it necessary or 'good practice' to call DMWriteCheck before any
>>DmWrite?
>>
> I would have to say "no". It is certainly not necessary, as what you
> really need in the first place is a good understanding of what you are
> writing and to where. With that knowledge, you will be able to manage
> your writes so that you don't overflow the bounds. As to whether or not
> it is good practice.... I just did a scan of my entire SDK 40 Example code
> folder, which contains the source code for the default apps --
> Datebook, Mail, Memo, Reptiods, etc., and not a single DmWriteCheck()
> showed up. I'm sure there are hundreds (or maybe thousands) of DmWrite()
> calls. So, event if it IS good practice, it's not something that the Palm
> developers were doing.
>
> Bob
>
--
For information on using the PalmSource Developer Forums, or to unsubscribe,
please see http://www.palmos.com/dev/support/forums/