델파이 초보자 인데.. 문자열에서 공백문자를 삭제하고 싶은데잘 안되네염.
개발 환경은 델파이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.
답변 부탁 드립니다. 그럼 수고하세염.. 꾸벅..
곰곰히 생각해보세요.
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.
>
> 답변 부탁 드립니다. 그럼 수고하세염.. 꾸벅..
>