> int testreturn(const char *thename, char *rcity, char *rstate)
> {
>
>      memcpy (rcity,"Boston",7);
>      memcpy (rstate,"Massachusetts",14);
>
> return strlen(thename);
> }

First thing to check.... is it declared CDECL or STDCALL in the C library?
I think the default C declaration mode is CDECL if it is not defined 
explicitely.

> I click OK and its fine. It returns everything correctly. That message
> box is a pain though. I tried:
> try
>   retint := testreturn(pchar(ganame), pchar(rlines[0]), pchar(rlines[1]));
> except
> //do something
> end;
>
> But the program just quits.

Whelp..exceptions are a false sense of security, and many elite programmers 
refuse to use them
because they are like GOTO statements (Chen, Spolsky, and others). It's even 
worse when you
cover things up like using
  //do something
instead of handling the exception.  Whereas if you skip exceptions all 
together, and just do
real checks with regular code, old school error codes - it might end up being 
more of a solid
program. However, this is no place for exception pros/cons flamewars ;-)

In general, for troubleshooting a problem in these beginning stages, I wouldn't 
even use
exceptions - they just complicate things until you find the error using other 
trial and error
code checks such as:
-  nil checks.. is something nil, why?
-  length checks.. is the pchar the right length before and after, or is it 
damaged somewhere?
-  sizeof checks..
-  declaration checks
-  operating system error checks such as getlasterror (in this case it don't 
help, but in
general)
-  other trial and error through real code instead of exception code

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to