亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wrap.cpp

?? 用于oracle開發用于查詢數據庫編寫存儲過
?? CPP
字號:
// PL/SQL Developer Plug-In demo
// Copyright 1999 Allround Automations
// support@allroundautomations.nl
// http://www.allroundautomations.nl

// This demo shows the use of some basic functions in a practical plug-In that
// implements a wrap function.
// The selected object in the Browser will be saved as a text file and "wrapped"

//---------------------------------------------------------------------------
#include <vcl.h>
#include <registry.hpp>
#pragma hdrstop
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
  return 1;
}
//---------------------------------------------------------------------------
// The three basic export functions
extern "C"
{
  __declspec(dllexport) char* IdentifyPlugIn(int);
  __declspec(dllexport) char* CreateMenuItem(int);
  __declspec(dllexport) void  RegisterCallback(int, void *);
  __declspec(dllexport) void  OnMenuClick(int);
  __declspec(dllexport) void  OnActivate();
  __declspec(dllexport) void  OnBrowserChange();
}

// Description of this Plug-In (as displayed in Plug-In configuration dialog)
char *const Desc = "Wrap demo version 1.0";
int  PlugInID;
AnsiString WrapExe = "";

// Declaration of PL/SQL Developer callback functions

// We want to save and restore the directory in the registry
char* (*SYS_Registry)();
// We need to search the wrap executable in ORACLE_HOME\bin
char* (*SYS_OracleHome)();

// The menu item will only be enabled if a program unit is selected in the Browser
void  (*IDE_MenuState)(int ID, int Index, BOOL Enabled);
// The currently selected object in the Browser is the one that will be wrapped
void  (*IDE_GetBrowserInfo)(char **ObjectType, char **ObjectOwner, char **ObjectName);

// To retrieve the source from the database, we need to query sys.all_source
int   (*SQL_Execute)(char *SQL);
BOOL  (*SQL_Eof)();
int   (*SQL_Next)();
char* (*SQL_Field)(int Field);
//---------------------------------------------------------------------------
// Determine the name for a temporary file
AnsiString TempFilename()
{
  char Path[144];

  GetTempPath(sizeof(Path), Path);
  return (AnsiString)Path + "wrap.tmp";
}
//---------------------------------------------------------------------------
// Determine the Wrap executable. If more than one is present, use the most
// recent one
void GetWrapExe()
{
  AnsiString Path;
  TSearchRec SearchRec;
  int TimeStamp;
  int Error;

  Path = (AnsiString)SYS_OracleHome() + "bin\\";
  Error = FindFirst(Path + "wrap*.exe", faArchive, SearchRec);
  TimeStamp = 0;
  while (Error == 0)
  {
    if (SearchRec.Time > TimeStamp)
    {
      WrapExe = Path + SearchRec.Name;
      TimeStamp = SearchRec.Time;
    }
    Error = FindNext(SearchRec);
  }
  FindClose(SearchRec);
}
//---------------------------------------------------------------------------
// Save the currently selected program unit to a temporary file
BOOL SaveProgramUnit()
{
  char *ObjectType, *ObjectOwner, *ObjectName;
  int Error;
  AnsiString SQL;
  TStringList *Source;
  AnsiString Line;
  BOOL Result;

  // Determine what object is selected in the Browser
  IDE_GetBrowserInfo(&ObjectType, &ObjectOwner, &ObjectName);
  // Build a select statement to retrieve the source
  SQL = Format("select text from sys.all_source"
               " where type = '%s' and owner = '%s' and name = '%s'"
               " order by line", ARRAYOFCONST((ObjectType, ObjectOwner, ObjectName)));
  // Execute the select statement and retrieve all source lines
  Source = new TStringList;
  Error = SQL_Execute(SQL.c_str());
  while ((Error == 0) && (!SQL_Eof()))
  {
    Line = TrimRight(SQL_Field(0));
    // Add the 'create or replace' syntax on the first line
    if (Source->Count == 0) Line = "create or replace " + Line;
    Source->Add(Line);
    Error = SQL_Next();
  }
  Result = (Error == 0);
  if (!Result)
    ShowMessage("SQL error " + IntToStr(Error));
  else
  {
    try
    {
      // Save the text to a temporary file
      Source->SaveToFile(TempFilename());
    }
    catch (Exception &E)
    {
      ShowMessage(E.Message);
      Result = False;
    }
  }
  delete Source;
  return Result;
}
//---------------------------------------------------------------------------
// Determine the destination file name
AnsiString GetDestination()
{
  char *ObjectType, *ObjectOwner, *ObjectName;
  TSaveDialog *SaveDialog;
  TRegistry *Registry;
  AnsiString LastDir;
  AnsiString Result;

  // Determine the last used directory, as stored in the regitsry
  Registry = new TRegistry;
  Registry->RootKey = HKEY_CURRENT_USER;
  if (Registry->OpenKey((AnsiString)SYS_Registry() + "\\WrapPlugIn", TRUE))
    LastDir = Registry->ReadString("LastDir");
  else
    LastDir = "";
  // Determine the object name, to be used as a default filename
  IDE_GetBrowserInfo(&ObjectType, &ObjectOwner, &ObjectName);
  // Create a dialog to ask for a destination filename
  SaveDialog = new TSaveDialog(NULL);
  // Set various properties of the SaveDialog
  SaveDialog->Title      = "Save wrapped output file as";
  SaveDialog->DefaultExt = "plb";
  SaveDialog->Filter     = "Wrapped files (*.plb)|*.plb|All files (*.*)|*.*";
  SaveDialog->InitialDir = LastDir;
  SaveDialog->FileName   = AnsiLowerCase(ObjectName);
  SaveDialog->Options    << ofOverwritePrompt;
  // Execute it
  if (!SaveDialog->Execute())
    Result = "";
  else
  {
    // Save the destination directory in the registry
    Result = SaveDialog->FileName;
    Registry->WriteString("LastDir", ExtractFilePath(Result));
  }
  delete Registry;
  return Result;
}
//---------------------------------------------------------------------------
// Wrap the program unit currently selected in the Browser
void WrapIt()
{
  AnsiString WrapCommand;
  AnsiString Destination;

  // Check if we can actually wrap
  if (WrapExe == "")
  {
    ShowMessage("Wrap executable not found in " + (AnsiString)SYS_OracleHome() + "bin");
//    Exit;
  }
  // Ask for the destination filename
  Destination = GetDestination();
  // If successful, continue
  if (!Destination.IsEmpty())
  {
    // Save the currently selected program unit to a temporary file
    if (SaveProgramUnit())
    {
      // If successfully saved, execute the wrap command
      WrapCommand = Format("%s iname=""%s"" oname=""%s""", ARRAYOFCONST((WrapExe, TempFilename(), Destination)));
      WinExec(WrapCommand.c_str(), SW_NORMAL);
    }
  }
}
//---------------------------------------------------------------------------
// Plug-In identification, a unique identifier is received and
// the description is returned
char* IdentifyPlugIn(int ID)
{
  PlugInID = ID;
  return Desc;
}
//---------------------------------------------------------------------------
// Registration of PL/SQL Developer callback functions
void RegisterCallback(int Index, void *Addr)
{
  switch (Index)
  {
    case 2 :
      (void *)SYS_Registry = Addr;
      break;
    case 4 :
      (void *)SYS_OracleHome = Addr;
      break;
    case 10 :
      (void *)IDE_MenuState = Addr;
      break;
    case 13 :
      (void *)IDE_GetBrowserInfo = Addr;
      break;
    case 40 :
      (void *)SQL_Execute = Addr;
      break;
    case 42 :
      (void *)SQL_Eof = Addr;
      break;
    case 43 :
      (void *)SQL_Next = Addr;
      break;
    case 44 :
      (void *)SQL_Field = Addr;
      break;
  }
}
//---------------------------------------------------------------------------
// Creating a menu item
char* CreateMenuItem(int Index)
{
  switch (Index)
  {
    case 1 : return "Tools / &Wrap program unit...";
  }
  return "";
}
//---------------------------------------------------------------------------
// Depending on the selected object in the Browser, enable/disable the menu item
void OnBrowserChange()
{
  char *ObjectType, *ObjectOwner, *ObjectName;
  BOOL Enabled;

  IDE_GetBrowserInfo(&ObjectType, &ObjectOwner, &ObjectName);
  Enabled = (StrComp(ObjectType, "FUNCTION") == 0) ||
            (StrComp(ObjectType, "PROCEDURE") == 0) ||
            (StrComp(ObjectType, "PACKAGE") == 0) ||
            (StrComp(ObjectType, "PACKAGE BODY") == 0) ||
            (StrComp(ObjectType, "TRIGGER") == 0) ||
            (StrComp(ObjectType, "TYPE") == 0) ||
            (StrComp(ObjectType, "TYPE BODY") == 0);
  IDE_MenuState(PlugInID, 1, Enabled);
}
//---------------------------------------------------------------------------
// When the Plug-In gets activated, call OnBrowserChange to de/activate the menu
void OnActivate()
{
  GetWrapExe();
  OnBrowserChange();
}
//---------------------------------------------------------------------------
// The menu item got selected
void OnMenuClick(int Index)
{
  switch (Index)
  {
    case 1 :
      WrapIt();
      break;
  }
}
//---------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久综合狠狠综合久久| 亚洲高清三级视频| 高清不卡一区二区在线| 久久婷婷国产综合国色天香 | 亚洲三级免费观看| 成人av资源站| 亚洲第一综合色| 日韩欧美黄色影院| 国产99久久久久久免费看农村| 中文字幕成人网| 色又黄又爽网站www久久| 亚洲成av人片在www色猫咪| 91精品国产91热久久久做人人| 久久99精品国产麻豆不卡| 久久久久国产精品人| 99久久精品国产一区二区三区| 亚洲在线一区二区三区| 欧美大片一区二区| av中文字幕不卡| 亚洲国产精品久久久男人的天堂 | 五月天久久比比资源色| 日韩精品一区二区三区在线观看| 国产成人午夜精品影院观看视频 | 成人一级黄色片| 亚洲国产wwwccc36天堂| 久久一夜天堂av一区二区三区| 成年人网站91| 免费成人在线影院| 亚洲乱码一区二区三区在线观看| 欧美一级搡bbbb搡bbbb| 99视频国产精品| 美女视频黄 久久| 亚洲免费毛片网站| 欧美mv日韩mv国产网站app| 99久久免费精品| 国产揄拍国内精品对白| 亚洲国产成人tv| 国产精品看片你懂得| 日韩欧美中文一区| 欧美网站大全在线观看| 粉嫩av亚洲一区二区图片| 天堂成人免费av电影一区| 国产精品麻豆视频| 日韩免费在线观看| 欧美日韩免费不卡视频一区二区三区| 国产麻豆视频精品| 日韩高清不卡在线| 一区二区成人在线视频 | 日韩一区欧美一区| 久久色.com| 91麻豆精品久久久久蜜臀| 色综合久久久久综合99| 国产a久久麻豆| 韩国精品主播一区二区在线观看| 亚洲第一成年网| 尤物在线观看一区| 中文字幕亚洲综合久久菠萝蜜| 久久婷婷久久一区二区三区| 欧美美女一区二区在线观看| av不卡免费在线观看| 国产一区二区三区免费在线观看 | 亚洲欧美日韩系列| 中文文精品字幕一区二区| 久久亚洲精品国产精品紫薇| 日韩一级高清毛片| 7777精品伊人久久久大香线蕉超级流畅| zzijzzij亚洲日本少妇熟睡| 国产成人在线视频网站| 国产在线精品不卡| 国产精品一区二区你懂的| 久久激五月天综合精品| 日韩av不卡在线观看| 日韩国产欧美三级| 青青草国产成人99久久| 老司机免费视频一区二区三区| 美女国产一区二区三区| 精品在线一区二区| 国产一区二区精品久久91| 国产一区二区三区观看| 国产传媒欧美日韩成人| 国产a精品视频| 99久久婷婷国产综合精品| 99国产精品久久| 欧美综合天天夜夜久久| 欧美人与z0zoxxxx视频| 91麻豆精品国产| 欧美大片拔萝卜| 亚洲精品一区在线观看| 国产欧美视频一区二区三区| 中文字幕不卡在线播放| 亚洲同性gay激情无套| 一区二区三区不卡在线观看| 亚洲国产日韩a在线播放性色| 日本不卡在线视频| 韩国女主播成人在线| 国产成人综合网| 一本色道久久综合亚洲91| 欧美色偷偷大香| 日韩欧美国产1| 国产精品视频线看| 一个色综合网站| 美女国产一区二区| 成人av影院在线| 欧美日韩高清在线| 久久精品人人爽人人爽| 中文字幕亚洲综合久久菠萝蜜| 亚洲成人av中文| 国产精品一区二区男女羞羞无遮挡 | 久久久一区二区三区捆绑**| 亚洲欧洲国产日本综合| 肉肉av福利一精品导航| 国产精品77777竹菊影视小说| 不卡欧美aaaaa| 91精品国产综合久久婷婷香蕉| 国产人成亚洲第一网站在线播放| 亚洲精品一二三四区| 麻豆国产欧美一区二区三区| 成人中文字幕合集| 91精品午夜视频| 亚洲欧美视频在线观看视频| 日韩成人av影视| 99精品视频在线观看| 777色狠狠一区二区三区| 亚洲国产电影在线观看| 丝袜美腿亚洲一区| av在线不卡电影| 精品久久久久香蕉网| 亚洲无人区一区| 99re这里只有精品6| 2020国产精品| 丝袜诱惑制服诱惑色一区在线观看| 国产99久久久精品| 日韩你懂的在线播放| 亚洲成精国产精品女| 成人午夜av影视| 久久久亚洲精华液精华液精华液| 一二三区精品福利视频| 成人一道本在线| 久久免费看少妇高潮| 蜜臀av一区二区| 欧美伦理影视网| 亚洲一区在线免费观看| av中文字幕一区| 国产色综合久久| 久久国产精品99精品国产 | 久久爱www久久做| 欧美日韩激情一区二区| 亚洲三级视频在线观看| 成人精品鲁一区一区二区| 欧美成人精品1314www| 日韩国产欧美一区二区三区| 欧美专区在线观看一区| 亚洲男人都懂的| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 福利电影一区二区| 久久综合av免费| 激情欧美日韩一区二区| 欧美一级片在线| 奇米精品一区二区三区四区 | 制服丝袜成人动漫| 视频在线观看一区二区三区| 欧美专区日韩专区| 亚洲麻豆国产自偷在线| 91欧美激情一区二区三区成人| 国产精品久久一级| 成人高清在线视频| 日韩毛片视频在线看| 91日韩在线专区| 亚洲高清久久久| 欧美一区二区免费视频| 久草这里只有精品视频| 久久久www免费人成精品| 国产精品一区专区| 国产精品嫩草影院av蜜臀| 91色乱码一区二区三区| 亚洲国产一二三| 51精品国自产在线| 久久av资源网| 中文字幕精品综合| 91丨国产丨九色丨pron| 一区二区久久久| 日韩欧美视频一区| 国产一区二区不卡| 亚洲天堂中文字幕| 在线精品视频免费播放| 欧美a一区二区| 国产日韩高清在线| 色婷婷激情一区二区三区| 午夜精品福利在线| ww亚洲ww在线观看国产| 成人动漫一区二区在线| 亚洲一二三级电影| www精品美女久久久tv| 91视频精品在这里| 日产国产欧美视频一区精品| 国产亚洲制服色| 欧美性色aⅴ视频一区日韩精品| 日韩av在线发布| 成人欧美一区二区三区小说| 欧美理论电影在线|