안녕하세여..헤임달입니다..
text로입력받은 6개의 데이터를 버퍼에 저장할려고합니다..
여기서 4개는 한번 입력하면 20번째까지 똑같고 두가지만 1에서 20까지, A,B,C 이렇게 변하게됩니다..
그래서 한번 입력했을때 그 데이터들을 버퍼에 저장하는데여..
확인해보니까 이상한값들이 찍힙니다..
에러는 안나는데..어디가 어떻게 잘못된건지 모르겠네여..
흑흑..알려주세여..
procedure TForm1.Button1Click(Sender: TObject);
var
j, k:integer;
Buf1, buf2, buf3, buf4, buf5, buf6 : pChar;
BufSize1, bufsize2, bufsize3, bufsize4, bufsize5, bufsize6 : integer;
begin
k:=strtoint(edit3.text);
for j:=k to 20 do begin
BufSize1 := Edit1.GetTextLen;
Buf1 := AllocMem(BufSize1);
Edit1.GetTextBuf(Buf1, BufSize1);
FreeMem(Buf1, BufSize1);
BufSize2 := Edit2.GetTextLen;
Buf2 := AllocMem(BufSize2);
Edit2.GetTextBuf(Buf2, BufSize2);
FreeMem(Buf2, BufSize2);
BufSize3 := Edit3.GetTextLen;
buf3 := AllocMem(BufSize3);
Edit3.GetTextBuf(Buf3, BufSize3);
FreeMem(Buf3, BufSize3);
BufSize4 := combobox1.GetTextLen;
Buf4 := AllocMem(BufSize4);
combobox1.GetTextBuf(Buf4, BufSize4);
FreeMem(Buf4, BufSize4);
BufSize5 := combobox2.GetTextLen;
Buf5 := AllocMem(BufSize5);
combobox2.GetTextBuf(Buf5, BufSize5);
FreeMem(Buf5, BufSize5);
// 여기서 필요한 작업을 한다
case (j mod 3) of
1 : begin
BufSize6 := combobox3.GetTextLen;
Buf6 := AllocMem(BufSize6);
combobox3.GetTextBuf(Buf6, BufSize6);
FreeMem(Buf6, BufSize6);
end;
2 : begin
combobox3.text:='B';
BufSize6 := combobox3.GetTextLen;
Buf6 := AllocMem(BufSize6);
combobox3.GetTextBuf(Buf6, BufSize6);
FreeMem(Buf6, BufSize6);
end;
0 : begin
combobox3.text:='C';
BufSize6 := combobox3.GetTextLen;
Buf6 := AllocMem(BufSize6);
combobox3.GetTextBuf(Buf6, BufSize6);
FreeMem(Buf6, BufSize6);
end;
end;
memo1.Lines.Add(buf1);
memo1.Lines.Add(buf2);
memo1.Lines.Add(buf3);
memo1.Lines.Add(buf4);
memo1.Lines.Add(buf5);
memo1.Lines.Add(buf6);
end;
end;
예를 들어보죠...
AllocMem // 파일을 연다...
Buf := 어떤값 // 파일에 쓴다.
FreeMem // 파일을 삭제한다.
변수 := Buf // 파일에서 읽어온다. 근데 파일이 어디갔지???
뭔 말인지 아시겠져?
^^ 항상 즐코하세요.
heimdal wrote:
> 안녕하세여..헤임달입니다..
> text로입력받은 6개의 데이터를 버퍼에 저장할려고합니다..
> 여기서 4개는 한번 입력하면 20번째까지 똑같고 두가지만 1에서 20까지, A,B,C 이렇게 변하게됩니다..
> 그래서 한번 입력했을때 그 데이터들을 버퍼에 저장하는데여..
> 확인해보니까 이상한값들이 찍힙니다..
> 에러는 안나는데..어디가 어떻게 잘못된건지 모르겠네여..
> 흑흑..알려주세여..
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> j, k:integer;
> Buf1, buf2, buf3, buf4, buf5, buf6 : pChar;
> BufSize1, bufsize2, bufsize3, bufsize4, bufsize5, bufsize6 : integer;
> begin
>
> k:=strtoint(edit3.text);
> for j:=k to 20 do begin
> BufSize1 := Edit1.GetTextLen;
> Buf1 := AllocMem(BufSize1);
> Edit1.GetTextBuf(Buf1, BufSize1);
> FreeMem(Buf1, BufSize1);
>
> BufSize2 := Edit2.GetTextLen;
> Buf2 := AllocMem(BufSize2);
> Edit2.GetTextBuf(Buf2, BufSize2);
> FreeMem(Buf2, BufSize2);
>
> BufSize3 := Edit3.GetTextLen;
> buf3 := AllocMem(BufSize3);
> Edit3.GetTextBuf(Buf3, BufSize3);
> FreeMem(Buf3, BufSize3);
>
> BufSize4 := combobox1.GetTextLen;
> Buf4 := AllocMem(BufSize4);
> combobox1.GetTextBuf(Buf4, BufSize4);
> FreeMem(Buf4, BufSize4);
>
> BufSize5 := combobox2.GetTextLen;
> Buf5 := AllocMem(BufSize5);
> combobox2.GetTextBuf(Buf5, BufSize5);
> FreeMem(Buf5, BufSize5);
>
> // 여기서 필요한 작업을 한다
>
> case (j mod 3) of
> 1 : begin
> BufSize6 := combobox3.GetTextLen;
> Buf6 := AllocMem(BufSize6);
> combobox3.GetTextBuf(Buf6, BufSize6);
> FreeMem(Buf6, BufSize6);
> end;
>
> 2 : begin
> combobox3.text:='B';
> BufSize6 := combobox3.GetTextLen;
> Buf6 := AllocMem(BufSize6);
> combobox3.GetTextBuf(Buf6, BufSize6);
> FreeMem(Buf6, BufSize6);
> end;
>
> 0 : begin
> combobox3.text:='C';
> BufSize6 := combobox3.GetTextLen;
> Buf6 := AllocMem(BufSize6);
> combobox3.GetTextBuf(Buf6, BufSize6);
> FreeMem(Buf6, BufSize6);
> end;
> end;
> memo1.Lines.Add(buf1);
> memo1.Lines.Add(buf2);
> memo1.Lines.Add(buf3);
> memo1.Lines.Add(buf4);
> memo1.Lines.Add(buf5);
> memo1.Lines.Add(buf6);
> end;
> end;