⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headconv.dpr

📁 C++ 头文件转换为Delphi接口文件的工具.zip
💻 DPR
字号:
{******************************************************************}
{                                                                  }
{       Dr. Bob's Head Converter Utility Command Line Version      }
{ 			                                           }
{ Copyright (C) 1997-2002 Bob Swart (A.K.A. Dr. Bob).   	   }
{                                                                  }
{ Contributor(s): Alan C. Moore (acmdoc@aol.com)                   }
{                                                                  }
{                                                                  }
{ Obtained through:                                                }
{ Joint Endeavour of Delphi Innovators (Project JEDI)              }
{                                                                  }
{ You may retrieve the latest version of this file at the Project  }
{ JEDI home page, located at http://delphi-jedi.org                }
{ Maintained by the Project JEDI DARTH Team; To join or to report  }
{ bugs, contact Alan C. Moore at acmdoc@aol.com                    }
{                                                                  }
{ The contents of this file are used with permission, subject to   }
{ the Mozilla Public License Version 1.1 (the "License"); you may  }
{ not use this file except in compliance with the License. You may }
{ obtain a copy of the License at                                  }
{ http://www.mozilla.org/MPL/MPL-1.1.html                          }
{                                                                  }
{ Software distributed under the License is distributed on an      }
{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or   }
{ implied. See the License for the specific language governing     }
{ rights and limitations under the License.                        }
{                                                                  }
{******************************************************************}

program HeadConv;
{$A+,B-,C-,D-,E-,F-,G-,H-,I-,L-,N-,O+,P-,Q-,R-,S-,T-,V-,X-}
{$IFNDEF MSDOS}
  {$APPTYPE CONSOLE}
{$ENDIF}
uses
  HeadPars;

const
  VerDate = '2000/09/17';
  Version = 28;
  Changes: Array[0..Version+1] of String[60] = (
    '3.00 - 97/10/03 - first HeadConv command-line edition!',
    '3.01 - 97/10/10 - generate only "dynamic" import units',
    '3.02 - 97/10/13 - 3rd pass: convert all ": P" to "var"',
    '3.03 - 97/10/13 - 3rd pass: don''t do 3.02 for "PChar"s',
    '3.04 - 97/10/14 - skip list of un-needed pointer types',
    '3.05 - 97/10/15 - add a real typename to "_1" typedefs',
    '3.06 - 97/10/15 - adjust the indentation (2) for types',
    '3.07 - 97/10/15 - make "DLLHandle" of the THandle type',
    '3.08 - 97/10/15 - 3rd pass: skip 3.02 within all types',
    '3.09 - 97/10/16 - fixed problem with arrays and spaces',
    '3.10 - 97/10/17 - fixed the typedef "_" prefix problem',
    '3.11 - 97/10/17 - added multiple typedef names support',
    '3.12 - 97/10/17 - added LPWSTR -> PWideChar conversion',
    '3.13 - 97/11/03 - Pointer doesn''t become "var :ointer"',
    '3.14 - 97/11/04 - "cdecl" and optional win32 "stdcall"',
    '3.15 - 97/11/04 - accepting a "void *" function result',
    '3.16 - 97/11/07 - fixed a bug in comments for typedefs',
    '3.17 - 97/11/11 - skip used comments in implementation',
    '3.18 - 97/11/12 - added argument -o to force overwrite',
    '3.19 - 97/11/12 - fixed problem with multiple typedefs',
    '3.20 - 97/11/12 - suspend after __DR_BOB_HEADCONV_STOP',
    '                  restart with __DR_BOB_HEADCONV_START',
    '3.21 - 97/11/13 - GetProcAddress case-sensitive import',
    '3.22 - 97/11/14 - Assert around GetProcAddress results',
    '3.23 - 97/11/14 - Created "procedure LoadDLL" for init',
    '3.24 - 97/11/21 - re-introduced "static" import units!',
    '3.25 - 98/04/12 - fixed a rare "type" conversion issue',
    '4.00 - 99/07/17 - final HeadConv command-line edition!',
    '4.01 - 00/09/17 - HeadConv command-line units edition!',
    '4.02 - 01/12/17 - HeadConv refactored by Alan C. Moore');
const
  Arguments = 3;
  {!ACM -- Seems like these choices should go in a Wizard? }
  Argument: Array[0..Arguments] of String[62] = (
    'Command-line Arguments:',
    '  -o to force overwrite of pascal unit on disk'#13,
    '  -x to force generation of eXplicit import unit (dynamic)',
    '  -m to force generation of iMplicit import unit (static)');

var
  i: Integer;

begin
  if (ParamCount < 1) or (Pos('?',ParamStr(1)) > 0) then
  begin
    writeln;
    writeln('*** HeadConv 4.01 (c) ',VerDate,' by Bob Swart (aka Dr.Bob - www.drbob42.com) ***');
    writeln('    FINAL DELPHI-JEDI COMMANDLINE EDITION');
    writeln;
    if ParamCount > 0 then
    begin
      writeln(' ':4,'version  date     comments');
      writeln(' ':4,'==========================----------------------------');
      for i:=0 to Version+1 do writeln(' ':4,Changes[i]);
      writeln
    end;
    writeln('Usage: HeadConv filename');
    writeln('  will generate the explicit (dynamic) Delphi import unit,');
    writeln('  where filename.H is the C DLL header file.');
    writeln;
    for i:=0 to Arguments do writeln(Argument[i]);
    writeln;
    writeln('Example: HeadConv SAMPLE -o');
    writeln;
    writeln;
    write('Hit <enter> to continue...');
    readln;
  end
  else
    case HeadConvert(ParamStr(1),((ParamStr(2) <> '-m') and
                                  (ParamStr(3) <> '-m') and
                                  (ParamStr(4) <> '-m'))) of
      1: writeln('Error: could not open header file!');
      2: writeln('Error: output file already exists!')
    end
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -