<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-NZ link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Sorry Bob, I meant to include an example of your code tweaked to use “raw” a char array with the Windows API routine.  Here it is (this version displays results rather than storing in a variable, but you get the idea </span><span style='font-size:11.0pt;font-family:Wingdings;color:#1F497D'>J</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> ) :<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>var<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>  dir: array of Char;<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>  s: String;<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>begin<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>  s := ‘’;<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>  SetLength(dir, MAX_PATH + 1);<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>  if Succeeded(SHGetFolderPath(0, CSIDL_Program_Files, 0, 0, @dir[0])) then<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>    s := PChar(dir);<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>  ShowMessageFmt(s + ' (%d chars)', [Length(s)]);<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>  // Outcome:  s has both the right length *<b>and</b>* is null terminated correctly<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>end;<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> delphi-bounces@delphi.org.nz [mailto:delphi-bounces@delphi.org.nz] <b>On Behalf Of </b>Bob Pawley<br><b>Sent:</b> Monday, 27 June 2011 08:58<br><b>To:</b> 'NZ Borland Developers Group - Delphi List'<br><b>Subject:</b> Re: [DUG] Variable in String<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><div><div><div><p class=MsoNormal><span style='color:#00002B'>Hi Jolyon<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>I was wondering if my problem is a conflict between how I derive the value of the variable (PAnsiChar).<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>Here is the code for doing that.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>SetLength(sDir, MAX_PATH);<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>ZeroMemory(@sDir[1], MAX_PATH);<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>if Succeeded(SHGetFolderPath(0, CSIDL_Program_Files, 0, 0, PAnsiChar(sDir))) then<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>FW_Path := sDir;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>Bob<o:p></o:p></span></p></div><div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black'>&nbsp;<o:p></o:p></span></p></div><div><div><p class=MsoNormal style='background:whitesmoke'><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black'> <a href="mailto:jsmith@deltics.co.nz" title="jsmith@deltics.co.nz">Jolyon Smith</a> <o:p></o:p></span></p></div><div><p class=MsoNormal style='background:whitesmoke'><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black'>Sent:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black'> Wednesday, June 22, 2011 3:49 PM<o:p></o:p></span></p></div><div><p class=MsoNormal style='background:whitesmoke'><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black'>To:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black'> <a href="mailto:delphi@delphi.org.nz" title="delphi@delphi.org.nz">'NZ Borland Developers Group - Delphi List'</a> <o:p></o:p></span></p></div><div><p class=MsoNormal style='background:whitesmoke'><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black'>Subject:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black'> Re: [DUG] Variable in String<o:p></o:p></span></p></div></div></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:black'>&nbsp;<o:p></o:p></span></p></div></div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Don’t quote FW_Path element of the program path – you need to quote the <u>entire</u> path AND program file name when/if any <u>part</u> of the path or the filename itself does – or may – contain spaces:<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>e.g.&nbsp;&nbsp; “path a\sub a\sub b\prog.exe”<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><u><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>not</span></u><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp; “path a”\sub\prog.exe<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>So in your case, this should do the trick:<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#00002B'>&nbsp;&nbsp; FW_Path&nbsp;&nbsp;&nbsp;&nbsp; := X;&nbsp; <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#00002B'>&nbsp;&nbsp; DXF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; := openDialog1.FileName;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#00002B'>&nbsp;&nbsp; ProgramName := ‘”’ + FW_Path + '\FWTools2.4.7\bin\ogr2ogr” &quot;-f&quot; &quot;PostgreSQL&quot; PG:&quot;host=192........ user=postgres dbname=E5R password=........&quot; &quot;'+ DXF +'&quot; -nln Import_Process';<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#00002B'>&nbsp;&nbsp; ShowMessage(ProgramName);<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>hth<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black'> delphi-bounces@delphi.org.nz [mailto:delphi-bounces@delphi.org.nz] <b>On Behalf Of </b>Bob Pawley<br><b>Sent:</b> Thursday, 23 June 2011 10:30<br><b>To:</b> DUG<br><b>Subject:</b> [DUG] Variable in String<o:p></o:p></span></p></div></div><p class=MsoNormal><span style='color:black'>&nbsp;<o:p></o:p></span></p><div><div><div><p class=MsoNormal><span style='color:#00002B'>Hi<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>I’m having trouble with using a variable in a string path.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>When I use the variable FW_Path := ‘C:\Program Files (x86)’ with two single quotes, the following works well and ShowMessage(ProgramName); displayed the full path .<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>When I reference FW_Path to a variable X I get an error returned “Can Not run....” The variable&nbsp; X is returned as C:\Program Files (x86) without quotes. <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>I attempted Quote String and got the following ‘C:\Program Files (x86) with one single quote.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>Both cases return the same error - and in both cases ShowMessage(ProgramName); displayed none of the path after C:\Program Files (x86).<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>Help would be appreciated.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>Bob<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;&nbsp; FW_Path := QuoteStr(X);&nbsp; <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp; DXF&nbsp; := openDialog1.FileName;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp; ProgramName :=FW_Path+'\FWTools2.4.7\bin\ogr2ogr &quot;-f&quot; &quot;PostgreSQL&quot; PG:&quot;host=192........ user=postgres dbname=E5R password=........&quot; &quot;'+ DXF +'&quot; -nln Import_Process';<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#00002B'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ShowMessage(ProgramName);<o:p></o:p></span></p></div></div></div><div class=MsoNormal align=center style='text-align:center'><span style='font-family:"Calibri","sans-serif";color:black'><hr size=2 width="100%" align=center></span></div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:black'>_______________________________________________<br>NZ Borland Developers Group - Delphi mailing list<br>Post: delphi@delphi.org.nz<br>Admin: http://delphi.org.nz/mailman/listinfo/delphi<br>Unsubscribe: send an email to delphi-request@delphi.org.nz with Subject: unsubscribe<o:p></o:p></span></p></div></div></div></div></body></html>