Q&A

  • [급]문자판별함수가???
델파이 함수중

숫사인지 문자인지 판별해 주는 함수 가 있나요..

제가 사용하려는 것은

문자일경우만 오류 메세지를 뿌리려 하거든요..



물론 정수와 실수는 true

계산할수 없는 문자는 false로



부탁합니다



2  COMMENTS
  • Profile
    홍성락 2001.09.08 22:56
    心國 wrote:

    > 델파이 함수중

    > 숫사인지 문자인지 판별해 주는 함수 가 있나요..

    > 제가 사용하려는 것은

    > 문자일경우만 오류 메세지를 뿌리려 하거든요..

    >

    > 물론 정수와 실수는 true

    > 계산할수 없는 문자는 false로

    >

    > 부탁합니다

    ///////////////////////////////////////////////////////////////////

    문론 함수를 만드는 것도 있습니다만 사용방법에 따라 여러가지를 해보는게

    효율적일겁니다. 아래 예를 몇가지 들겠지만 워낙 방법이 많은지라 조금 참조하십시요.

    -------------------------------------------------------------------------

    1.계산식이 많은곳에서의 사용방법 try ~ except ~ end;

    try

    SUM := StrToFloat(i) + StrToInt(j); //그냥 변환함수를 쓰세요

    ...................

    except

    showmessage('위 수식중 잘못된 값이 있습니다');

    Exit;

    end;

    -------------------------------------------------------------------------

    2.변수를 일일이 체크해서 해당 변수계산만 제외하려할고 나머진 계산하려할때

    function으로 만드는방법 3가지

    -------------------

    1번 델파이의 좋은함수 Val사용-잘못된위치까지잡아냄

    function StrIntCheck(jisu:string) : Boolean;

    var

    I : double;

    ErrorCode: Integer;

    begin

    Result := True;

    Val(jisu, I, ErrorCode);

    if ErrorCode <> 0 then begin

    Result := False;

    showmessage(jisu + ' 값중' + intTostr(ErrorCode) + '번째가 숫자가 아닙니다');

    end;

    end;



    -------------------

    2번:에러 이용(실행시에 시스템에러메세지 막음)

    function StrIntCheck(jisu:string) : Boolean;

    begin

    Result := True;

    try

    StrToFloat(jisu);

    except

    Result := False;

    end;

    end;



    --------------------

    3번(디버깅시도 막음 조금 지루하고 부호나 점등의 위치를 마음데로할때는 잡아내지못함)

    function StrIntCheck(jisu:string) : Boolean;

    var

    i : integer;

    begin

    Result := True;

    if jisu = '' then begin

    Result := False;

    Exit;

    end;

    for i := 1 to Length(jisu) do begin

    if not(jisu[i] in ['0','1','2','3','4','5','6','7','8','9','.','-']) then

    begin

    Result := False;

    Exit;

    end;

    end;

    end;

  • Profile
    이성훈 2001.09.08 21:13
    제가 전에 만든 허접한 함수가 있습니다.

    그냥 쓰시면 될겁니다..

    그럼 즐프하세요...



    function CheckReal(str: string): Boolean;

    type TNumericDigits = set of char;

    var i, err: integer;

    sNumericDigits: TNumericDigits;

    Chr: Array[0..1] Of Char;

    begin

    err := 0;



    sNumericDigits := ['.','0'..'9'];



    for i:=1 to Length(str) do

    begin

    StrPCopy(Chr, Copy(str, i, 1));



    if (Chr[0] in sNumericDigits) then

    err := 0

    else begin

    err := 1;

    Break;

    end;

    end;



    if (err = 0) then

    Result := True

    else Result := False;

    end;



    心國 wrote:

    > 델파이 함수중

    > 숫사인지 문자인지 판별해 주는 함수 가 있나요..

    > 제가 사용하려는 것은

    > 문자일경우만 오류 메세지를 뿌리려 하거든요..

    >

    > 물론 정수와 실수는 true

    > 계산할수 없는 문자는 false로

    >

    > 부탁합니다

    >