[comp.lang.pascal] Problem with the WVSPrintF function

F0O@psuvm.psu.edu (06/05/91)

Hi netters!

   I'm new to Windows programming and I was trying to modify the
STEP3.PAS example program that comes with TPW.  I was changing the
WMLButtonDown method.  The original routine looks like this:

Procedure TMyWindow.WMLButtonDown(Var Msg:TMessage);
VAR
  DC: HDC;
  S: array[0..9] of char;
BEGIN
  WVSPrintF(S, '(%d,%d)', Msg.LParam);
  DC := GetDC(HWindow);
  TextOut(DC, Msg.LParamLo, Msg.LParamHi, S, StrLen(S));
  ReleaseDC(HWindow, DC);
END;

   This of course works fine, but I modified the code in the following
way so I could print some text instead of a number:

Procedure TMyWindow.WMLButtonDown(Var TextString: PChar);
VAR
  DC: HDC;
  S: PChar;
BEGIN
  WVSPrintF(S, '%s', TextString);
  DC := GetDC(HWindow);
  TextOut(DC, Msg.LParamLo, Msg.LParamHi, S, StrLen(S));
  ReleaseDC(HWindow, DC);
END;

   When Windows hits the WVSPrintF statement, I get a UAE.  By running
in the debugger, the UAE is reported as exception code 13, a memory
addressing error.
   The problem must be that I'm not using PChar correctly, although
the on-line help states all parameters of WVSPrintF are of type PChar
and the manual shows examples of where you can put a text string into
a variable of type PChar.
   If someone can tell me what I'm doing wrong, I'd greatly appreciate
it!

                                                      [Tim]

dsampson@x102a.harris-atd.com (sampson david 58163) (06/06/91)

In article <ONEEL.91Jun5145428@heawk1.gsfc.nasa.gov>
oneel@heawk1.gsfc.nasa.gov ( Bruce Oneel ) writes:

  [main msg deleted]


   But who knows, this could be all wrong.

   bruce

Yes it is wrong Bruce.  He cross posted into the ms.windows.programmer
group where I put a msg explaining why it crashes.  Simply put, when
he redefined S to be a *char, he never allocated any space for the
string.  Borland sets S up as an array, which does the allocation for
you.  When he tried to copy a string to the pointer, it crashed.

--

                                          A new world record
                                          in the javalin throw
                                                
    /                                          /
   /                                          I
-------------------------------------------------


David Sampson                                         Harris Corporation
dsampson@x102a.ess.harris.com                   Gov't Aerospace Systems Divison
uunet!x102a!dsampson                                  Melbourne, Florida

-------------------------------------------------------------------------------