디비 그리드를 아래로 계속 내리거나 올리면 BLOB필드에 데이타가 제법 많이 들어있는 경우 데이타 셋에 연결된 DBmemo 로 메모필드에 있는 데이타가 읽혀지는 속도가 너무 느려서 PC가 죽은것 처럼 가만히 있는 경우가 계속 생깁니다.
메모필드에 들어있는 내용은 고작 한글 2~3페이지 입니다.
그런데도 어떤 데이타는 아예 읽어오지도 못하는 군요. 그리고 메모컴포넌트는
memo1.lines.text := query1.FieldByName('Contents').asstring;
memo1.lines.strings[0] := query1.FieldByName('Contents').asstring;
이렇게 해도 다운되는거 같은 현상은 마찬가지 였고,
스트림을 이용해서 읽어보아도 마찬가지로 로딩되는 속도가 엄청 느립니다. T.T 아래처럼 사용했습니다.
Stream := TBlobStream.Create(query1.FieldByName('Contents') as TBlobField, bmRead);
try
Size := Stream.Seek(0, 2);
Stream.Seek(0, 0);
Inc(Size);
GetMem(Buffer, Size);
try
FillChar(Buffer^, Size, #0);
Stream.Read(Buffer^, Size);
Memo1.SetTextBuf(Buffer);
finally
FreeMem(Buffer, Size);
end;
finally
Stream.Free;
end;
컴포넌트 자체에서 읽어오는 속도가 느린것인지..
하도 신기해서 디비 익스플로러에서 그 메모필드를 열어 읽어보았더니 어떤 컴포넌트인지 몰라도 번개같이 읽혀지더군요..
그렇게 만들수는 없는지요?
벌써 며칠째 입니다. 쉽게 생각했다가 허벌나게 고생하고 있습니다
고수분들의 조언을 기다리겠습니다.
글코 크기 Value를 100에서 한 20으로 낯춰 보세요 ?? 거 이상하네... 으음...