Q&A

  • [질문:디밥님께] Upload에 관하여..질문 (ASP)
안녕하세요..



저번부터 많은 도움을 받고 있는 화랑입니다.. 단기 프로젝트가 있는 바람에..



저번 질문을 마지막으로 Upload를 잠시 접었습니다.. 이제 프로젝트가 끝이나고



다시 시작을 하고 있습니다...



저번 질문에서 주신 소스를 잘 보았습니다.



/// 저번 답변입니다.



> 제가 쓰고 있는 코드입니다. 다 보일 수는 없고... 참고하십시요...

> Pos를 사용하시면 2진 파일은 제대로 되지 않으니 CompareMem을 사용하세요...

>

> fData : OleVariant; // BinaryRead 반환 값 (모든 DATA)

> gpDataArray : PByteArray;

>

> FVarTotalBytes := gRequest.ServerVariables.Item['CONTENT_LENGTH'];

> sContentType := gRequest.ServerVariables.Item['CONTENT_TYPE'];

>

> FBoundary := GetBoundary(sContentType);

>

> // Content의 내용을 얻어 온다.

> try

> FData := gRequest.BinaryRead(fVarTotalBytes);

> gpDataArray := VarArrayLock(FData);

> fTotalBytes := VarToInt(fVarTotalBytes);

> except

> Exit;

> end;



위와 같은 내용인데요..

PbyteArray를 가지고 CompareMem을 한다고 하셨는데요..



일단전체적으로 제가 생각하고 있는 것은 일단 지금 BinaryRead 로 데이터를 받았고

그리고 Pbytearray에 저장을 했습니다.. 다음 이 데이터를 가지고

ContentType를 이용하여 분리를 해야 된다고 생각합니다.

그런데.. ContentType(String형)을 Pointer형으로 변환해서

CompareMem을 사용하여 분리를 해 내고.. 다음.. 따로 따로 저장을 해서

화일은 화일대로 다른 정보는 다른 정보대로.. 저장한다.. 이런식으로 하는것이 아닐까

생각합니다.(이것과 유사하게 ISAPI로 만들었거든요..)



질문1: 제가 원래 C를 사용하다가 델파이 한지가 얼마 되지 않았거든요.. ContentType를

Point로 변환을 해서 CompareMem을 사용을 하여 Data와 비교를 했는데.. 자꾸

동일한 binary가 없다고 나오네요.. 데이터가 Pbytearray형이니깐.. 다시 다른 형으로

변화을 해서 Comparemem을 사용해야 하나요..



질문2 만일 있을 경우 배열을 사용해서.. 따로 따로 어떻게 저장을 하죠?

String 같으면.. pos와 Copy함수를 써서 저장을 하잖아요? 델파이에서 Pointer를 가지고

어떻게 분리를 하고 저장을 하죠? Comparemem은 말대로 동일한 Binary가 있는지 체크

하잖아요.. 위치를 return해 주는 것도 아니고...



질문에 대한 답변 부탁드립니다.. 델파이의 기본땜시(형변환&Etc) 힘드네요...



1  COMMENTS
  • Profile
    디밥 1999.12.17 20:18
    화랑 wrote:

    > 안녕하세요..

    >

    > 저번부터 많은 도움을 받고 있는 화랑입니다.. 단기 프로젝트가 있는 바람에..

    >

    > 저번 질문을 마지막으로 Upload를 잠시 접었습니다.. 이제 프로젝트가 끝이나고

    >

    > 다시 시작을 하고 있습니다...

    >

    > 저번 질문에서 주신 소스를 잘 보았습니다.

    >

    > /// 저번 답변입니다.

    >

    > > 제가 쓰고 있는 코드입니다. 다 보일 수는 없고... 참고하십시요...

    > > Pos를 사용하시면 2진 파일은 제대로 되지 않으니 CompareMem을 사용하세요...

    > >

    > > fData : OleVariant; // BinaryRead 반환 값 (모든 DATA)

    > > gpDataArray : PByteArray;

    > >

    > > FVarTotalBytes := gRequest.ServerVariables.Item['CONTENT_LENGTH'];

    > > sContentType := gRequest.ServerVariables.Item['CONTENT_TYPE'];

    > >

    > > FBoundary := GetBoundary(sContentType);

    > >

    > > // Content의 내용을 얻어 온다.

    > > try

    > > FData := gRequest.BinaryRead(fVarTotalBytes);

    > > gpDataArray := VarArrayLock(FData);

    > > fTotalBytes := VarToInt(fVarTotalBytes);

    > > except

    > > Exit;

    > > end;

    >

    > 위와 같은 내용인데요..

    > PbyteArray를 가지고 CompareMem을 한다고 하셨는데요..

    >

    > 일단전체적으로 제가 생각하고 있는 것은 일단 지금 BinaryRead 로 데이터를 받았고

    > 그리고 Pbytearray에 저장을 했습니다.. 다음 이 데이터를 가지고

    > ContentType를 이용하여 분리를 해야 된다고 생각합니다.

    > 그런데.. ContentType(String형)을 Pointer형으로 변환해서

    > CompareMem을 사용하여 분리를 해 내고.. 다음.. 따로 따로 저장을 해서

    > 화일은 화일대로 다른 정보는 다른 정보대로.. 저장한다.. 이런식으로 하는것이 아닐까

    > 생각합니다.(이것과 유사하게 ISAPI로 만들었거든요..)



    요건 말이죠... 받은 모든 Data에서 따로 뭘 저장하는 게 아니라 필요한 부분의 시작과 끝위치 만을 기억하는 겁니다. (Parsing에서) 그런 후 Form Data는 Form Collection에 File Data들은 File Collection에 정보를 저장합니다. 특히 File정보는 copy하는 것이 아니라 시작과 끝 위치 정보만을 가지고 있으면 됩니다.



    >

    > 질문1: 제가 원래 C를 사용하다가 델파이 한지가 얼마 되지 않았거든요.. ContentType를

    > Point로 변환을 해서 CompareMem을 사용을 하여 Data와 비교를 했는데.. 자꾸

    > 동일한 binary가 없다고 나오네요.. 데이터가 Pbytearray형이니깐.. 다시 다른 형으로

    > 변화을 해서 Comparemem을 사용해야 하나요..



    Pointer 형으로 Casting 하면 됩니다.



    >

    > 질문2 만일 있을 경우 배열을 사용해서.. 따로 따로 어떻게 저장을 하죠?

    > String 같으면.. pos와 Copy함수를 써서 저장을 하잖아요? 델파이에서 Pointer를 가지고

    > 어떻게 분리를 하고 저장을 하죠? Comparemem은 말대로 동일한 Binary가 있는지 체크

    > 하잖아요.. 위치를 return해 주는 것도 아니고...

    >

    > 질문에 대한 답변 부탁드립니다.. 델파이의 기본땜시(형변환&Etc) 힘드네요...

    >



    C에서도 Pointer의 Address가지고 조작할 수 있죠?



    그러니 위의 시작과 끝 위치만 알면 뽑아낼 수 있겠죠...





    PS 1. 위와 같이 Parsing에서의 문제점과는 달리 VB와 같이 Collection (_NewEnum)을 구현하는데에 무지 고생했습니다.



    현재에는 Delphi로 만든것도 ASP나 VB에서 For Each File in Files 와 같은 코드가 먹습니다.





    PS 2. File정보를 뽑아낸 후 TFileStream과 Win32API 둘다 해보세요 어떤게 더 빠른가...

    • 최수춘
      1999.12.16 18:20
      맨발의 청춘 wrote: > 질의를 동적으로 생성해서 최대값을 받을려 하는데, 어디서 어떻게 받는지 모르겠어...
    • thE0
    • 1999.12.16 08:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.12.16 08:27
      델파이에선 WM(Window Message)와 CM(Component Message)가 있습니다. 윈도우 메세지야 일반적인것들이니 ...
    • 강민주
    • 1999.12.16 08:04
    • 5 COMMENTS
    • /
    • 0 LIKES
    • thE0
      1999.12.16 08:38
      안녕하세요, 혹시 원하시는게 해당 프로그램이 실행 될때의 디렉토리를 구하시는 것이라면 아주 간...
    • 강민주
      1999.12.16 10:20
      안녕하세요. 답변 고마운데.. 질문요지가 그게 아닌데.. 질문 설명이 부족했던것 같습니다. ^^ 다른게...
    • 최수춘
      1999.12.16 18:40
      > function GetCurrDirectory: String; > var > i: Integer; > CurrDir: String; > begin > Cur...
    • 양병규
      1999.12.16 11:37
      procedure TForm1.Button1Click(Sender: TObject); var CurrDir: String; begin CurrDir := GetCur...
    • 강민주
      1999.12.16 11:53
      ^^
    • 양병규
      1999.12.16 11:18
      OnKeyDown과 OnKeyPress에서 모두 처리해 주시면됩니다. OnKeyDown에서는 스페이스를 Right키로 바꾸고...
    • 김영대
      1999.12.16 18:40
      열심희 wrote: > 안녕하세요... > 테이블 중 한 필드의 내용만 파일로 저장하는 방법을 가르쳐 주시면 감...
    • 김매경
    • 1999.12.16 06:02
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 김상면
      1999.12.16 08:48
    • 김매경
      1999.12.16 17:49
    • 김상면
      1999.12.16 19:40
    • 김매경
      1999.12.16 20:26
    • 김상면
      1999.12.16 21:25
    • 김 성중
      1999.12.17 02:47
      //거림시스템에 다니는 사람입니다. 여기서 GDK98이란 단어를 들으니 반갑네요 GDK관련 소스는 저희 회사...
    • 정 민 석
      1999.12.17 14:46
      김 성중 wrote: > //거림시스템에 다니는 사람입니다. > 여기서 GDK98이란 단어를 들으니 반갑네요 > GD...
    • 김 성중
      1999.12.17 20:19
      var Rect :Bound; Minx,Miny,Maxx,maxy:Double; begin XM_FindGlobalMBR(xmap,@Rect); ...
    • 심민식
      1999.12.16 08:17
      정 민 석 wrote: > 델파이를 갓 시작했습니다. 그런데 역시 어렵군요. > 제가 알고 싶은 것은 거림에서 ...
    • 정민석
      1999.12.16 21:42
      답변감사드립니다. 그런데 지도확대와 축소부분은 해결되어있고요 제가알고 싶은것은 지도를 불러올때 처...
    • sun
    • 1999.12.16 04:14
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 노태협
    • 1999.12.16 04:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • TeamX
      1999.12.16 05:51
      제가 알기에도 bpl 이 거의 dll 과 같은 개념이기 때문에.... 우선은 실행시 프로그램이 있는 폴더를 조...
    • 엄화용
    • 1999.12.16 03:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 화앙비홍
      1999.12.16 19:05
      엄화용 wrote: > > 출력폼이 > 라벨용지입니다. > > 1.내용 2.내용 > 3.내용 4.내용 > .....
    • 이기현
    • 1999.12.16 02:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 1999.12.16 18:43
      키값입니다 VK_LEFT 25 LEFT ARROW key VK_UP 26 ...
    • 화랑
    • 1999.12.16 20:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 디밥
      1999.12.17 20:18
      화랑 wrote: > 안녕하세요.. > > 저번부터 많은 도움을 받고 있는 화랑입니다.. 단기 프로젝트가 있...
    • 황교찬
    • 1999.12.16 02:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.12.16 07:07
      ASyncPro 라는 컴포넌트가 있습니다. 상용이기는 하지만요... 팩스나 모뎀, 보이스모뎀, TCP/IP 등을 모...
    • 강민주
    • 1999.12.16 02:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.12.16 02:17
      강민주 wrote: > 안녕하세요. 강민주라합니다. ^^; > > 질문이 있습니다. > 현재 디렉토리를 알고 싶...
    • 최시영
    • 1999.12.16 02:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • TeamX
      1999.12.16 02:51
      씨빌더는 그와 같은 방법으로는 쓰지 못하는걸로 압니다. 대신 전통적인(?) C++ 방식으로 해야 할겁니다...
    • kimsz73
    • 1999.12.16 02:01
    • 0 COMMENTS
    • /
    • 0 LIKES
    • copretns
    • 1999.12.16 01:42
    • 0 COMMENTS
    • /
    • 0 LIKES