Q&A

  • 파일암호화....제발 부탁드립니다...ㅠ.ㅠ
파일을 바이너리로 읽어들여서 xor만 걸어줘서 암호화 하려고 하는데요...
바이너리 파일을 읽어들여서 배열에 xor를 이용하여 저장하기만 하면 되거든요..
여기저기 모아서 아래와 같이 코딩은 했는데...
fileBuffer[j] := fileBuffer[j] Xor 11 Xor 13  여기서 계속 에러가 나네요...
물론 이부분을 주석처리하면 피어있는 파일은 생성되구요...
암호화해서 파일을 생성해야 되는데 꼭좀 알료주세요...
토욜인데..아직 회사에서 이거 하구 있네요...
집에좀 보내주세요 ...ㅠ.ㅠ

===========코딩내용================

var
  i, readBytes : integer;
  j : LongInt;
  myfile, myfile2 : file;
  fileBuffer : array of byte;

begin

  SearchDirectory(특정폴더의 파일을 검색하여 리스트박스에 저장);  //파일검색 프로시져호출
  for i := 0 to listbox1.Items.Count - 1 do
    begin
      assignfile(myfile,listbox1.Items.Strings[i]);  <==리스트박스에는 경로명과 파일명 모두 저장되어 있습니다.
      reset(myfile,1);
      while not eof(myfile) do
        begin
          blockread(myfile,fileBuffer,sizeof(fileBuffer),readbytes);   <==여기서 sizeof는 무슨역할을 하는지..궁금.
        end;  //while

      for j := 0 to readbytes - 1 do
        begin
          fileBuffer[j] := fileBuffer[j] Xor 11 Xor 13;     <===== 이부분
        end;  //for
      closefile(myfile);

      assignfile(myfile2,listbox1.Items.Strings[i]+'.sec');   <== sec라는 새로운 확장자로 저장해 줍니다...
      rewrite(myfile2);
      blockWrite(myfile2,fileBuffer,readBytes);
      closefile(myfile2);

    end;  //for

end;
5  COMMENTS
  • Profile
    최용일 2002.10.07 12:50
    안녕하세요. 최용일입니다.

    동적배열 쓰셨는데... 메모리 할당하고 해제하는 부분이 없네요...

    그리고 파일에서 자료를 읽어오실때에는 동적배열은 사용하시지 않으시는 것이 좋을듯 하네요... 동적배열은 그냥 일반 배열하고 완전히 차원이 다른 자료형입니다. 흔히들 동적으로 생성하는거 빼놓고는 같다고 생각하시지만...

    그냥 배열의 포인터를 쓰세요...

    SizeOf는 자료형의 메모리상에서 차지하는 크기를 돌려주는 함수입니다.

    예)
    SizeOf(FileBuffer) = 4 // FileBuffer=>PFileBuffer=>Pointer
    SizeOf(FileBuffer^) = 65536 // FileBuffer^=>TFileBuffer
    SizeOf(TFileBuffer) = 65536
    SizeOf(Integer) = 4
    SizeOf(j) = 4 // j => integer
    SizeOf(Word) = 2

    type
      PFileBuffer = ^TFileBuffer;
      TFileBuffer = array[0..65535] of byte;
    var
        I, ReadBytes: Integer;
        J: LongInt;
        MyFile, MyFile2: file;
        FileBuffer : PFileBuffer;
    begin
        GetMem(FileBuffer, SizeOf(TFileBuffer)); // 65536만큼 메모리 할당

        //SearchDirectory(특정폴더의 파일을 검색하여 리스트박스에 저장);
        for I := 0 to ListBox1.Items.Count - 1 do
        begin
          AssignFile(MyFile, ListBox1.Items.Strings[I]);
          Reset(MyFile,1);

          AssignFile(MyFile2, ListBox1.Items.Strings[I]+'.sec');
          Rewrite(MyFile2);

          while not Eof(MyFile) do
          begin
              BlockRead(MyFile, FileBuffer^, SizeOf(TFileBuffer), ReadBytes);

              for J := 0 to ReadBytes - 1 do
              begin
                    FileBuffer[J] := FileBuffer[J] Xor 11 Xor 13;
              end;  //for

              BlockWrite(MyFile2, FileBuffer^, ReadBytes);
          end;  //while

          CloseFile(MyFile);
          CloseFile(MyFile2);
        end;

        FreeMem(FileBuffer);
    end;

    ^^ 항상 즐코하세요...

  • Profile
    김동완 2002.10.07 19:04
    제가 워낙 초짜라서...죄송...-_-;
    최용일님께서 알려주신 방법대로...
    다시 코딩해 봤는데요...
    SizeOf에서 에러가 나네요...
    프로시져 바로밑에 선언해 줬거든요...
    위치가 틀린건지...아님 uses절에 무언가를 추가해 줘야 되는건지...
    다시한번만 부탁드릴께요...
    sizeof를 빼버리고 하니깐 i/o 에러가 나더군요...ㅠ.ㅠ
    답변주셔서 다시한번 감사드리고요...
    좋은하루되세요...^^
    넘 몰라서 죄송합니다.

  • Profile
    최용일 2002.10.07 19:47
    안녕하세요. 최용일입니다.

    어떤 에러가 난다는 말씀이신지??? 테스트 다 해보고 올린건데...

    SizeOf는 델파이 표준함수인데 뭘 선언해주셨다는 말씀이시지????

    예)라고 써진 밑에 있는 6줄은 그냥 SizeOf 함수 사용예를 든겁니다....

    ^^ 항상 즐코하세요...

  • Profile
    김동완 2002.10.07 19:57
    sizeof는 제가 이해를 잘못햇군여...쪽팔리당...-_-;;죄송..
    sizeof는 아니구여...

    BlockWrite(MyFile2, FileBuffer^, ReadBytes);

    이 부분에서 I/O Error 1784 라는 에러메세지가 나오네여...

    귀찮으시더라도 한번만 이 우매한 놈을 깨우쳐 주세요...


  • Profile
    김동완 2002.10.07 20:39
    AssignFile(MyFile2, ListBox1.Items.Strings[i]+'.sec');
    Rewrite(MyFile2,1);  <== 여기에 1을 넣어주니깐 되네요...^^
    답변주신것들 진심으로 감사드립니다...(--)(__)(--)...
    비베만 하다가 갑자기 델파이 하게 되서 기초지식없이 하려다 보니.. ^^;
    좋은 하루되세요..^^


    • 브래드
    • 2002.10.08 00:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.10.08 22:40
      3D 구현시 직접 프로그래밍하여 구현 할 수도 있지만 계산(특히 행열부분) 부분도 많고 속도도 빠르지 않...
    • ybkim
    • 2002.10.07 23:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김해우
      2002.10.09 02:38
      그냥 가기가 뭐해서... 팁란에 ADO라고 검색해보세요... 그럼...
    • 조건일
    • 2002.10.07 23:19
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.10.08 20:20
      안녕하세요. 최용일입니다. 그냥 API로 하시던가 델파이파일입출력 표준함수를 사용하시던가 하면 됩니...
    • 조건일
      2002.10.09 19:07
      흠.. 훨씬 더 간단한 방법이 있었군여.. 혼자서 고민하다가.. 코드를 막 섞어서 일단은 해결은 했씁니다.....
    • 김상수
    • 2002.10.07 20:28
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 오병주
      2002.10.07 20:57
      만약 벤드 속석이 디테일이라고 가정해봅시다 그러면 쿼리의 내용이든지 어떤내용이던지 한번 찍히고 ...
    • 김상수
      2002.10.07 21:26
      잘은 모르겠네여 ^^;;; 공부를 많이 해야 할텐데... 멀 보고 해야할지도...^^;;; 암튼 답변...
    • 시베리아들개
      2002.10.07 20:55
      Print를 하고 났는데...무슨 AfterPrint이벤트냐고요... AfterPrint이벤트는 이렇게 한번 접근을...
    • 강민수
    • 2002.10.07 20:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • r김해
      2002.10.07 20:44
      안녕하세요... 김해우입니다.. 그냥 지나가기가 그래서 간단하게 코딩합니다. 마우스가 폼 영역밖에 ...
    • 김상수
    • 2002.10.07 19:57
    • 4 COMMENTS
    • /
    • 0 LIKES
    • KYH
      2002.10.07 20:36
      좀 엽기적인방법이 있긴한데여 --;;;;;;;;;; (-----)---------  1번 | (중식)| 짜장면| ...
    • 김상수
      2002.10.07 21:21
      procedure TForm4.여기가아니구여 라인before(Sender: TCustomQuickRep;   var PrintReport:...
    • KYH
      2002.10.08 19:14
      --;;;; 좀더 엽기적으루 가보지여 페이지 footer 의 afterprint 에서 linechk := ''; 하시면 ...
    • 김상수
      2002.10.09 03:56
      신경써주셔서 감사합니다.. 첫Row에 찍히는 것은 안되는군요 첫Row에 찍히는게 아니라 두번째 Row...
    • 안두식
    • 2002.10.07 19:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • blackjewel
      2002.10.08 02:07
      안녕하세여? 저도 그거 때문에 오래 고생해서 몇자적습니다. dbgrid에서 다중선택을 한다고 해도 qui...
    • 신양수
    • 2002.10.07 19:46
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박준영
    • 2002.10.07 19:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강형철
      2002.10.08 19:29
      이문제는 기존 델파이 5.0에서 MS Access를 연결할때 Native Access 드라이브를 사용해서 한걸로 보입니다....
    • 송재진
    • 2002.10.07 03:43
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최병철
      2002.10.07 21:52
      자료실에 특정 화일을 검색하여 경로명을 출력하는 예제 자료가 있읍니다. 참고 하세요.
    • 최용일
      2002.10.07 11:49
      안녕하세요. 최용일입니다. 질문안에 해답이 있네요... 이미지파일 불러올때 아래와 같이 하시죠? ...
    • 이추형
      2002.10.08 02:30
      access툴 자체에 비밀번호 설정이 있습니다. 비밀번호를 지정하시고 ODBC에서 확인하시면 될것 같습니다.
    • 송득보
      2002.10.08 04:56
      답변주셔서 감사한데요.. 그런 문제가 아니라.. 프로그램 내부에서 동적으로 .mdb 파일을 만들어 테...
    • 이추형
      2002.10.08 02:36
      데이타 타입이 datetime 또는 date형의 경우 아래와 같이 입력이 가능합니다. 참고로 datetime의 경우 '20...
    • 이성근
      2002.10.08 18:03
      님께서 말씀하시는 Date형식이 아니라 제가 원하는 방식은 문자형(string)으로 정의가 되어있는 필드를 ...
    • 최용일
      2002.10.07 12:01
      안녕하세요. 최용일입니다. interface나 implementation섹션에서 변수 하나 선언하시고 유닛의 initiali...
    • 김헌주
      2003.02.19 04:05
      ole.ole.CompactDataBase(s, App_Path + 'db1.$$$', , , ';pwd=xxxx');
    • 최용일
      2002.10.07 12:14
      안녕하세요. 최용일입니다. 쫌 질문이 막연한거 같은데... 얻어오고 싶다는 웹브라우져가 웹브라우져의 ...
    • kholeeyo
    • 2002.10.06 09:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.10.07 12:16
      안녕하세요. 최용일입니다. 델파이 소켓이나 인디소켓을 사용하세요. 둘다 예제 있으니까 예제보시면서 ...
    • 김동완
    • 2002.10.06 02:57
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.10.07 12:50
      안녕하세요. 최용일입니다. 동적배열 쓰셨는데... 메모리 할당하고 해제하는 부분이 없네요... 그리...
    • 김동완
      2002.10.07 19:04
      제가 워낙 초짜라서...죄송...-_-; 최용일님께서 알려주신 방법대로... 다시 코딩해 봤는데요... SizeOf...
    • 최용일
      2002.10.07 19:47
      안녕하세요. 최용일입니다. 어떤 에러가 난다는 말씀이신지??? 테스트 다 해보고 올린건데... SizeOf...
    • 김동완
      2002.10.07 19:57
      sizeof는 제가 이해를 잘못햇군여...쪽팔리당...-_-;;죄송.. sizeof는 아니구여... BlockWrite(MyFile2...
    • 김동완
      2002.10.07 20:39
      AssignFile(MyFile2, ListBox1.Items.Strings[i]+'.sec'); Rewrite(MyFile2,1);  <== 여기에...