Mega Code Archive

 
Categories / Delphi / API
 

Passing string parameters to winapi functions

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): WinAPICall(PChar(MyStringVal)); Second Method: procedure CallWinApiCall(S : String); var Val : String; pVal : PChar; begin Val := S; {Initialize memory for the PChar} GetMem(pVal, Length(Val)); {Copy the contents of Val to PChar} pVal := StrPCopy(pVal, Val); WinAPICall(pVal); {This next step is ABSOLUTELY necessary} FreeMem(pVal, Length(Val)); end; In any case, that should do it for you pretty nicely.