::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-04 20:58:26, Hit : 4279, Vote : 1161
 wild card(*,?)문자와 일치

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

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

var
  Form1: TForm1;

implementation
{$R *.DFM}

function MatchStrings(source, pattern: String): Boolean;
  function MatchPattern(element, pattern: PChar): Boolean;
    function IsPatternWild(pattern: PChar): Boolean;
    var
      t: Integer;
    begin
      Result := StrScan(pattern,'*') <> nil;
      if not Result then Result := StrScan(pattern,'?') <> nil;
    end;
  begin
    if 0 = StrComp(pattern,'*') then
      Result := True
    else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then
      Result := False
    else if element^ = Chr(0) then
      Result := True
    else
    begin
      case pattern^ of
      '*': if MatchPattern(element,@pattern[1]) then
             Result := True
           else
             Result := MatchPattern(@element[1],pattern);
      '?': Result := MatchPattern(@element[1],@pattern[1]);
      else
        if element^ = pattern^ then
          Result := MatchPattern(@element[1],@pattern[1])
        else
          Result := False;
      end;
    end;
  end;

var
  pSource: Array [0..255] of Char;
  pPattern: Array [0..255] of Char;
begin
  StrPCopy(pSource,source);
  StrPCopy(pPattern,pattern);
  Result := MatchPattern(pSource,pPattern);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if MatchStrings(E_string.Text, E_pattern.Text) then
    ShowMessage('패턴이 일치합니다')
  else
    ShowMessage('패턴이 일치하지 않습니다');
end;

end.





171   [시스템] Thread 사용하기  김영대 2003/03/07 4412 1196
170   [COM/OLE] 윈도우즈 "인터넷 등록 정보" 화면  김영대 2004/07/25 4399 1363
169   [일반/컴포넌트] 폼이 생성되고 종료될때 폼의 이벤트 처리순서  김영대 2003/03/05 4399 1154
168   [윈도우즈 API] 레지스트리 전체 검색하기  김영대 2003/03/07 4396 1180
167   [데이터베이스] BDE 버전정보  김영대 2003/03/04 4391 1237
166   [일반/컴포넌트] INI 파일이 저장을 안 해?  김영대 2003/03/05 4383 1158
165   [일반/컴포넌트] 표준 TListBox 에 Radio 버튼 올리기  김영대 2004/07/27 4373 1187
164   [일반/컴포넌트] 숫자를 영문 표기로 바꾸기  김영대 2003/03/07 4371 929
163   [일반/컴포넌트] ComboBox 를 강제로 드롭시키기  김영대 2003/03/05 4368 1162
162   [일반/컴포넌트] 프로그램 종료시 도움말 화면 닫기  김영대 2003/03/05 4366 1186
161   [일반/컴포넌트] OnActivate 이벤트 내에서 폼 확실히 닫기  김영대 2003/03/07 4360 1120
160   [윈도우즈 API] 키보드의 Scroll Lock 켜기/끄기  김영대 2003/03/07 4354 1171
159   [일반/컴포넌트] 숫자의 근사치 구하기  김영대 2003/03/07 4351 1162
158   [데이터베이스] 동적으로 SELECT의 GROUP BY 문 만들기  김영대 2003/03/07 4351 974
157   [일반/컴포넌트] 레지스트리의 기본 RootKey 바꾸기  김영대 2003/03/05 4345 1299
156   [시스템] CPU speed 구하기 2  김영대 2003/03/07 4344 1217
155   [일반/컴포넌트] 특정한 폴더로 이동한 DOS 창 띄우기  김영대 2003/03/07 4340 1158
154   [일반/컴포넌트] TEdit의 OnChange에서 Text 바꾸기  김영대 2003/03/04 4340 1253
153   [일반/컴포넌트] C & Pascal 데이터 타입 비교  김영대 2003/03/05 4339 1163
152   [시스템] Boot Drive 찾기  김영대 2003/03/04 4334 1278
151   [일반/컴포넌트] 윈도우즈"시작" 버튼위에 글씨 쓰기  김영대 2004/07/24 4332 1187
150   [일반/컴포넌트] 주어진 문자열에 잘못된 숫자값이 들어있는지 검사  김영대 2003/03/04 4330 1248
149   [일반/컴포넌트] 문자열 찾아서(Search) 바꾸기(Replace)  김영대 2003/03/04 4323 1277
148   [윈도우즈 API] Menu가 open되어 있는지 검사하기  김영대 2003/03/04 4319 1311
147   [일반/컴포넌트] ListBox에서 마우스 이동시 아이템을 힌트로 보여주기  김영대 2003/03/27 4313 1145
146   [데이터베이스] 테이블,인덱스 복사하기  김영대 2003/03/07 4310 1479
145   [윈도우즈 API] Memo 에 임의의 tab stops 설정하기  김영대 2003/03/04 4309 1361
144   [윈도우즈 API] Taskbar 의 위치 추적하기  김영대 2004/07/24 4298 1105
143   [데이터베이스] dBase 테이블의 삭제된 레코드 보기  김영대 2003/03/07 4296 1153
142   [멀티미디어] wave파일 연주  김영대 2003/03/04 4296 1236
141   [일반/컴포넌트] Form의 Caption 에서의 Click 알아내기  김영대 2003/04/01 4287 1064
140   [시스템] Keyboard Hook  김영대 2003/03/07 4285 931
139   [일반/컴포넌트] Memo의 입력행수 제한하기  김영대 2003/03/07 4282 1202
138   [일반/컴포넌트] 연속된 키보드의 키 발생시키기  김영대 2003/03/07 4282 1155
  [일반/컴포넌트] wild card(*,?)문자와 일치  김영대 2003/03/04 4279 1161
136   [일반/컴포넌트] 커서(캐럿)가 line 위에 있는지 검사하기  김영대 2003/03/07 4277 1130
135   [일반/컴포넌트] Global exception handler 만들기  김영대 2003/03/05 4270 1139
134   [일반/컴포넌트] 폼의 형태 바꾸기  김영대 2003/03/05 4266 1130
133   [시스템] Hint의 폰트 바꾸기  김영대 2003/03/05 4262 1213
132   [데이터베이스] 데이타베이스 로그인(login) 화면 띄우기  김영대 2003/03/07 4260 1055

[이전 10개] [1].. 21 [22][23][24][25]
 

Copyright 1999-2024 Zeroboard / skin by zero