안녕하세요
procedure TForm1.Edit1Change(Sender: TObject);
begin
FindStringGrdStr(StringGrid1, 1, Edit1.Text);
end;
// Col : 검색 컬럼 , FindStr : 찾을 문자열
procedure FindStringGrdStr(StringGrid: TStringGrid; Col: Integer; FindStr: string);
var
i: Integer;
begin
for i := 0 to StringGrid.RowCount - 1 do
if StringGrid.Cells[Col, i] = FindStr then
begin
StringGrid.Row := i;
end;
위와 같이하면 컴파일은 되나 검색은 되지않습니다.
에디트 박스에서 쿼리의 성명 부분 "name" 을 근접검색하는
법 도와주세요
ex) kim 이면 ki,kim.... 으로
오빠들 도와주세여 네..
근접검색에는 이진탐색알고리즘이 많이 쓰입니다. 제일 빠르고 효율적이니까요. 이건 자료구조책
에 찾아보시면 다 나와 있습니다. 또한 근접검색을 하실려면 반드시 정렬되어있어야 합니다.
물론 아래와 같이 for문을 이용한 순차검색알고리즘도 자료가 적을때는 가끔씩 쓰입니다.
procedure FindStringGrdStr(StringGrid: TStringGrid; Col: Integer; FindStr: string);
var
I: integer;
begin
for I := 0 to StringGrid.RowCount - 1 do
if CompareText(FindStr, StringGrid.Cells[Col, I]) < 0 then
begin
StringGrid.Row := I;
Break;
end;
end;
^^ 항상 즐코하세요.
윤미혜 wrote:
> 안녕하세요
> procedure TForm1.Edit1Change(Sender: TObject);
> begin
> FindStringGrdStr(StringGrid1, 1, Edit1.Text);
> end;
>
> // Col : 검색 컬럼 , FindStr : 찾을 문자열
>
> procedure FindStringGrdStr(StringGrid: TStringGrid; Col: Integer; FindStr: string);
> var
> i: Integer;
> begin
> for i := 0 to StringGrid.RowCount - 1 do
> if StringGrid.Cells[Col, i] = FindStr then
> begin
> StringGrid.Row := i;
> end;
> 위와 같이하면 컴파일은 되나 검색은 되지않습니다.
> 에디트 박스에서 쿼리의 성명 부분 "name" 을 근접검색하는
> 법 도와주세요
>
> ex) kim 이면 ki,kim.... 으로
>
> 오빠들 도와주세여 네..
> -