Click here to Skip to main content
15,921,542 members
Home / Discussions / C#
   

C#

 
Questionhow to include header file in C# project [modified] Pin
Daniel Dusek5-Jun-06 1:03
Daniel Dusek5-Jun-06 1:03 
AnswerRe: how to include header file in C# project Pin
Ed.Poore5-Jun-06 1:41
Ed.Poore5-Jun-06 1:41 
GeneralRe: how to include header file in C# project Pin
Daniel Dusek5-Jun-06 2:05
Daniel Dusek5-Jun-06 2:05 
GeneralRe: how to include header file in C# project Pin
Ed.Poore5-Jun-06 2:11
Ed.Poore5-Jun-06 2:11 
GeneralRe: how to include header file in C# project Pin
Kevin McFarlane5-Jun-06 2:26
Kevin McFarlane5-Jun-06 2:26 
GeneralRe: how to include header file in C# project Pin
Daniel Dusek5-Jun-06 2:32
Daniel Dusek5-Jun-06 2:32 
GeneralRe: how to include header file in C# project Pin
Kevin McFarlane5-Jun-06 3:51
Kevin McFarlane5-Jun-06 3:51 
AnswerRe: how to include header file in C# project [modified] Pin
leppie5-Jun-06 8:55
leppie5-Jun-06 8:55 
you can just run it through the VC preprocessor, just make sure you dont have other funny stuff in the file, particularly region directives.

cl -E ... what the heck, I feel friendly today Wink | ;)
<FONT color=Blue>using</FONT> System;
<FONT color=Blue>using</FONT> System<FONT color=DarkBlue>.</FONT>IO;
<FONT color=Blue>using</FONT> System<FONT color=DarkBlue>.</FONT>Diagnostics;
<FONT color=Blue>using</FONT> System<FONT color=DarkBlue>.</FONT>Text<FONT color=DarkBlue>.</FONT>RegularExpressions;

<FONT color=Blue>namespace</FONT> xacc<FONT color=DarkBlue>.</FONT>cspp
{
  <FONT color=Blue>class</FONT> cspp
  {
    [STAThread]
    <FONT color=Blue>static void</FONT> Main<FONT color=DarkBlue>(</FONT><FONT color=Blue>string</FONT><FONT color=DarkBlue>[]</FONT> args<FONT color=DarkBlue>)</FONT>
    {
      <FONT color=Blue>try</FONT>
      {
        Process pp = <FONT color=Blue>new</FONT> Process<FONT color=DarkBlue>()</FONT>;
        ProcessStartInfo psi = pp<FONT color=DarkBlue>.</FONT>StartInfo;
        <FONT color=Blue>string</FONT> pgfiles = Environment<FONT color=DarkBlue>.</FONT>GetFolderPath<FONT color=DarkBlue>(</FONT>Environment<FONT color=DarkBlue>.</FONT>SpecialFolder<FONT color=DarkBlue>.</FONT>ProgramFiles<FONT color=DarkBlue>)</FONT>;
        psi<FONT color=DarkBlue>.</FONT>FileName = pgfiles + <FONT color=Maroon>@"\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe"</FONT>;

        <FONT color=Blue>const</FONT> RegexOptions RE = RegexOptions<FONT color=DarkBlue>.</FONT>Compiled;

        Regex re = <FONT color=Blue>new</FONT> Regex<FONT color=DarkBlue>(</FONT><FONT color=Maroon>@"^\s*#\s*(end)?region"</FONT>,RE<FONT color=DarkBlue>)</FONT>;
        Regex re2 = <FONT color=Blue>new</FONT> Regex<FONT color=DarkBlue>(</FONT><FONT color=Maroon>@"^\s*#pragma"</FONT>,RE<FONT color=DarkBlue>)</FONT>;
        Regex l = <FONT color=Blue>new</FONT> Regex<FONT color=DarkBlue>(</FONT><FONT color=Maroon>@"^#line\s(?<line>\d+)"</FONT>,RE<FONT color=DarkBlue>)</FONT>;

        <FONT color=Blue>foreach</FONT> <FONT color=DarkBlue>(</FONT><FONT color=Blue>string</FONT> file <FONT color=Blue>in</FONT> args<FONT color=DarkBlue>)</FONT>
        {
          <FONT color=Blue>string</FONT> longfile = Path<FONT color=DarkBlue>.</FONT>GetFullPath<FONT color=DarkBlue>(</FONT>file<FONT color=DarkBlue>).</FONT>Replace<FONT color=DarkBlue>(</FONT><FONT color=Maroon>@"\"</FONT>,<FONT color=Maroon>@"\\"</FONT><FONT color=DarkBlue>)</FONT>;
          <FONT color=DarkGreen>// input to cl -P</FONT>
          <FONT color=Blue>string</FONT> temp1 = Path<FONT color=DarkBlue>.</FONT>ChangeExtension<FONT color=DarkBlue>(</FONT>file, <FONT color=Maroon>"c"</FONT><FONT color=DarkBlue>)</FONT>;
          <FONT color=DarkGreen>// output of cl -P</FONT>
          <FONT color=Blue>string</FONT> temp2 = Path<FONT color=DarkBlue>.</FONT>ChangeExtension<FONT color=DarkBlue>(</FONT>file, <FONT color=Maroon>"i"</FONT><FONT color=DarkBlue>)</FONT>;
          <FONT color=DarkGreen>// final C# output</FONT>
          <FONT color=Blue>string</FONT> outfile = Path<FONT color=DarkBlue>.</FONT>ChangeExtension<FONT color=DarkBlue>(</FONT>file, <FONT color=Maroon>"cs"</FONT><FONT color=DarkBlue>)</FONT>;

          <FONT color=Blue>using</FONT> <FONT color=DarkBlue>(</FONT>TextReader r = File<FONT color=DarkBlue>.</FONT>OpenText<FONT color=DarkBlue>(</FONT>file<FONT color=DarkBlue>))</FONT>
          {
            <FONT color=Blue>string</FONT> line = <FONT color=Blue>null</FONT>;

            <FONT color=Blue>using</FONT> <FONT color=DarkBlue>(</FONT>TextWriter w = File<FONT color=DarkBlue>.</FONT>CreateText<FONT color=DarkBlue>(</FONT>temp1<FONT color=DarkBlue>))</FONT>
            {
              <FONT color=Blue>while</FONT> <FONT color=DarkBlue>((</FONT>line = r<FONT color=DarkBlue>.</FONT>ReadLine<FONT color=DarkBlue>()) !=</FONT> <FONT color=Blue>null</FONT><FONT color=DarkBlue>)</FONT>
              {
                <FONT color=Blue>if</FONT> <FONT color=DarkBlue>(</FONT>re<FONT color=DarkBlue>.</FONT>IsMatch<FONT color=DarkBlue>(</FONT>line<FONT color=DarkBlue>))</FONT>
                {
                  <FONT color=DarkGreen>// 'hide' region</FONT>
                  line = line<FONT color=DarkBlue>.</FONT>Replace<FONT color=DarkBlue>(</FONT><FONT color=Maroon>"#"</FONT>, <FONT color=Maroon>"#pragma ("</FONT><FONT color=DarkBlue>)</FONT> + <FONT color=Maroon>")"</FONT>;
                }
                w<FONT color=DarkBlue>.</FONT>WriteLine<FONT color=DarkBlue>(</FONT>line<FONT color=DarkBlue>)</FONT>;
              }
            }
          }

          psi<FONT color=DarkBlue>.</FONT>RedirectStandardError =
            psi<FONT color=DarkBlue>.</FONT>RedirectStandardOutput =
            psi<FONT color=DarkBlue>.</FONT>CreateNoWindow = <FONT color=Blue>true</FONT>;

          psi<FONT color=DarkBlue>.</FONT>UseShellExecute = <FONT color=Blue>false</FONT>;
          psi<FONT color=DarkBlue>.</FONT>Arguments = <FONT color=Blue>string</FONT><FONT color=DarkBlue>.</FONT>Format<FONT color=DarkBlue>(</FONT><FONT color=Maroon>"-nologo -C -P {0}"</FONT>, temp1<FONT color=DarkBlue>)</FONT>;
          <FONT color=Blue>if</FONT> <FONT color=DarkBlue>(</FONT>!pp<FONT color=DarkBlue>.</FONT>Start<FONT color=DarkBlue>())</FONT>
          {
            Console<FONT color=DarkBlue>.</FONT>Error<FONT color=DarkBlue>.</FONT>WriteLine<FONT color=DarkBlue>(</FONT><FONT color=Maroon>"Process could not start. Exiting..."</FONT><FONT color=DarkBlue>)</FONT>;
            Environment<FONT color=DarkBlue>.</FONT>Exit<FONT color=DarkBlue>(</FONT><FONT color=Red>1</FONT><FONT color=DarkBlue>)</FONT>;
            <FONT color=Blue>return</FONT>;
          }
          <FONT color=Blue>string</FONT><FONT color=DarkBlue>[]</FONT> output = pp<FONT color=DarkBlue>.</FONT>StandardOutput<FONT color=DarkBlue>.</FONT>ReadToEnd<FONT color=DarkBlue>().</FONT>Replace<FONT color=DarkBlue>(</FONT>temp1, file<FONT color=DarkBlue>).</FONT>Split<FONT color=DarkBlue>(</FONT><FONT color=DarkOrange>'\n'</FONT><FONT color=DarkBlue>)</FONT>;
          <FONT color=Blue>string</FONT><FONT color=DarkBlue>[]</FONT> errput = pp<FONT color=DarkBlue>.</FONT>StandardError<FONT color=DarkBlue>.</FONT>ReadToEnd<FONT color=DarkBlue>().</FONT>Replace<FONT color=DarkBlue>(</FONT>temp1, file<FONT color=DarkBlue>).</FONT>Split<FONT color=DarkBlue>(</FONT><FONT color=DarkOrange>'\n'</FONT><FONT color=DarkBlue>)</FONT>;

          <FONT color=Blue>foreach</FONT> <FONT color=DarkBlue>(</FONT><FONT color=Blue>string</FONT> ff <FONT color=Blue>in</FONT> output<FONT color=DarkBlue>)</FONT>
          {
            <FONT color=Blue>string</FONT> fff = ff<FONT color=DarkBlue>.</FONT>TrimEnd<FONT color=DarkBlue>(</FONT><FONT color=DarkOrange>'\r'</FONT><FONT color=DarkBlue>)</FONT>;
            <FONT color=Blue>if</FONT> <FONT color=DarkBlue>(</FONT>fff <FONT color=DarkBlue>!=</FONT> file<FONT color=DarkBlue>)</FONT>
            {
              Console<FONT color=DarkBlue>.</FONT>Out<FONT color=DarkBlue>.</FONT>Write<FONT color=DarkBlue>(</FONT>fff + <FONT color=DarkOrange>'\n'</FONT><FONT color=DarkBlue>)</FONT>;
            }
          }
          <FONT color=Blue>foreach</FONT> <FONT color=DarkBlue>(</FONT><FONT color=Blue>string</FONT> ff <FONT color=Blue>in</FONT> errput<FONT color=DarkBlue>)</FONT>
          {
            <FONT color=Blue>string</FONT> fff = ff<FONT color=DarkBlue>.</FONT>TrimEnd<FONT color=DarkBlue>(</FONT><FONT color=DarkOrange>'\r'</FONT><FONT color=DarkBlue>)</FONT>;
            <FONT color=Blue>if</FONT> <FONT color=DarkBlue>(</FONT>fff <FONT color=DarkBlue>!=</FONT> file<FONT color=DarkBlue>)</FONT>
            {
              Console<FONT color=DarkBlue>.</FONT>Error<FONT color=DarkBlue>.</FONT>Write<FONT color=DarkBlue>(</FONT>fff + <FONT color=DarkOrange>'\n'</FONT><FONT color=DarkBlue>)</FONT>;
            }
          }

          pp<FONT color=DarkBlue>.</FONT>WaitForExit<FONT color=DarkBlue>()</FONT>;

          <FONT color=Blue>if</FONT> <FONT color=DarkBlue>(</FONT>pp<FONT color=DarkBlue>.</FONT>ExitCode > <FONT color=Red>0</FONT><FONT color=DarkBlue>)</FONT>
          {
            File<FONT color=DarkBlue>.</FONT>Delete<FONT color=DarkBlue>(</FONT>temp1<FONT color=DarkBlue>)</FONT>;
            File<FONT color=DarkBlue>.</FONT>Delete<FONT color=DarkBlue>(</FONT>temp2<FONT color=DarkBlue>)</FONT>;
            Environment<FONT color=DarkBlue>.</FONT>Exit<FONT color=DarkBlue>(</FONT>pp<FONT color=DarkBlue>.</FONT>ExitCode<FONT color=DarkBlue>)</FONT>;
            <FONT color=Blue>return</FONT>;
          }

          <FONT color=Blue>using</FONT> <FONT color=DarkBlue>(</FONT>TextReader r = File<FONT color=DarkBlue>.</FONT>OpenText<FONT color=DarkBlue>(</FONT>temp2<FONT color=DarkBlue>))</FONT>
          {
            <FONT color=Blue>string</FONT> line = <FONT color=Blue>null</FONT>;
            <FONT color=Blue>bool</FONT> lastlinewasempty = <FONT color=Blue>false</FONT>;

            <FONT color=Blue>using</FONT> <FONT color=DarkBlue>(</FONT>TextWriter w = File<FONT color=DarkBlue>.</FONT>CreateText<FONT color=DarkBlue>(</FONT>outfile<FONT color=DarkBlue>))</FONT>
            {
              <FONT color=Blue>while</FONT> <FONT color=DarkBlue>((</FONT>line = r<FONT color=DarkBlue>.</FONT>ReadLine<FONT color=DarkBlue>()) !=</FONT> <FONT color=Blue>null</FONT><FONT color=DarkBlue>)</FONT>
              {
                <FONT color=DarkGreen>// feature: allow token pasting in normal code</FONT>
                line = line<FONT color=DarkBlue>.</FONT>Replace<FONT color=DarkBlue>(</FONT><FONT color=Maroon>"##"</FONT>,<FONT color=Blue>string</FONT><FONT color=DarkBlue>.</FONT>Empty<FONT color=DarkBlue>)</FONT>;

                <FONT color=Blue>if</FONT> <FONT color=DarkBlue>(</FONT>re2<FONT color=DarkBlue>.</FONT>IsMatch<FONT color=DarkBlue>(</FONT>line<FONT color=DarkBlue>))</FONT>
                {
                  <FONT color=DarkGreen>// fixup region, else remove pragma</FONT>
                  <FONT color=Blue>string</FONT> oldline = line;
                  line = line<FONT color=DarkBlue>.</FONT>Replace<FONT color=DarkBlue>(</FONT><FONT color=Maroon>"#pragma ("</FONT>, <FONT color=Maroon>"#"</FONT><FONT color=DarkBlue>).</FONT>TrimEnd<FONT color=DarkBlue>(</FONT><FONT color=DarkOrange>')'</FONT><FONT color=DarkBlue>)</FONT>;
                  <FONT color=Blue>if</FONT> <FONT color=DarkBlue>(</FONT>line <FONT color=DarkBlue>==</FONT> oldline<FONT color=DarkBlue>)</FONT>
                  {
                    line = <FONT color=Blue>string</FONT><FONT color=DarkBlue>.</FONT>Empty;
                    <FONT color=Blue>continue</FONT>;
                  }
                }
                <FONT color=Blue>else</FONT>
                  <FONT color=Blue>if</FONT> <FONT color=DarkBlue>(</FONT>line<FONT color=DarkBlue>.</FONT>StartsWith<FONT color=DarkBlue>(</FONT><FONT color=Maroon>"#line"</FONT><FONT color=DarkBlue>))</FONT>
                {
                  <FONT color=DarkGreen>// do fixup for src file and line nr, .NET #line are 1 more than C/C++</FONT>
                  line = line<FONT color=DarkBlue>.</FONT>Replace<FONT color=DarkBlue>(</FONT>temp1, longfile<FONT color=DarkBlue>)</FONT>;
                  Match m = l<FONT color=DarkBlue>.</FONT>Match<FONT color=DarkBlue>(</FONT>line<FONT color=DarkBlue>)</FONT>;
                  <FONT color=Blue>int</FONT> oldline = Convert<FONT color=DarkBlue>.</FONT>ToInt32<FONT color=DarkBlue>(</FONT> m<FONT color=DarkBlue>.</FONT>Groups[<FONT color=Maroon>"line"</FONT>]<FONT color=DarkBlue>.</FONT>Value<FONT color=DarkBlue>)</FONT>;
                  line = line<FONT color=DarkBlue>.</FONT>Replace<FONT color=DarkBlue>(</FONT><FONT color=Maroon>" "</FONT> + oldline + <FONT color=Maroon>" "</FONT>, <FONT color=Maroon>" "</FONT> + <FONT color=DarkBlue>++</FONT>oldline + <FONT color=Maroon>" "</FONT><FONT color=DarkBlue>)</FONT>;
                  <FONT color=Blue>continue</FONT>;
                }
                <FONT color=Blue>if</FONT> <FONT color=DarkBlue>(</FONT>line<FONT color=DarkBlue>.</FONT>Trim<FONT color=DarkBlue>().</FONT>Length <FONT color=DarkBlue>==</FONT> <FONT color=Red>0</FONT> <FONT color=DarkBlue>&&</FONT> lastlinewasempty<FONT color=DarkBlue>)</FONT>
                {
                  <FONT color=Blue>continue</FONT>;
                }
                w<FONT color=DarkBlue>.</FONT>WriteLine<FONT color=DarkBlue>(</FONT>line<FONT color=DarkBlue>)</FONT>;
                lastlinewasempty = line<FONT color=DarkBlue>.</FONT>Trim<FONT color=DarkBlue>().</FONT>Length <FONT color=DarkBlue>==</FONT> <FONT color=Red>0</FONT>;
              }
            }
          }

          File<FONT color=DarkBlue>.</FONT>Delete<FONT color=DarkBlue>(</FONT>temp1<FONT color=DarkBlue>)</FONT>;
          File<FONT color=DarkBlue>.</FONT>Delete<FONT color=DarkBlue>(</FONT>temp2<FONT color=DarkBlue>)</FONT>;

        }
        pp<FONT color=DarkBlue>.</FONT>Dispose<FONT color=DarkBlue>()</FONT>;

      }
      <FONT color=Blue>catch</FONT> <FONT color=DarkBlue>(</FONT>Exception ex<FONT color=DarkBlue>)</FONT>
      {
        Console<FONT color=DarkBlue>.</FONT>Error<FONT color=DarkBlue>.</FONT>WriteLine<FONT color=DarkBlue>(</FONT>ex<FONT color=DarkBlue>.</FONT>Message<FONT color=DarkBlue>)</FONT>;
        Environment<FONT color=DarkBlue>.</FONT>Exit<FONT color=DarkBlue>(</FONT><FONT color=Red>1</FONT><FONT color=DarkBlue>)</FONT>;
      }
    }
  }
}



AnswerRe: how to include header file in C# project [modified] Pin
Daniel Dusek7-Jun-06 2:00
Daniel Dusek7-Jun-06 2:00 
Questionsavefiledialog help ? [modified] Pin
cmpeng345-Jun-06 0:34
cmpeng345-Jun-06 0:34 
AnswerRe: savefiledialog help ? Pin
Ed.Poore5-Jun-06 2:15
Ed.Poore5-Jun-06 2:15 
GeneralMessage Closed Pin
5-Jun-06 2:28
cmpeng345-Jun-06 2:28 
GeneralRe: savefiledialog help ? Pin
Dan Neely5-Jun-06 3:32
Dan Neely5-Jun-06 3:32 
Questiondatagridview problem: change cell type ? [modified] Pin
cmpeng345-Jun-06 0:24
cmpeng345-Jun-06 0:24 
AnswerRe: datagridview problem: change cell type ? Pin
RSindia5-Jun-06 0:35
RSindia5-Jun-06 0:35 
QuestionAdding assembly reference Problem Pin
EngHafez5-Jun-06 0:19
EngHafez5-Jun-06 0:19 
AnswerRe: Adding assembly reference Problem Pin
S. Senthil Kumar5-Jun-06 0:53
S. Senthil Kumar5-Jun-06 0:53 
GeneralRe: Adding assembly reference Problem Pin
EngHafez5-Jun-06 1:15
EngHafez5-Jun-06 1:15 
GeneralRe: Adding assembly reference Problem Pin
S. Senthil Kumar5-Jun-06 1:27
S. Senthil Kumar5-Jun-06 1:27 
QuestionAdd Property in Textbox Pin
Pietro Zizzo4-Jun-06 23:51
Pietro Zizzo4-Jun-06 23:51 
AnswerRe: Add Property in Textbox Pin
S. Senthil Kumar5-Jun-06 0:54
S. Senthil Kumar5-Jun-06 0:54 
GeneralRe: Add Property in Textbox Pin
Pietro Zizzo5-Jun-06 21:22
Pietro Zizzo5-Jun-06 21:22 
QuestionHow to obtain DWG file from OLE object? Pin
sahmad5764-Jun-06 23:50
sahmad5764-Jun-06 23:50 
QuestionAccessing a file Pin
kulile4-Jun-06 23:22
kulile4-Jun-06 23:22 
AnswerRe: Accessing a file Pin
rah_sin4-Jun-06 23:58
professionalrah_sin4-Jun-06 23:58 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.