1. 개념 : TStringList의 Delimiter / DelimitedText를 이용

2. 소스
  TStringList* list;

  try
  {
    list = new TStringList;
    list->LoadFromFile("test1.mfc");//파일 이름

    int lines = list->Count;
    Memo1->Lines->Add("lines:"+String(lines));

    for(int i=0; i<lines; i++)
    {
      TStringList *temp = new TStringList;
      temp->Delimiter = 't';
      temp->DelimitedText = list->Strings[i];

      for(int j=0; j < temp->Count; j++)
      {
        //Memo1->Lines->Add(String(i)+","+String(j)+" : "+temp->Strings[j]);
      }
      delete temp;
    }

  }
  __finally
  {
    delete list;
  }

'Computer > C++' 카테고리의 다른 글

BCB - StrToHex 함수  (0) 2005.11.06
BCB 6에 DSPack 2.3.4 설치  (0) 2005.09.10
카일릭스 설치 및 일반적인 문제점  (0) 2005.07.10
void pointer 샘플  (0) 2005.07.10
파일의 버젼 정보 얻기  (0) 2003.12.14
Effective C++ Second Edition  (0) 2003.10.13
Child control 관리  (0) 2003.09.15
C++ 사이트 모음  (0) 2003.04.08
C와 C++의 name mangling  (0) 2003.03.04
서버 이름을 리스트 박스에 출력하는 샘플(gethostbyaddr() 함수 이용)  (0) 2002.07.12
Posted by Gu Youn
,
웹에서 찾은 자료 같은데 정확한 출처는 기억이 안난다.

<%
     OPTION EXPLICIT
     const BASE_64_MAP_INIT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
     dim nl
     ' zero based arrays
     dim Base64EncMap(63)
     dim Base64DecMap(127)

     ' must be called before using anything else
     PUBLIC SUB initCodecs()
          ' init vars
          nl = "<P>" & chr(13) & chr(10)
          ' setup base 64
          dim max, idx
             max = len(BASE_64_MAP_INIT)
          for idx = 0 to max - 1
               ' one based string
               Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1)
          next
          for idx = 0 to max - 1
               Base64DecMap(ASC(Base64EncMap(idx))) = idx
          next
     END SUB

     ' encode base 64 encoded string
     PUBLIC FUNCTION base64Encode(plain)

          if len(plain) = 0 then
               base64Encode = ""
               exit function
          end if

          dim ret, ndx, by3, first, second, third
          by3 = (len(plain) 3) * 3
          ndx = 1
          do while ndx <= by3
               first  = asc(mid(plain, ndx+0, 1))
               second = asc(mid(plain, ndx+1, 1))
               third  = asc(mid(plain, ndx+2, 1))
               ret = ret & Base64EncMap(  (first 4) AND 63 )
               ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second 16) AND 15 ) )
               ret = ret & Base64EncMap( ((second * 4) AND 60) + ((third 64) AND 3 ) )
               ret = ret & Base64EncMap( third AND 63)
               ndx = ndx + 3
          loop
          ' check for stragglers
          if by3 < len(plain) then
               first  = asc(mid(plain, ndx+0, 1))
               ret = ret & Base64EncMap(  (first 4) AND 63 )
               if (len(plain) MOD 3 ) = 2 then
                    second = asc(mid(plain, ndx+1, 1))
                    ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second 16) AND 15 ) )
                    ret = ret & Base64EncMap( ((second * 4) AND 60) )
               else
                    ret = ret & Base64EncMap( (first * 16) AND 48)
                    ret = ret & "="
               end if
               ret = ret & "="
          end if

          base64Encode = ret
     END FUNCTION

     ' decode base 64 encoded string
     PUBLIC FUNCTION base64Decode(scrambled)

          if len(scrambled) = 0 then
               base64Decode = ""
               exit function
          end if

          ' ignore padding
          dim realLen
          realLen = len(scrambled)
          do while mid(scrambled, realLen, 1) = "="
               realLen = realLen - 1
          loop
          dim ret, ndx, by4, first, second, third, fourth
          ret = ""
          by4 = (realLen 4) * 4
          ndx = 1
          do while ndx <= by4
               first  = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
               second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
               third  = Base64DecMap(asc(mid(scrambled, ndx+2, 1)))
               fourth = Base64DecMap(asc(mid(scrambled, ndx+3, 1)))
               ret = ret & chr( ((first * 4) AND 255) +   ((second 16) AND 3))
               ret = ret & chr( ((second * 16) AND 255) + ((third 4) AND 15) )
               ret = ret & chr( ((third * 64) AND 255) +  (fourth AND 63) )
               ndx = ndx + 4
          loop
          ' check for stragglers, will be 2 or 3 characters
          if ndx < realLen then
               first  = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
               second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
               ret = ret & chr( ((first * 4) AND 255) +   ((second 16) AND 3))
               if realLen MOD 4 = 3 then
                    third = Base64DecMap(asc(mid(scrambled,ndx+2,1)))
                    ret = ret & chr( ((second * 16) AND 255) + ((third 4) AND 15) )
               end if
          end if

          base64Decode = ret
     END FUNCTION

' initialize
     call initCodecs

' Testing code
'    dim inp, encode
'    inp = request.QueryString("input")
'    encode = base64Encode(inp)
'    response.write "Encoded value = " & encode & nl
'    response.write "Decoded value = " & base64Decode(encode) & nl
%>

Posted by Gu Youn
,
사용자 삽입 이미지








1. 제목 / 한국어판 제목:  
         Effective C++
2. 저자/역자:  
         Scott Meyers
3. 출판년도/출판사/한국어판 출판사:
         2001 / Addision Wesely
4. 분야 :
         플랫폼 독립 프로그래밍 / ANSI C++
-----------------------------------------------------------------
작년에 읽다가 다 못봐서 9월 부터 지하철에서 조금씩 읽기 시작함
읽는 것보다는 실제로 코딩을 해봐야 이해가 많이 될거 같음. 나중에 한번 더 읽어봐야 될거 같음.

2003.10.13
Item 11
  클래스 member data로 pointer 등을 사용할 때는 copy Constructor & assignment operator를 정의해야 한다.
2003.10.14
Item 13
  ㄱ. 생성자 안에서 초기화 하는 것보다는 initialization list에서 멤버 변수 초기화 하는 것이 효율적임
  ㄴ. const, reference 형은 initialization list에서 초기화 한다.
  ㄷ. member data(int, double...) 형으로 많은 변수를 초기화 하는 경우에는 생성자 안에서 초기화 한다.
  ㄹ. initialization list에서 초기화 순서는 리스트 상의 순서가 아니라 클래스에서 선언된 순서에 따른다.

2003.10.15
Item 14
  ㄱ. 클래스에 적어도 하나의 virtual function 이 존재하면 virtual destructor를 선언한다.
  ㄴ. vptr(virtual table pointer) / vtbl(virtual table)
  ㄷ. virtual function을 갖는 오브젝트는 Fortran / C에 인자로 전달 할 수 없다.

2003.10.27
Item 15
  operator= 에 대한 정리

Item16
  operator= 구현 방법
  ㄱ. base class의 private member 경우
  ㄴ. default assignment function을 직접 호출 할 수 없는 컴파일러 경우
  ㄷ. derived class에서 copy constructor 구현시 base class의 copy constructor가 호출되게 해야한다.

2003.11.03
Item17
Posted by Gu Youn
,

Child control 관리

Computer/C++ 2003. 9. 15. 10:59
개념 : Form과 같은 parent control에는 ControlCount, Controls 프로퍼티가 있으며 이것을 이용해서 child control을 관리 할 수 있다.

controls : parent가 Form인 것들의 리스트
components : owner가 Form인 것들의 리스트

ClassName, ClassNameIs 함수를 이용하면 오브젝트의 타입 스트링을 얻을 수 있음.

소스 :
1. Controls 사용

  //form 에 있는 control 개수 구하기
  int max = StrToInt(Form1->ControlCount);

  //control 개수 만큼 루프 돌면서 각 컨트롤의 tag 값 비교 및 초기화
  for (int i=0;i<max;i++)
  {
    TControl *ChildControl = Form1->Controls[i];
    int tag = ChildControl->Tag;
    if(tag == 1)
    {
      (dynamic_cast<TLabel*>(ChildControl))->Caption = "a";
    }
    else
    {
      (dynamic_cast<TLabel*>(ChildControl))->Caption = "b";
    }
  }

2. Component 사용
  int max = Form1->ComponentCount;
  TComponent *ChildComponent;

  for (int i=0; i<max ; i++)
  {
    ChildComponent = Form1->Components[i];
    String ClassName = String(ChildComponent->ClassName());
  }
Posted by Gu Youn
,

한 컴퓨터에서 서블릿 작업후에 다른 컴퓨터의 웹서버에 올려서 접속하면 작업 컴퓨터에서는 한글이 깨지지 않지만 다른 웹서버에서는 한글이 깨지는 경우가 발생한다. 이럴 경우에는 두 컴퓨터의 인코딩 타입이 달라서 발생하는 문제로 생각되므로 컴파일 시에 인코딩 타입을 지정해 준다.

javac –encoding euc-kr [filename]

'Computer > Java' 카테고리의 다른 글

클러스터링된 오라클 jdbc 연결 설정  (0) 2007.01.01
UNIX에서 OCI 드라이버 사용 참고자료.  (0) 2005.11.01
XML2HTML  (0) 2003.06.22
JSP/Servlet 스펙별 지원하는 서버 정보  (0) 2003.03.27
Posted by Gu Youn
,

XML2HTML

Computer/Java 2003. 6. 22. 00:20
개념 :
String으로 저장된 xml을 xsl이용해서 html로 생성하기

소스 :

invalid-file

첨부파일 참고





Posted by Gu Youn
,
Nested loop join

2 정규화 위반 예
ex) Table A(a_pk) , Table  intersection(a_pk,b_pk), Table B(b_pk)
interscetion 테이블의 컬럼이 a_pk에만 종속 되는 경우 2정규화 위반

3 정규화 위반
Table A(a_pk)
  A 테이블의 컬럼이 a_pk의 종속 관계가 아니고 속성끼리 종속성을 같는 경우

퍼포먼스는 I/O 문제 결국 쿼리 실행시 block size가 어떻게 되는지에 따라서 퍼포먼스 차이 발생

'Computer > Database' 카테고리의 다른 글

MySQL 팁  (0) 2005.07.10
MS-SQL - ConnectionString 샘플  (0) 2005.07.10
MS-SQL - 패치및 서비스팩 적용에 따른 버전 정보  (0) 2005.07.10
Oracle 기본 정리  (0) 2003.03.26
두개 이상의 인스턴스 EM에 등록하기  (0) 2002.11.04
MS-SQL 기본 정리  (0) 2002.10.07
Posted by Gu Youn
,

출처 :  http://community.borland.com/article/0,1410,16878,00.html

개념 : TColor값을 ColorToRGB 함수를 이용해서 rgb값으로 변경한후 RGB 순으로 조합한다.

소스 :

procedure TForm1.Button1Click(Sender: TObject);
var
  TheRgbValue : TColorRef;
begin
  if ColorDialog1.Execute then begin
    TheRgbValue := ColorToRGB(ColorDialog1.Color);
    ShowMessage(Format('%.2x%.2x%.2x',
                       [GetRValue(TheRGBValue),
                        GetGValue(TheRGBValue),
                        GetBValue(TheRGBValue)]));
  end;
end;
Posted by Gu Youn
,