Q&A

  • stream을 공부하고 있어엽.. 아시는 분 좀 도와 주셨으면.....
stream 을 눈으로 보고 싶습니다.
string으로 처리하고 싶다는이야기이죠. 근데..
에공..
전혀 진도를 못빼겠네엽. 좀 도와 주세요.. 플리즈...
흑흑.. 고수님들... 플리즈...
                                                  -- 왕짜초버... --

procedure TForm1.Button1Click(Sender: TObject);
var
    jpeg1: TJpegimage;
    stm : Tstream;
begin
    Stm := TMemoryStream.Create;
    jpeg1 := TJpegimage.Create;
    jpeg1.Assign(image1.Picture.Bitmap);
    jpeg1.SaveToStream(stm);
    Stm.Position := 0;

    richedit1.Lines.Add( ????? );

    FreeandNil(jpeg1);
    FreeandNil(Stm);
end;
7  COMMENTS
  • Profile
    타락천사 2002.03.06 08:07
    안녕하세여.. 타락임다..^^

    이미지 전송수단으로 스트림을 쓰시려는 걸로 보이는군여..^^;;

    제 경험상 스트림은 다루기 구찮구 피곤하더군여..ㅠㅠ

    가령 포맷이 인식자,이미지갯수,이미지,이미지,이미지

    이런식으로 변경된다고 가정해 보세여..ㅠㅠ

    스트림은 구찮습니다..ㅠㅠ

    버퍼를 사용하는 것을 추천합니다..^^ 메모리를 할당해서 쓰는거져..^^

    정신 건강상 더 좋을것이라고 생각합니다..^^

    즐푸하세여..^^

    타락천사..


  • Profile
    깨비 2002.03.06 20:40
    타락님께서 직접 답변을 해주시다니.. 흑흑... 감사..

    버뜨. 전 아직 메모리라면.. 무뇌한이라서.. 메모리라면 먼저 무서움을 떠는 놈이랍니다. 에겅..
    버퍼를 사용하는 것을 추천 해주셨는데. 제가 올린 예제를 바탕으로 간단리 버퍼 사용하는 법좀 가르쳐 주시면 아니되옵니까??

    지금 열시미 델공부하고 있음다.
    물론. 주로 메신저 위주로 공부도 하고 있구요..
    이미지/음성 데이터를 가공을 조금 해서 보내구 받고 하려구요.
    좀 어렵네요... 흐흐..
    좀 도와 주세요..


  • Profile
    타락천사 2002.03.07 08:33
    안녕하세여. 타락임다..^^;;

    예전 기록보며 기억을 떠올려 해보려고 했는데, 안돼네여..ㅠㅠ

    기냥 스트림으로 하는게 편하겠어여..ㅠㅠ

    var
      lszBuffer: array of Byte;
      lnSize : integer = 0;

    procedure TFrmMain.Button1Click(Sender: TObject);
    const
      BufSize = 3000000; // 적당히 잡아준다.
    var
      imgJpeg : TJpegImage;
      strmBuf: TMemoryStream;
    begin
      imgJpeg := TJpegImage.Create;
      strmBuf := TMemoryStream.Create;

      SetLength(lszBuffer, BufSiZe);

      imgJpeg.Assign(imgSrcOne.Picture.Bitmap);
      imgJpeg.Compress;

      imgJpeg.SaveToStream(strmBuf);
      strmBuf.Position := 0;

      // 버퍼에 쓰는 코드..
      lnSize := strmBuf.Read(lszBuffer, BufSize);
      // 이하 생략..

    위와 같이 해서 버퍼에 쓰고, 다시 읽을 때는 TMemoryStream.Write() 함수로 버퍼에서 읽습니다.

    그런데 해보니까, lszBuffer 에 내용이 안써지더군여..ㅠㅠ

    예전엔 어떻게 했는지 모르겠슴다..ㅠㅠ

    몇시간을 끙끙거렸는데, 안 써지네여..ㅠㅠ

    지송함다..^^;;;

    후다다닥~~~~

  • Profile
    깨비 2002.03.06 02:55
    procedure TForm1.Button2Click(Sender: TObject);
    var
        jpeg1: TJpegimage;
        stm : Tstream;
        jpegData: array of char;
        i : Integer;
        str : String;
    begin
        Stm := TMemoryStream.Create;
        jpeg1 := TJpegimage.Create;
        jpeg1.Assign(image1.Picture.Bitmap);
        jpeg1.Compress;
        jpeg1.SaveToStream(stm);
        Stm.Position := 0;
        SetLength(jpegData, Stm.Size);
        Stm.ReadBuffer(jpegData[0], Stm.Size);
        str := '';
        for i := 0 to Stm.Size do
        begin
           str := str + format('%.2x',[ord(jpegData[i])]) + ' ';
           if ((i+1) mod 8)= 0  then str := str + ' ';
           if ((i+1) mod 16)= 0  then str := str + #13#10;
        end;
        rechedit1.text := str;
        FreeandNil(jpeg1);
        FreeandNil(Stm);
    end;

  • Profile
    이준희 2002.03.06 02:21
    음....

    jpeg 파일 포맷은 richedit로 볼 수 없습니다.

    jpeg파일 포맷은 이진데이터 파일로 되어 있어서 어지간한 사람이 봐서는

    (아니 어지간 하더라도...) 볼수 없습니다.  볼수 있더라도 인간이 할 짓은 아니죠

    구지 보고 싶으시다면


          Stm.SaveToFile('FileName.jpg');

    스트림을 위 처럼 저장하고 나서 ultra나 뭐 적당한 에디터로 열어보시면

    됩니다.



  • Profile
    깨비 2002.03.06 02:29
    볼 수 있어요..(프로그래머에게는 기본이죠.. 이진 파일 보는거...
    )
    jpeg 가 데이터 이기 때문에.. 흐흐...
    암튼.. 답변은 고맙습니다.
    버뜨. 저는 jpeg를 프로그램 내부에서 스트링으로 처리 해야하기 때문에
    그게 읽지 못할 이진 값이더라도 읽어야 겠슴다.
    좀 도와 주세요...
    오늘 첨. 스트림을 공부 시작했슴다...
    넘 어렵네요...
    후후...

  • Profile
    이준희 2002.03.06 03:00
    굳이 보시겠다면야...

    그런데 리치에디트는 rtf 포맷이기 때문에 그냥 lines.add 해서는 볼 수 없구요

    edit박스에 넣으시면 왕창 깨진 스트림을 볼 수 있을 겁니다.

    var
      ps : Pchar;

    // 스트림 맨 마지막을 널로 막고
    stm.SetSize(stm.size+1);
    ps := stm.Memory;
    inc(ps,stm.size);
    ps^ := chr(0);
    // 강제로 스트링으로 변환
    edit1.text := strpas(stm.Memory);


    아마 스트림 중간에 null이 있으면 거기서 끊길 겁니다.






    • 김강수
      2002.03.06 10:04
      수고하십니다. 저도 윈95때 부터 아래의 기능을 직접 만들어서 사용을 했는데 결론은 윈9X의 ExitWindows ...
    • 오진욱
      2002.03.06 22:04
      감사합니다. 님께서 해주신 답변을 보고..InitiateSystemShutdown 대신 ExitWindowsEx(EWX_POWEROFF,0); ...
    • 루단스
      2002.03.06 09:08
      예외사항.....? try except end; 이것을 말씀하시는건가요? try    ..    ...
    • 장명선
      2002.03.06 05:13
      이런건 팁쪽에 많이 있는데 함 찾아보는것두 좋을듯 하네요 DestroyWindow( ImmGetDefaultIMEWnd( Handl...
    • 김건림
    • 2002.03.06 03:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • cell
      2002.03.06 04:43
      이곳 예전 질/답란에 있을 꺼에요..... 저도 같은 경우를 당해서 예전에 질문을 했던 기억이 나네요 ...
    • 이은정
    • 2002.03.06 02:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 깨비
      2002.03.06 02:46
      Component를 조금 바꿔 보심이... 소스가 있으니.. 음.. 일단 inputbox라는 함수를 찾아보세요.. 소스...
    • 손창호
    • 2002.03.06 02:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김강수
      2002.03.06 10:08
      New Field를 하셔서 Field Type을 Calculated로 하셔서 테이블 오픈후 불러오는 이벤트 중 OnCalcFields에...
    • 깨비
    • 2002.03.06 02:12
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2002.03.06 08:07
      안녕하세여.. 타락임다..^^ 이미지 전송수단으로 스트림을 쓰시려는 걸로 보이는군여..^^;; 제 경험...
    • 깨비
      2002.03.06 20:40
      타락님께서 직접 답변을 해주시다니.. 흑흑... 감사.. 버뜨. 전 아직 메모리라면.. 무뇌한이라서.. 메모...
    • 타락천사
      2002.03.07 08:33
      안녕하세여. 타락임다..^^;; 예전 기록보며 기억을 떠올려 해보려고 했는데, 안돼네여..ㅠㅠ 기냥 스...
    • 깨비
      2002.03.06 02:55
      procedure TForm1.Button2Click(Sender: TObject); var     jpeg1: TJpegimage; &n...
    • 이준희
      2002.03.06 02:21
      음.... jpeg 파일 포맷은 richedit로 볼 수 없습니다. jpeg파일 포맷은 이진데이터 파일로 되어 있...
    • 깨비
      2002.03.06 02:29
      볼 수 있어요..(프로그래머에게는 기본이죠.. 이진 파일 보는거... ) jpeg 가 데이터 이기 때문에.. 흐...
    • 이준희
      2002.03.06 03:00
      굳이 보시겠다면야... 그런데 리치에디트는 rtf 포맷이기 때문에 그냥 lines.add 해서는 볼 수 없구요 ...
    • 이준희
      2002.03.06 02:48
      FileList를 만들면서 FindClose를 안해주신 것 같군요... FindNext를 위해서 디렉토리를 꽉 잡고 있게 ...
    • 깨비
      2002.03.06 02:23
      일단은..  Appliction.CreateForm 명령어로 해도 문제 없이 원하시는게 되리라 봅니다. 새로운 ...
    • 델.초
      2002.03.06 02:43
      안녕하세요..답변감사드립니다^^ 저기 제가 뛰운 소스가 procedure TForm1.HNewClick(Sender: TObject)...
    • 2002.03.06 02:59
      문제는 Application.CreateForm;의 특성에 있어요. Application.CreateForm;는 MainForm이 nil인 경우에 ...
    • 최경은
    • 2002.03.05 23:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.03.05 23:35
      ///////////////////////////////////////////////////////// procedure TForm1.Button1Click(Sender:...
    • 장명선
      2002.03.05 23:17
      procedure TForm1.MaskEdit5Exit(Sender: TObject); begin MaskEdit5.Text := FormatDateTime('YYYY-MM-D...
    • 김명찬
    • 2002.03.05 22:51
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.03.05 23:15
      DBChart를 이용해보세여 훨씬 쉬어요... 그럼 즐코하세요
    • 김명찬
      2002.03.06 02:38
      님 답변 보고 잘 해결했습니다. 감사합니다. 오류는 아니지만 한가지 문제점이 있어 다시 질문을 합니다....
    • lazenca
    • 2002.03.05 22:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.03.05 23:49
      /////////////////////////// DB오픈후에 아래처럼해보세요 TStringGrid(DBGrid1).ColWidths[3] := 1...
    • 장명선
      2002.03.05 23:12
      각셀의 크기 조절을 자동으로 해주는 것이 없는걸로 알고 있습니다. 입력값이 제일큰것으로 마추는 수밖에...
    • 정진훈
    • 2002.03.05 22:49
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.03.05 23:10
      메뉴에 보면 Component 에서 Install Component에서 등록하시면 됩니다. 그럼 즐코하세여
    • 정진훈
      2002.03.05 23:30
      좀구체적으로 그렇게 해보니 안돼어서그러는데 좀구체적으로 가르져주실수있겠습니까?
    • 김중인
      2002.03.05 23:50
      첫번째로, Package로 되어 있는 Component 인 경우. Component -> Install Packages... -> Add....
    • 송상우
    • 2002.03.05 22:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장지용
      2002.03.05 22:54
      테이블에 있는 필드 크기를 변경하셨군요. 이럴땐 "DataSet" 의 해당 필드 "Size" ...
    • 장명선
      2002.03.05 23:14
      Application.CreateForm(TTestForm,TestForm); TestForm.Show; 이런씩으로 하면 되지 않을까여 ? 즐...
    • 윤정식
      2002.03.06 01:02
      아스키값으로 들어오더라도 숫자인 경우, Char형 숫자가 들어 올것입니다.. 아스키값은 모두 문자형이므로...
    • 장명선
      2002.03.05 23:21
      컴포넌트에 Read 이벤트가 있을겁니다. Read 이벤트가 발생할때 자료를 저장하면 될듯싶네요 그리고 포...
    • 이용수
      2002.03.09 02:33
      저두 허접입니다만 님의 글을 읽다가 혹 제가 알고 있는 부분이 도움이 될까하구여..! 제가 알기론 232통...