RichEdit1.Lines[1]의 길이를 Length()함수로 구하였더니,
다음과 같은 문제가 발생하였습니다.
(1) Line의 끝에 enter키 값이 있을 때와
예) This is a school.(enter) ->RichEdit1.Lines[1]
(2) Line의 끝에 enter키 값이 없이 다음 Line과 연결될 때
예) This is a (여기에는 enter 값이 없음) ->RichEdit1.Lines[1]
school.(여기에서 enter) ->RichEdit1.Lines[2]
위의 예에서 (1) 번의 Line 길이를 Length() 함수로
구하여 'T' 'h' 'i' 등등으로 읽었더니 아무 문제가 없는데,
(2)번의 Line 길이를 (1)번과 같은 방법으로 구하여
읽었더니 라인의 끝에서 "EAccessViolation" 에러가 발생합니다.
라인의 끝에 enter 값이 없을 때 어떤 값이 들어가는지 궁금하고,
EAccessViolation 에러를 어떻게 처리할 수 있는지 궁금합니다.
Length()의 리턴 값이 (1)과 (2)에서 어떻게 차이가 있는지요.
고맙습니다.
> RichEdit1.Lines[1]의 길이를 Length()함수로 구하였더니,
> 다음과 같은 문제가 발생하였습니다.
>
> (1) Line의 끝에 enter키 값이 있을 때와
> 예) This is a school.(enter) ->RichEdit1.Lines[1]
> (2) Line의 끝에 enter키 값이 없이 다음 Line과 연결될 때
> 예) This is a (여기에는 enter 값이 없음) ->RichEdit1.Lines[1]
> school.(여기에서 enter) ->RichEdit1.Lines[2]
>
> 위의 예에서 (1) 번의 Line 길이를 Length() 함수로
> 구하여 'T' 'h' 'i' 등등으로 읽었더니 아무 문제가 없는데,
>
> (2)번의 Line 길이를 (1)번과 같은 방법으로 구하여
> 읽었더니 라인의 끝에서 "EAccessViolation" 에러가 발생합니다.
>
> 라인의 끝에 enter 값이 없을 때 어떤 값이 들어가는지 궁금하고,
> EAccessViolation 에러를 어떻게 처리할 수 있는지 궁금합니다.
> Length()의 리턴 값이 (1)과 (2)에서 어떻게 차이가 있는지요.
>
> 고맙습니다.
>
>
이정환님 안녕하세요?
저는 잘 되는 걸요?
혹시, RichEdit의 라인이 10 라인이라면
RichEdit.Lines[10] 이라고 쓰신것은 아닌지요?
첨자는 0 부터 시작하기 때문에 마지막 라인은 9가 됩니다.
그리고, 궁금해 하시는 Enter에는 0A0D(16진수)가 들어가게 됩니다.
라인을 내리고, 컬럼의 가장앞으로 가게하는 제어 문자입니다.
그리고, 아래처럼 테스트 해보세요.
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
for i:= 0 to RichEdit1.Lines.Count -1 do
ShowMessage( IntToStr(Length(RichEdit1.Lines[i])) );
end;
바로 쓴글이라 오타가 있을수 있습니다.
그럼.. 즐거운 프로그래밍 되세요~