Passing String Parameters to WinAPI Functions (Views: 100)


I'm using the Winexec command and trying to use a string as the argument, but Winexec takes only a Pchar as its argument. I can't figure out how to put a regular string into a Pchar, or how to make a Pchar 'point' to a character string.


WinAPI calls can be pretty confusing, huh? Let's say you have a function called WinAPICall that takes a PChar as an argument. Here are a couple of ways to make the call:

First Method (This will only work for Delphi 2.0 and above, which supports casting):


Second Method:

procedure CallWinApiCall(S: string);
  Val: string;
  pVal: PChar;
  Val := S;
  {Initialize memory for the PChar}
  GetMem(pVal, Length(Val));

  {Copy the contents of Val to PChar}
  pVal := StrPCopy(pVal, Val);

  {This next step is ABSOLUTELY necessary}
  FreeMem(pVal, Length(Val));

In any case, that should do it for you pretty nicely.

<< Back to main page