Q&A

  • 도와주십시오..하도신기해서..
디비 그리드를 아래로 계속 내리거나 올리면 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;

컴포넌트 자체에서 읽어오는 속도가 느린것인지..

하도 신기해서 디비 익스플로러에서 그 메모필드를 열어 읽어보았더니 어떤 컴포넌트인지 몰라도 번개같이 읽혀지더군요..

그렇게 만들수는 없는지요?

벌써 며칠째 입니다. 쉽게 생각했다가 허벌나게 고생하고 있습니다

고수분들의 조언을 기다리겠습니다.

7  COMMENTS
  • Profile
    이 재원 1999.01.05 16:56
    거시기 TMemo에는 32K Limit이 있는걸로 알고 있는데 혹시 더 큰거 아닌가요?

    글코 크기 Value를 100에서 한 20으로 낯춰 보세요 ?? 거 이상하네... 으음...

  • Profile
    신인재 1998.11.24 02:16
    냥냥....

    쩝...이상하군요......

    디비 익스플로러에서 잘된다면

    델파이 어플에서도 잘되야 정상이거든요...

    음냐...

    메모필드라.....

    Assign메소드를 사용해 보시지요...

    Memo1.Assign(AnyMemoField);

    이런식으로요... BLOB데이타가 제법 많다고 하셨는데

    메모필드 말고도 많이 있다는 말씀인가요...?

    제 생각에 이렇게도 안되면 정말 DB의 문제일꺼 같군요...



    꺄꿍 wrote:

    > 디비 그리드를 아래로 계속 내리거나 올리면 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;

    > 컴포넌트 자체에서 읽어오는 속도가 느린것인지..

    > 하도 신기해서 디비 익스플로러에서 그 메모필드를 열어 읽어보았더니 어떤 컴포넌트인지 몰라도 번개같이 읽혀지더군요..

    > 그렇게 만들수는 없는지요?

    > 벌써 며칠째 입니다. 쉽게 생각했다가 허벌나게 고생하고 있습니다

    > 고수분들의 조언을 기다리겠습니다.





  • Profile
    꺄꿍 1998.11.24 10:22
    신인재 wrote:

    > 냥냥....

    > 쩝...이상하군요......

    > 디비 익스플로러에서 잘된다면

    > 델파이 어플에서도 잘되야 정상이거든요...

    > 음냐...

    > 메모필드라.....

    > Assign메소드를 사용해 보시지요...

    > Memo1.Assign(AnyMemoField);

    > 이런식으로요... BLOB데이타가 제법 많다고 하셨는데

    > 메모필드 말고도 많이 있다는 말씀인가요...?

    > 제 생각에 이렇게도 안되면 정말 DB의 문제일꺼 같군요...

    >

    > 꺄꿍 wrote:

    신인재님 안녕하세요

    답변 감사합니다.. 그런데.. 흑흑.. 역시 안되는 군요..

    다시 며칠을 끙끙거리다 이렇게 글을 올립니다.

    DB는 델파이 3.0의 디폴트 파라독스 입니다.

    디비 화일명은 temp.db 이구요.

    필드는 Subject(제목), Contents(내용) 이렇게 달랑 두가지 입니다.

    Subect의 타입은 Alpha 100자리구요 내용의 타입은 Memo 100자리 입니다.

    그리구 쿼리로 오픈한다음 읽어올땐 신인재 님이 가르켜 주신대로

    memo1.lines.Assign(query1.FieldByName('Contents')); 이렇게..

    제가 틀리게 사용했나요?

    Memo 컴포넌트에 읽혀져 오긴 하는데 역시 PC가 죽은 것 처럼..

    'Contents' 필드에 들어있는 내용은 한글 2~3페이지 정도입니다.

    신인재님 바쁘시겠지만 한번 테스트 안 해보시겠습니까?

    정말 느리게 읽혀집니다. 디비메모도 마찬가지구요..

    디폴트가 느리게 읽혀지는것은 어쩔수 없는 것인가요?

    메모필드에 내용이 많은것이 읽혀질때는 메모컴포넌트에 스크롤바를

    아래로 끌어내리면 글이 거꾸로 올라가는 현상까지 나옵니다.

    온갖 방법을 다 동원해도 실력이 모자라니 안되는군요..

    흑흑.. 정말 처절해서..

    포기해야 하는것인지.. 조언을 부탁드립니다.

  • Profile
    신인재 1998.11.24 22:40
    음냐....

    저두 방법이 없군요....

    이거 받아서 테스트 해보세요..

    실행파일과 소스를 함께 넣었습니다..

    꺄꿍님과 같은 디비 포맷을 쓰고 table, query콤포를

    이용한 예제입니다..그리고 엘리아스도 없습니다.

    디비파일과 어플을 한 디렉토리에 넣고 실행하세요..

    제 컴에서는 무리없이 실행이 되니 이거 실행해 보시고

    여기에서도 문제가 발생된다면

    델파이를 다시 까시던가 BDE쪽을 다시까시던가 하는 방법밖에는

    없겠군요...

    답변이 안되어 죄송합니다....T.T



    P.s 음냐 저희 bbs에 파일 첨부가 안되는 군요...

    이상하다 E-mail로 보내드리지요.....



  • Profile
    이정욱 1998.11.21 14:56
    제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요.

    리치에디트 데이터를 메모로 읽으려고 하면 엄청나게 시간이 많이 걸립니다.

    DBRichEdit을 사용하셔도 되구요, 그냥 Txt포맷으로 데이타들을 바꾼후 하셔도 될것 같네요..

    그럼..



    꺄꿍 wrote:

    > 디비 그리드를 아래로 계속 내리거나 올리면 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;

    > 컴포넌트 자체에서 읽어오는 속도가 느린것인지..

    > 하도 신기해서 디비 익스플로러에서 그 메모필드를 열어 읽어보았더니 어떤 컴포넌트인지 몰라도 번개같이 읽혀지더군요..

    > 그렇게 만들수는 없는지요?

    > 벌써 며칠째 입니다. 쉽게 생각했다가 허벌나게 고생하고 있습니다

    > 고수분들의 조언을 기다리겠습니다.





  • Profile
    꺄꿍 1998.11.22 07:30
    이정욱 wrote:

    > 제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요.

    > 리치에디트 데이터를 메모로 읽으려고 하면 엄청나게 시간이 많이 걸립니다.

    > DBRichEdit을 사용하셔도 되구요, 그냥 Txt포맷으로 데이타들을 바꾼후 하셔도 될것 같네요..

    > 그럼..

    >



    이 정욱님 우선 답변에 감사드립니다.

    그런데.. 제가 불러온 데이타는 디비화일에서 읽어온거거든요.

    필드내용은 필드이름이 Contents 이구요 형은 MEMO 구요 크기는 100으로 정해두었습니다. 저장된 데이타들은 약 600 여건이구요

    처음에 그 디비화일을 디비메모에 연결해서 바로 보여주려니까 너무 읽어오는 시간이 느리더라구요(정말 느림 - 수차례 확인한 결과입니다.) 그래서 이것저것 편법을 써보다가 그냥 메모컴포넌트를 하나 폼위에 올리고 테이블에서 읽어오기로 했지요.그랬더니 마찬가지로 너무 느리더라구요..

    느린 정도가 아예 2분정도 갈때도 있답니다.

    그리구 리치에디터 나 디비리치에디터도 사용해 보았는데 그건

    두배이상이 더 느려서 사용못하겠더라구요.. 흑흑

    지금 사용하고 있는 방법은 저번에 질문했던 대로 하고 있구요

    레코드가 이동될때마다 다시 메모에 읽혀져오게 만들어두었거든요.

    그런데.. 넘 느려서리 죽은거 처럼 보이는 경우가 넘 많아요

    델파이 관련사이트는 다 돌아다니면서 물어보았는데 아무도 가르쳐 주질

    않는군요.. 메모컴포넌트 자체가 문제인가요?

    제가 볼적에는 메모컴포넌트 자체에서 읽어오는 속도가 느린거 같아요..

    이 사태를 어떻게 해결하면 좋을까요? 조언 부탁 드립니다.

  • Profile
    이정욱 1998.11.22 20:40
    현재 사용하시는 DB포맷은 무엇입니까?

    XPower 컴포넌트 트라이얼을 받아서 한번 해보세요..

    그래도 느리면 DB에 문제가 있는것입니다. 아니면 BDE에 문제가...

    XPower는 그림과 메모도 한 그리드 안에서 표현이 가능하거든요...

    일단 테스트 해보세요..



    꺄꿍 wrote:

    > 이정욱 wrote:

    > > 제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요.

    > > 리치에디트 데이터를 메모로 읽으려고 하면 엄청나게 시간이 많이 걸립니다.

    > > DBRichEdit을 사용하셔도 되구요, 그냥 Txt포맷으로 데이타들을 바꾼후 하셔도 될것 같네요..

    > > 그럼..

    > >

    >

    > 이 정욱님 우선 답변에 감사드립니다.

    > 그런데.. 제가 불러온 데이타는 디비화일에서 읽어온거거든요.

    > 필드내용은 필드이름이 Contents 이구요 형은 MEMO 구요 크기는 100으로 정해두었습니다. 저장된 데이타들은 약 600 여건이구요

    > 처음에 그 디비화일을 디비메모에 연결해서 바로 보여주려니까 너무 읽어오는 시간이 느리더라구요(정말 느림 - 수차례 확인한 결과입니다.) 그래서 이것저것 편법을 써보다가 그냥 메모컴포넌트를 하나 폼위에 올리고 테이블에서 읽어오기로 했지요.그랬더니 마찬가지로 너무 느리더라구요..

    > 느린 정도가 아예 2분정도 갈때도 있답니다.

    > 그리구 리치에디터 나 디비리치에디터도 사용해 보았는데 그건

    > 두배이상이 더 느려서 사용못하겠더라구요.. 흑흑

    > 지금 사용하고 있는 방법은 저번에 질문했던 대로 하고 있구요

    > 레코드가 이동될때마다 다시 메모에 읽혀져오게 만들어두었거든요.

    > 그런데.. 넘 느려서리 죽은거 처럼 보이는 경우가 넘 많아요

    > 델파이 관련사이트는 다 돌아다니면서 물어보았는데 아무도 가르쳐 주질

    > 않는군요.. 메모컴포넌트 자체가 문제인가요?

    > 제가 볼적에는 메모컴포넌트 자체에서 읽어오는 속도가 느린거 같아요..

    > 이 사태를 어떻게 해결하면 좋을까요? 조언 부탁 드립니다.





    • 김영
    • 1999.01.19 22:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.20 08:01
      네.. 퀵리포트에 프린터 세팅부분에 버그가 있다고 합니다. 퀵리포트사의 홈페이지로 가셔서 패치를 받으...
    • 문무석
    • 1999.01.16 23:58
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.19 19:41
      Resize시에 Invalidate를 원하시는것인가요? WinProc를 가로채서 사용하시면 될듯 하네요.. 문무석 wro...
    • Trex98
    • 1999.01.15 03:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.21 00:00
      네.. 그러나 3.0에 포함된 인스톨 쉴드에는 BDE배포시 문제가 있다고 합니다. 4.0것은 확인을 해보지는 못...
    • 한스
    • 1999.01.15 02:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.19 19:43
      그것들은 윈도우NT에서 알아서 처리를 해줍니다. 별로 신경을 안쓰셔도 될듯.... 한스 wrote: > > ...
    • 김경수
    • 1999.01.12 05:55
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.01.13 03:55
      음냐~ 많은 도움을 받으셨다니 저희도 기쁩니다. 데이블 오픈은 어디에서나 필요한 곳에서 할 수 있습니...
    • 김경수
      1999.01.13 04:20
      일딴 감사합니다. 이초심자가 실수한건데요.. project /options에서 auto create 부분에 데이타모듈...
    • 심명준
    • 1999.01.11 21:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.01.13 03:52
      클라이언트서버하에서는 클라이언트는 서버의 데이타들을 최악의 경우 왕창 다끌어 오는 경향이 있는데 이...
    • 박구남
    • 1999.01.07 11:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.09 10:49
      receivetext 이벤트의 부분을 보여주세요. 어떻게 코딩을 하셨는지 봐야 알겠습니다. 박구남 wrote: >...
    • 박구남
      1999.01.12 22:05
      아구 해결했네요 제가 개념이 좀 않잡혔던 모양입니다 그런데 receivetext는 있으나 마나하군요 보아하...
    • 구민오
    • 1999.01.06 10:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.07 05:30
      구입하실 수 있습니다. 나이렉스로 전화해 보세요. 521-7900 입니다. 구민오 wrote: > RASAPI에 관한...
    • 이정욱
      1999.01.05 23:34
      프로세스를 금지시킨다는것 보다.. 먼저 데스크탑만한 폼을 하나 생성한 후 , 데스크탑의 그림들을 그대로...
    • 조영우
    • 1999.01.03 00:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.03 02:11
      델파이의 TServerSocket과 TClientSocket을 이용하시면 됩니다. 그 컴포넌트들로 TCP/IP 를 이용하여 서로...
    • 최진숙
    • 1998.12.28 21:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.12.29 00:26
      가능하면 Async의 질문은 나이렉스 고객지원 게시판에 해주시기 바랍니다. TCom의 예제를 보시면 OnProtoc...
    • 이현주
    • 1998.12.25 02:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박현정
      1998.12.25 05:40
      Async의 Comport컴포넌트를 이용하면 현재 시스템에서 사용가능한 comport들을 가져올 수 있습니다. 컴포트...
    • 이정욱
      1998.12.17 08:52
      You can read/write Korean via using HanMe Hangul 95 or UnionWay. It is the Korean Chractors emulati...
    • 최진숙
    • 1998.12.15 00:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신재민
      1998.12.15 19:52
      어떤 종류의 프로그램을 만드시는지, 그리고 어싱크 컴포넌트를 사용하시는지, 좀 더 구체적으로 써주...
    • 이정욱
      1998.12.13 05:29
      네.. 다 맞는 말씀입니다. 한가지만 빼구요.. 델파이는 파스칼에 기반된 언어입니다. 파스칼이 아닙니다...
    • 이상국
      1998.12.17 03:49
      이정욱 wrote: > 네.. 다 맞는 말씀입니다. > 한가지만 빼구요.. > 델파이는 파스칼에 기반된 언어입니...
    • 이정욱
      1998.12.17 08:58
      ^^ 네.. 맞는말씀입니다.. 하지만 인프라이즈사 측에서는 오브젝트 파스칼과는 다른 언어로 생각을 하는것 ...
    • 개장수
      1999.01.05 17:10
      고럼 C++ 은 어찌되는건지요 ? 고것도 C 에서 개발된거 아닌가 ? 으음. 잘 모르겄군요. 하지만 Delphi는 확...
    • 여재모
    • 1998.12.10 19:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.12.11 00:20
      폼을 프린트 하지 마시고 Bitmap을 생성한후에 그 여러개의 이미지를 그 BItmap에 붙이세요. 그런후 그 것...
    • 이정욱
      1998.12.07 21:49
      음.. 정확하게 해보지는 못했습니다. 그런데 이것을 쓰면 어떨까요? FieldValues 예를들면.. Customers...
    • 박성진
      1998.12.09 02:50
      위의 질문을 다시하겠습니다. 마이크로소프트 Access97을 이용해서 데이터베이스를 구축하였습니다. 마이...
    • 꺄꿍
    • 1998.11.21 03:03
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 이 재원
      1999.01.05 16:56
      거시기 TMemo에는 32K Limit이 있는걸로 알고 있는데 혹시 더 큰거 아닌가요? 글코 크기 Value를 100에서 ...
    • 신인재
      1998.11.24 02:16
      냥냥.... 쩝...이상하군요...... 디비 익스플로러에서 잘된다면 델파이 어플에서도 잘되야 정상이거든요...
    • 꺄꿍
      1998.11.24 10:22
      신인재 wrote: > 냥냥.... > 쩝...이상하군요...... > 디비 익스플로러에서 잘된다면 > 델파이 어플에...
    • 신인재
      1998.11.24 22:40
      음냐.... 저두 방법이 없군요.... 이거 받아서 테스트 해보세요.. 실행파일과 소스를 함께 넣었습니다.....
    • 이정욱
      1998.11.21 14:56
      제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요. 리치에디트 데이터를 메모로 읽으려고 ...
    • 꺄꿍
      1998.11.22 07:30
      이정욱 wrote: > 제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요. > 리치에디트 데이터...
    • 이정욱
      1998.11.22 20:40
      현재 사용하시는 DB포맷은 무엇입니까? XPower 컴포넌트 트라이얼을 받아서 한번 해보세요.. 그래도 느리...