Q&A

  • 스트링에서 문자삭제... [시스템 에러]
델파이 초보자 인데.. 문자열에서 공백문자를 삭제하고 싶은데잘 안되네염.

개발 환경은 델파이6.0 이구여, OS는 Window2000서버 입니다.

로직상에는 에러가 없는데... 실행 시키면 에러가 나네염..



function TExchange.SpaceDel(str:String):String;

var

l, i, t : integer;

S : String;

Begin

t := length(Str);

l := 0;

i := 1;

While i <= t do

Begin

i:= i+1;

if Str[i] <> ' ' then

Begin

l := l + 1;

S[l] := Str[i]; <---------------- //에러나는 부분

End;

End;

Result := S;

End;



에러 내용

Project chang_go.exe raised exception class EAccessViolation with message 'Access volation at address 0049369E in module 'chang_go.exe'. Write of adress 00000000'.Process stopped. Use Step or Run to continue.



답변 부탁 드립니다. 그럼 수고하세염.. 꾸벅..



2  COMMENTS
  • Profile
    스파토이 2001.09.19 04:10


    곰곰히 생각해보세요.



    S는 문자형이라고만 정의됐는데...



    그러니까, 밥그릇의 크기는 정의 안됐는데.. 쑤셔 넣을라고 하니까...



    에러가 생기는게 아닐까 싶은데요.



    자유지역 wrote:

    > 델파이 초보자 인데.. 문자열에서 공백문자를 삭제하고 싶은데잘 안되네염.

    > 개발 환경은 델파이6.0 이구여, OS는 Window2000서버 입니다.

    > 로직상에는 에러가 없는데... 실행 시키면 에러가 나네염..

    >

    > function TExchange.SpaceDel(str:String):String;

    > var

    > l, i, t : integer;

    > S : String;

    > Begin

    > t := length(Str);

    > l := 0;

    > i := 1;

    > While i <= t do

    > Begin

    > i:= i+1;

    > if Str[i] <> ' ' then

    > Begin

    > l := l + 1;

    > S[l] := Str[i]; <---------------- //에러나는 부분

    > End;

    > End;

    > Result := S;

    > End;

    >

    > 에러 내용

    > Project chang_go.exe raised exception class EAccessViolation with message 'Access volation at address 0049369E in module 'chang_go.exe'. Write of adress 00000000'.Process stopped. Use Step or Run to continue.

    >

    > 답변 부탁 드립니다. 그럼 수고하세염.. 꾸벅..

    >

  • Profile
    자유지역 2001.09.19 04:19
    델파이 에서는 동적배열을 자동으로 확장시켜 주는줄 알았는데..

    그렇지 않더군여..

    답변 감사드립니다... 꾸벅..