::: µ¨ÆÄÀÌ Tip&Trick :::

µ¨ÆÄÀÌ Tip&Trick ¼º°Ý¿¡ ¸ÂÁö ¾Ê´Â ±¤°í,ºñ¹æ,Áú¹®ÀÇ ±ÛÀº Áï½Ã »èÁ¦Çϸç
³»¿ëÀ» º¹»çÇÏ¿© »ç¿ëÇÒ °æ¿ì ¹Ýµå½Ã À̰÷(http://www.howto.pe.kr)À» Ãâó·Î ¸í½ÃÇÏ¿© ÁÖ¼¼¿ä


Category

  ±è¿µ´ë(2003-03-06 21:04:28, Hit : 3422, Vote : 825
 ¼³Ä¡µÈ BDE Language Drivers ±¸Çϱâ

// ¼³Ä¡µÈ Borland Database Engine(BDE) ÀÇ language driver ¸®½ºÆ®¸¦
// TComboBox·Î Àоî¿À´Â ¿¹Á¦ÀÔ´Ï´Ù

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, db, DBTables, DbiProcs, DbiTypes, DbiErrs;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

procedure GetLangDrivers(pLangList: TStrings);
var
  Rslt: DBIResult;  // BDE¿¡ ÀÇÇØ ¸®ÅÏµÈ °ªÀ» ÀúÀå
  hCur: hDBICur;    // cursor handle ÇÚµé
  LD: LDDesc;       // Language Driver Descriptor (LDDesc)
  weinit: Boolean;  // BDE°¡ ÃʱâÈ­µÇ¾î ÀÖ´ÂÁöÀÇ flag
  i, cnt: Integer;
begin
  weinit := False;
  pLangList.Clear;

  try
    // PC¿¡ ¼³Ä¡µÇ¾î ÀÖ´Â language driver ÀÇ ¸®½ºÆ®¸¦ ¿¬´Ù
    // listÀÇ °ªÀ» ÂüÁ¶ÇÏ·Á¸é DbiGetNextRecord(), DbiGetCursorProps() À» »ç¿ëÇÕ´Ï´Ù
    // °¢ °ªÀº LDDesc ±¸Á¶Ã¼·Î ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù
    // hCur´Â ÀÌ ±¸Á¶Ã¼ ¸®½ºÆ®ÀÇ cursor handle
    Rslt := DbiOpenLdList(hCur);

    if Rslt = DBIERR_NOTINITIALIZED then // ÃʱâÈ­ ¿¡·¯
    begin
      // BDE¸¦ ÃʱâÈ­ ÇÑ´Ù
      Rslt := DbiInit(nil);

      // Check()´Â BDE ÇÔ¼öµé¿¡ ÀÇÇØ ¸®ÅÏµÈ °ªÀÌ ¿¡·¯ÄÚµå(DBIERR_NONE ÀÌ¿ÜÀÇ)À̸é
      // DbiError exceptionÀ» °­Á¦·Î ¹ß»ý½Ãŵ´Ï´Ù
      // ¾Æ·¡ "except on E:EDBEngineError do"¿¡ °É¸®°ÚÁÒ...
      Check(Rslt);

      // BDE¸¦ ÃʱâÈ­ Çߴٴ ǥ½Ã
      weinit := True;

      // ´Ù½Ã PC¿¡ ¼³Ä¡µÇ¾î ÀÖ´Â language driver ÀÇ ¸®½ºÆ® ¿­±â¸¦ ½Ãµµ
      Rslt := DbiOpenLdList(hCur); // hCur´Â ÀÌ ±¸Á¶Ã¼ ¸®½ºÆ®ÀÇ cursor handle
      Check(Rslt);
    end;

    // ¿¡·¯ ¸Þ½ÃÁö
    if Rslt <> DBIERR_NONE then
    begin
      // ´õ ¸¹Àº ¿¡·¯°¡ ÀÖÁö¸¸ ¸î°¡Áö¸¸ º¸¿©ÁÜ
      case Rslt of
        DBIERR_NOSUCHTABLE:
          ShowMessage('DBIERR_NOSUCHTABLE');
        DBIERR_TABLEOPEN:
          ShowMessage('DBIERR_TABLEOPEN');
        DBIERR_INVALIDHNDL:
          ShowMessage('DBIERR_INVALIDHNDL');
        else
          ; // not used
      end;
    end
    else
    begin
      // °¢ language driverÀÇ LDDesc ±¸Á¶Ã¼¿¡¼­ ÇÊ¿äÇÑ Á¤º¸¸¦ Àд´Ù
      DbiGetRecordCount(hCur, cnt); // cursor handleÀÇ °¹¼ö(language driverÀÇ °¹¼ö)
      for i := 0 to cnt-1 do
      begin
        // LDDesc (language driver descriptor)
        //   Field                 Type     Description
        //   ---------------------------------------------------------------------
        //   szName                DBINAME  Specifies the driver's symbolic name.
        //   szDesc                DBINAME  Specifies the driver description.
        //   iCodePage             UINT16   Specifies the code page number.
        //   PrimaryCpPlatform     UINT16   Unused.
        //   AlternateCpPlatform   UINT16   Unused.
        DbiGetNextRecord(hCur, dbiNOLOCK, @LD, nil);
        pLangList.Add(LD.szDesc); // driver description¸¸ Àоî¿Â´Ù
      end;
    end;

    // DbiOpenLdList()·Î ±¸Çß´ø cursor handle À» ´Ý´Â´Ù
    Check(DbiCloseCursor(hCur));

    // ¸¸¾à BDE¸¦ ÃʱâÈ­ µÇ¾ú´Ù¸é À̸¦ ´Ý´Â´Ù
    if weinit = True then
      Check(DbiExit());

  except on E:EDBEngineError do
    begin
      Check(DbiCloseCursor(hCur));
      if weinit = True then
        Check(DbiExit());
    end;
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
  oldcursor: TCursor;
begin
  // ComboBox controlÀº °¢ item¿¡ º¯°æÀÌ »ý±æ¶§¸¶´Ù ¸Å¹ø ´Ù½Ã ±×¸®±â¸¦
  // ÇϹǷΠredraw¼Óµµ°¡ ´À¸³´Ï´Ù
  // WM_SETREDRAW ¸Þ½ÃÁö¸¦ ComboBox control¿¡ º¸³»¾î redraw¸¦ Àá½Ã ¸ÕÃß°Ô ÇÑ ÈÄ
  // ´Ù½Ã WM_SETREDRAW ¸¦ º¸³»¾î Çѹø¸¸ ±×¸®±â¸¦ ÇÕ´Ï´Ù
  // ÇÏÁö¸¸ ComboBox´Â ÀÌ·¯ÇÑ ¿ªÇÒÀ» ÇÏ´Â BeginUpdate, EndUpdate ¸Þ¼Òµå¸¦
  // °¡Áö°í ÀÖ½À´Ï´Ù
  ComboBox1.Items.BeginUpdate;
  ComboBox1.Sorted := False;
  ComboBox1.Clear;

  oldcursor := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  try
    GetLangDrivers(ComboBox1.Items);
  finally
    ComboBox1.Items.EndUpdate;
    Screen.Cursor := oldcursor;
  end;

  ComboBox1.Sorted := True;
  ComboBox1.Items.EndUpdate;
  if ComboBox1.Items.Count > 0 then
    ComboBox1.ItemIndex := 0;
  Screen.Cursor := oldcursor;
end;

end.





691   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ListView ÀÇ Ä÷³º°·Î Sort (³»¸²Â÷¼ø Æ÷ÇÔ)  ±è¿µ´ë 2003/03/05 5175 1098
690   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¸í·ÉÇà ÀÎÀÚ ¹Þ¾Æ¿À±â  ±è¿µ´ë 2003/03/05 7195 1882
689   [³×Æ®¿÷/ÀÎÅͳÝ] List of raw FTP commands  ±è¿µ´ë 2003/03/05 7228 1894
688   [³×Æ®¿÷/ÀÎÅͳÝ] RFC: Request for Comments  ±è¿µ´ë 2003/03/05 7749 2039
687   [³×Æ®¿÷/ÀÎÅͳÝ] À©µµ¿ìÁî ¼ÒÄÏÀÇ ¿¡·¯¹øÈ£¿¡ ´ëÇÑ ¼³¸í  ±è¿µ´ë 2003/03/05 7803 2701
686   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÆÄÀÏÀÇ ÇØºÎ  ±è¿µ´ë 2003/03/05 6343 1694
685   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ListBoxÀÇ ½ºÅ©·Ñ¹Ù¸¦ ¿òÁ÷¿©º¸ÀÚ  ±è¿µ´ë 2003/03/05 4483 1095
684   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] PopupMenuÀÇ Æ¯Á¤ MenuItemÀ¸·Î À̵¿ÇÏ±â  ±è¿µ´ë 2003/03/05 2891 779
683   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] µ¥½ºÅ©Å¾ÀÇ ¾ÆÀÌÄÜÀ» ¸ù¶¥ ¿òÁ÷¿©º¸ÀÚ!!  ±è¿µ´ë 2003/03/05 6392 1897
682   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¸¶¿ì½ºÄ¿¼­¸¦ ƯÁ¤À§Ä¡·Î À̵¿½ÃŰ±â  ±è¿µ´ë 2003/03/05 5798 1210
681   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] Á¦¾îÆÇÀÇ applet ¶ç¿ì±â  ±è¿µ´ë 2003/03/05 2836 759
680   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] INI ÆÄÀÏÀÌ ÀúÀåÀ» ¾È ÇØ?  ±è¿µ´ë 2003/03/05 4082 1086
679   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¸¶¿ì½º¿µ¿ª Á¦¾îÇÏ±â  ±è¿µ´ë 2003/03/05 3605 978
678   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¸®½ºÆ®ºä¿¡¼­ µ¿ÀûÀ¸·Î Ä®·³»èÁ¦ÇÏ±â  ±è¿µ´ë 2003/03/05 5235 1405
677   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] Interesting Delphi Keystrokes !  ±è¿µ´ë 2003/03/05 3595 1063
676   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] Application ¼öÁØ¿¡¼­ ÇѱÛ/¿µ¹® Á¦ÇÑµÎ±â  ±è¿µ´ë 2003/03/05 5993 1854
675   [µ¥ÀÌÅͺ£À̽º] dBASE Table File Extensions  ±è¿µ´ë 2003/03/05 4592 1296
674   [µ¥ÀÌÅͺ£À̽º] Paradox Table File Extensions  ±è¿µ´ë 2003/03/05 3654 1033
673   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÆÄÀÏÀÇ ¼Ó¼º(Attribute) Àбâ / ¹Ù²Ù±â  ±è¿µ´ë 2003/03/05 4033 1048
672   [µ¥ÀÌÅͺ£À̽º] DBGrid ¿¡¼­ ¼öÁ÷ Scroll Bar °¨Ãß±â  ±è¿µ´ë 2003/03/05 4633 1266
671   [À©µµ¿ìÁî API] ÀÎÅÍ³Ý ¸µÅ© ¸¸µé±â  ±è¿µ´ë 2003/03/06 4553 1271
670   [³×Æ®¿÷/ÀÎÅͳÝ] ³» PCÀÇ IPÁÖ¼Ò´Â ?  ±è¿µ´ë 2003/03/06 5277 1229
669   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¹®ÀÚ¿­ÀÇ ¾Ïȣȭ(Password ó¸®) & INI ÆÄÀÏ  ±è¿µ´ë 2003/03/06 6277 1488
668   [À©µµ¿ìÁî API] À©µµ¿ìÀÇ Å¸ÀÌÆ²¹Ù¸¦ ¾ø¾Öº¸ÀÚ!  ±è¿µ´ë 2003/03/06 4444 1355
667   [À©µµ¿ìÁî API] Ŭ¸³º¸µåÀÇ ³»¿ëÀ» TXT ÆÄÀÏ¿¡ ´ã¾Æº¸ÀÚ!  ±è¿µ´ë 2003/03/06 6313 1760
666   [½Ã½ºÅÛ] ÇÁ·Î¼¼¼­¸¦ »ý¼º½ÃÄѺ¸ÀÚ!  ±è¿µ´ë 2003/03/06 4552 1210
665   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] µ¨ÆÄÀÌÀÇ Object Inspector ¸ð¹æ  ±è¿µ´ë 2003/03/06 3584 825
664   [½Ã½ºÅÛ] ½Ã½ºÅÛÀÇ °¢Á¾ Á¤º¸  ±è¿µ´ë 2003/03/06 7529 1306
663   [µ¥ÀÌÅͺ£À̽º] DBGrid ƯÁ¤ Cell¿¡ »ö»ó³Ö±â  ±è¿µ´ë 2003/03/06 7695 1582
662   [µ¥ÀÌÅͺ£À̽º] DBGrid ÀÇ Æ¯Á¤Çʵ常 Highlighting ½ÃŰ±â  ±è¿µ´ë 2003/03/06 4652 1140
661   [COM/OLE] How to register an OCX  ±è¿µ´ë 2003/03/06 4995 1171
660   [À©µµ¿ìÁî API] "Windows Á¤º¸" About È­¸é »ç¿ëÇÏ±â  ±è¿µ´ë 2003/03/06 6437 1985
659   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¹®ÀÚ¿­¿¡ ÇѱÛÀÌ ÀÖ´ÂÁö °Ë»ç  ±è¿µ´ë 2003/03/06 3840 980
658   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TColor°ªÀ» 16Áø¼ö ¹®ÀÚ¿­·Î ¹Ù²Ù±â  ±è¿µ´ë 2003/03/06 6144 1774
657   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] È­¸éº¯°æ½Ã ÄÞÆ÷³ÍÆ® À§Ä¡¿Í Å©±â¸¦ Á¶Á¤  ±è¿µ´ë 2003/03/06 4623 1128
656   [½Ã½ºÅÛ] ¸¶¿ì½º Æ÷ÀÎÅÍ ¼Óµµ ±¸ÇÏ±â  ±è¿µ´ë 2003/03/06 5461 1715
655   [½Ã½ºÅÛ] ¸¶¿ì½º Æ÷ÀÎÅÍ ¼Óµµ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/06 4951 1251
654   [½Ã½ºÅÛ] ¸¶¿ì½º ÀÚÃë(trails)ÀÇ °¹¼ö Á¶Á¤ÇÏ±â  ±è¿µ´ë 2003/03/06 5816 1838
653   [½Ã½ºÅÛ] ¸¶¿ì½º µÎ ¹ø ´©¸£±â ¼Óµµ Á¶Á¤ÇÏ±â  ±è¿µ´ë 2003/03/06 5875 1827
  [µ¥ÀÌÅͺ£À̽º] ¼³Ä¡µÈ BDE Language Drivers ±¸ÇÏ±â  ±è¿µ´ë 2003/03/06 3422 825

[1][2][3][4][5][6][7] 8 [9][10]..[25] [´ÙÀ½ 10°³]
 

Copyright 1999-2022 Zeroboard / skin by zero