전역(Global) 변수로
lineindex, linenumber, line: integer로 선언하였습니다.
그리고, 맨 아래에 적은 것과 같은 함수를 만들어서
버튼을 클릭할 때마다 변수의 값을 증가시키고 싶었습니다.
그리고, linenumber의 값은 폼(form1)이 형성될 때, 미리
edit1의 라인(lines)의 값으로 3이 대입된 상태입니다.
그런데 버튼을 클릭하면 linenumber이 전역 변수임에도 불구하고
그 값이 3에서 1로 바뀝니다. 왜 그런지 모르겠습니다.
버튼을 클릭해도 3이라는 값을 유지하고 싶습니다.
그리고 아래 함수에서 버튼을 클릭할 때마다
lineindex와 line의 값을 증가시키고
싶습니다. 조언을 부탁드립니다.
C언어에서는 포인터를 이용하였는데, 델파이에서는
어떻게 하여야 하는지 모르겠습니다.
델파이 초보자입니다. 여기까지 읽어주셔서 고맙습니다.
procedure TForm1.Button2Click(Sender: TObject);
begin
lineindex := 0;
if (linenumber <= lineindex) then exit
else begin
line:= linenumber-(linenumber-lineindex);
label1.caption:=inttostr(line)+'줄: ';
label2.caption:= edit1.Lines[line];
inc(lineindex);
inc(line);
end;
end;
끝, 고맙습니다.
> 전역(Global) 변수로
> lineindex, linenumber, line: integer로 선언하였습니다.
> 그리고, 맨 아래에 적은 것과 같은 함수를 만들어서
> 버튼을 클릭할 때마다 변수의 값을 증가시키고 싶었습니다.
>
> 그리고, linenumber의 값은 폼(form1)이 형성될 때, 미리
> edit1의 라인(lines)의 값으로 3이 대입된 상태입니다.
> 그런데 버튼을 클릭하면 linenumber이 전역 변수임에도 불구하고
> 그 값이 3에서 1로 바뀝니다. 왜 그런지 모르겠습니다.
> 버튼을 클릭해도 3이라는 값을 유지하고 싶습니다.
>
> 그리고 아래 함수에서 버튼을 클릭할 때마다
> lineindex와 line의 값을 증가시키고
> 싶습니다. 조언을 부탁드립니다.
>
> C언어에서는 포인터를 이용하였는데, 델파이에서는
> 어떻게 하여야 하는지 모르겠습니다.
> 델파이 초보자입니다. 여기까지 읽어주셔서 고맙습니다.
이정환님 안녕하세요?
아래 정환님이 작성하신 코드에서 잘못된 점을 지적해 드릴께요.
보시고, 수정하세요.
procedure TForm1.Button2Click(Sender: TObject);
begin
lineindex := 0; //이 변수는 어떤용도인지 모르나 항상 0 이 됩니다.
if (linenumber <= lineindex) then exit
else
begin //linebumber 가 0 보다 클때 아래를 타게 작성되어 있네요.
line:= linenumber-(linenumber-lineindex); //lineindex가 항상 0 이니
//위에서 line 변수에는 항상 0 이 들어가게 됩니다.
//왜냐면, 자신(linenumber)에서 자신(linenumber)을 뺄셈 연산하므로,
label1.caption:=inttostr(line)+'줄: '; //결과가 '0 줄'이 나오겠군요.
label2.caption:= edit1.Lines[line]; //Edit1의 첫줄이 나오겠네요.
inc(lineindex); //항상 0 인 변수이니 당연히 1이 되겠군요.
inc(line); // 이변수도 마찬가지로 1 이 되겠군요.
end;
end;
> 끝, 고맙습니다.
결론적으로 매번 버튼클릭이 있을때마다 lineindex변수와 line변수는
0에서 한번씩 inc 하게 하셨으니 두 변수다 항상 1 이 됩니다.
이제 원인을 아셨으리라 생각되구요.
그럼.. 즐거운 프로그래밍 되세요~