유돌이

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

Notice

2009. 5. 26. 20:24 델파이

뭐하는 함수냐 하면. 혹시 DB에서 Text를 읽어와 TMemo에 그대로 뿌려준다던가,
혹은 다른 상황에서 이상한문자(♬나 º - 비슷하지만 아님)가 나와서
고민하신분 있으신가요?

Memo1.Text := AdjustLineBreaks(문자열..);

검색해 봤는데 없어서 올려봅니다.

-----------------------------------------------------------------------------

- SysUtils에 선언된 명령어 및 설명 입니다.
{ AdjustLineBreaks adjusts all line breaks in the given string to the
indicated style.
When Style is tlbsCRLF, the function changes all
CR characters not followed by LF and all LF characters not preceded
by a CR into CR/LF pairs.
When Style is tlbsLF, the function changes all CR/LF pairs and CR characters
not followed by LF to LF characters. }

function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle =
{$IFDEF LINUX} tlbsLF {$ENDIF}
{$IFDEF MSWINDOWS} tlbsCRLF {$ENDIF}): string;

- 도움말 설명 입니다.
On Windows:
function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle = tlbsCRLF): string;
On Linux:
function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle = tlbsLF): string;

Description
AdjustLineBreaks returns a text string with its line breaks adjusted to fit a specified style.
S is the string to convert.
Style indicates whether line breaks should all be Windows-style line breaks with a carriage return and linefeed (tlbsCRLF), or Linux-style breaks with a single linefeed character (tlbsLF). If Style is omitted, the style for the compile target is used.

 

 

출처: 델마당. 무대뽀(kazankros) 님의 글


posted by 유돌이
2009. 2. 9. 21:35 C/C++/MFC

String::find()를 통하여 원하는 단어나 문장을 검색후

원하는 값의 유무를 string::npos()를 통하여 알수 있다.

 

string::find()함수는 찾는 단어나 문자열이 없으면 

string::npos를 리턴한다.

 

 

---------------------------------------------------------------------------------

예제)

 

string str_text = "테스트 입니다."

 

if ( str_text.find("텍스트") == string::npos) {

    MessageBox("문자를 찾을수가 없습니다.", "테스트",  MB_OK);

}


'C/C++/MFC' 카테고리의 다른 글

윈도우 핸들 구하는 방법  (0) 2009.02.09
트레이로 가는 애니메이션 출력하기  (0) 2009.02.09
DoModal() 이란??  (0) 2009.01.14
C_STR() 이란??  (0) 2009.01.10
연결리스트 삽입,삭제 구현 예제(스택)  (0) 2009.01.10
posted by 유돌이
2009. 1. 14. 22:25 C/C++/MFC

비주얼 C++에 다이얼로그는 두가지 종류가 있습니다.

 

한가지가 모달리스 다이얼로그이고...

또 다른 한가지가 모달 다이얼로그입니다.

 

이 두 다이얼로그의 차이는

모달 다이얼로그의 경우는 다이얼로그가 생성되면

자신을 생성시킨 다이얼로그가 활성화되지 않습니다.

 

하지만 모달리스 다이얼로그는 다이얼로그가 생성되더라도

자신을 생성시킨 다이얼로그로 마음대로 왔다 갔다 할 수 있습니다.

 

사실 이게 정확한 설명은 아니지만 대략의 차이점이라고 생각하시면 될 것 같고..^^;;

 

 

DoModal 함수에 대한 간단한 예제를 들면...

 

일단 모달 다이얼로그로 클래스가 생성되어 있다고 하죠...

그 클래스 이름을 "TestClassModal" 이라고 했을 때...

 

다이얼로그를 생성시킬 곳에서는

일단 해당 다이얼로그 클래스의 해더 파일을 포함시켜야 할 거구요..

 

그 다음에는 그 클래스를 선언해 주어야 겠지요~^^

 

TestClassModal   dlg;

 

if (dlg.DoModal == IDOK)   // 다이얼로그가 종료될 때 반환되는 값을 검사, OK 버튼으로 종료되었을 경우 IDOK를 반환

{

      // OK 로 다이얼로그가 종료되었을 경우의 작업 코딩

}

else

{

       // 그렇지 않을 경우의 작업 코딩..

}

 

 

DoModal 함수는 보통 위와 같은 형태로 사용됩니다.


'C/C++/MFC' 카테고리의 다른 글

트레이로 가는 애니메이션 출력하기  (0) 2009.02.09
string::find와 string::npos 란?  (0) 2009.02.09
C_STR() 이란??  (0) 2009.01.10
연결리스트 삽입,삭제 구현 예제(스택)  (0) 2009.01.10
가상 상속  (0) 2009.01.10
posted by 유돌이
2008. 12. 30. 23:16 C/C++/MFC

디바이스 컨텍스트(Device Context)

우리가 화면에 무언가를 출력하기 위해서는 반드시 윈도우즈 os로 부터 화면을 사용할수 있는 권한(디바이스 컨텍스트)를 얻어야함.(문자하나를 화면에 표시하려고 해도 얻어야만 화면출력이 가능)

디바이스 컨텍스트는 화면이나 프린터,플로터등 출력장치에 문자나 그림을 표시하기 위한 정보를 지닌 구조체이다. 윈도우즈에서 프로그램의 모든 출력요구는 디바이스 컨텍스트(DC)를 통해 이뤄진다.

 

GDI(Graphics Device Interface)

윈도우즈가 제공하는 GDI는 서로 다른 구조를 지닌 출력 장치에 대한 정보를 스스로 판단하고 분석하여 실제로 사용해야 할 드라이버를 로드한다. 응용프로그램과 여러 출력 장치간에 의사소통이 원활히 이루어지도록 통역관 역할을 하기때문에 출력장치마다 프로그램을 달리해야하는 프로그래머의 번거로운 작업을 대신해준다.

 

EX) 도화지 : DC   , 그림그리는 도구 : GDI

 

MFC의 디바이스 컨텍스트 관련 클래스

*DC는 무한정제공되는 것이 아니기 때문에 사용후에는 윈도우즈 os에 반납해야함

  DC클래스를 사용하면 DC를 사용후 윈도우즈에 반환해야하는 번거로운 절차가 없다.

 

1.CDC클래스

디바이스 컨텍스트에 대한 기초 클래스로 화면이나 프린터 출력에 관계된 대부분의 멤버함수를  포함한다.

2.CWindowDC

캡션바,메뉴바, 상태바 등 넌클라이언트 영역을 포함한 전체 윈도우를 표시하는 DC를 관리

3.CClientDC

캡션바,메뉴바,상태바 등을 제외한 클라이언트 영역만을 표시하는 DC를 관리

CClientDC의 생성자는 내부적으로 GetDC()함수를 호출하고 소멸자로 ReleaseDC()함수를 호출한다.

4.CPaintDC

WM_PAINT메시지가 발생했을 때 다시 그려져야 할 영역에 대한 DC를 관리하며 WM_PAINT의 메시지 핸들러인 OnPaint()함수에서 사용한다. 윈도우즈에서의 화면복원 기능을 수행하는

부분

내부적으로 BeginPaint()함수를 호출하고 소멸자는 EndPaint()함수를 호출한다.

5.CMetaFileDC

윈도우즈 메타파일(.WMF나 .EMF)에 대한 DC를 관리

메타파일:그래픽 이미지를 생성해낼수 있는 GDI명령들로 구성된 파일 ex)클립아트


'C/C++/MFC' 카테고리의 다른 글

[API]버튼만들기  (0) 2009.01.02
Invalidate() , OnDraw(CDC* pDC)  (0) 2009.01.02
윈도우즈와 메시지  (0) 2008.12.30
API 기초??  (0) 2008.12.30
const 사용법  (0) 2008.12.30
posted by 유돌이
2008. 12. 30. 23:12 C/C++/MFC
const에 대해 정리해봤습니다. 약간 불명확한 부분이 있을수도 있겠네요.

const는 변수, 포인터형, 참조형, 함수, 클레스 등에 붙을수 있음.

1. 변수
예)
    const i = 100;
i 값 변경불가

2. 포인터형 : 기본적으로 2가지 형태가 있을 수 있음. 그외 여려형태가 가능
예1) 값은 변경 불가능하지만 주소는 변경가능한 형태
    int temp = 100, temp2 = 200;
    const int *ipConst = &temp;  // *ipConst 값 변경 불가, ipConst(주소)값은 변경가능
    // int const *ipConst = &temp;  // 이런형태로 써도 위와 같은 의미

    // *ipConst = 300;   // 불가능한 형태
    ipConst = &temp2;  // 가능한 형태

예2) 주소는 변경 불가능하지만 값은 변경가능한 형태
    int temp = 100, temp2 = 200;
    int * const iConstp = &temp;  // *iConstp 값 변경 가능, iConstp(주소)값은 변경불가

    *iConstp = 300;   // 가능한 형태
    //iConstp = &temp2;  // 불가능한 형태

주의 : const가 결합되는 위치가 값인지 주소인지에 유의


3. 참조형
예1) 직접적으로 값과 주소 모두 변경 불가능하지만 참조 원본을 통한 값변경은 가능한 경우
   int temp3 = 100, temp5 = 200;
   int const &ircVal = temp3;  
  
   //ircVal = 2000; // 컴파일 에러 발생 (const 참조는 값 변경불가)
   //ircVal = temp5;  // 주소도  변경불가
   temp3 = 9000;  // 참조 원본은 변경가능, 결과적으로 ircVal의 값도 변하게됨
    

예2) 직접적으로 값과 주소 모두 변경 가능하지만 참조가 가르키는 값은 변화가 없는경우
    int temp4 = 300, temp5 = 500;
    int & const icrVal = temp4;

    icrVal = 6000;  // 값변경 가능, 하지만 값에 변경이 안됨  
    cout << " icrVal " << icrVal << endl;  // 여전히 300이 찍힘
    icrVal = temp5; // 주소도 변경가능 역시 값에 변경이 안됨
    cout << " icrVal " << icrVal << endl;  // 여전히 300이 찍힘

4. 함수 : class의 멤버함수인 경우만 const 함수 사용가능. 해당 class의 멤버변수를 변경할수 없음.
예)
class ConstTest
{
public:
        int m_iA;

        ConstTest()
        {        m_iA = 1;           }
        int const_func1( int &a_iA,  int &a_iB) const
        {
                int a = 1;
                int b = 2;
                int c = 0;

                c = a + b;
                a_iA += 100;  
                // m_iA += 100; // 에러발생. 멤버변수는 변경 불가  
                return m_iA;
        }
};
                

5. 클레스
예)
  const CMyConstClass CC;  
  
  // 내부 멤버변수 전체를 변경불가능한 클레스,(생성자 함수만은 예외)
  // 모든 내부 멤버 함수는 기본적으로 const 함수가 되야만함.
  // 내부 함수의 지역 변수및 인자로 받은 변수는 변경가능.

'C/C++/MFC' 카테고리의 다른 글

MFC (디바이스 컨텍스트와 관련 클래스)  (0) 2008.12.30
윈도우즈와 메시지  (0) 2008.12.30
API 기초??  (0) 2008.12.30
C프로그래밍 별모양~  (0) 2008.12.30
BHO 란?  (0) 2008.12.30
posted by 유돌이
2008. 12. 24. 14:30 델파이

패스를 제외한 실행파일명만 : ExtractFileName(Application.ExeName)
파일명을 제외한 패스명만 : ExtractFilePath(Application.ExeName)
드라이브 명만 : ExtractFileDrive(Applicaton.ExeName)
확장자만 : ExtractFileExt(Application.ExeName)

 

문자열 변환 함수
IntToHex
정수 -> 16진수 -> 문자열로 변환한다.
IntToStr
function IntToStr(Value:Longint):string;
정수형 데이터를 문자열로 변환해 준다.

IsValidIdent
function IsValidIdent(const Ident:string):Boolean;
주어진 문자열이 올바른 식별자이면 True를 준다.

Length
function Length(S:string):integer;
문자열의 길이를 돌려준다.

LoadStr
function LoadStr(Ident:Word):string;
실행파일로부터 문자열을 가지고 온다.

LowerCase
function LowerCase(const S:string):string;
문자열을 모두 소문자로 만든다.

 

MoveTo

function AnsiCompareText(const S1, S2:string): Integer;

 

S1 문자열들과 S2 문자열들을 비교한다. AnsiCompareStr과의 차이점은 비교하는 문자열의 크기에 있다. 더 많은 양의 문자열을 한번에 비교할 경우에는 이 함수를 사용한다. 특히 메모 필드에 저장된 텍스트를 상호 비교할 경우에 이용한다.

 

NewStr

function NewStr(const s:string):PString;

 

힙에서 새로운 문자열을 할당한다.

 

Pos

function Pos(substr:string; S:string):Byte;

 

문자열 내에서 임의의 문자열 일부가 시작되는 곳을 알려준다.

 

Str

procedure Str(X [: Width [: Decimals ]]; var S);

 

정수, 실수 -> 문자열로 변환한다.

 

StrToInt

문자열 -> 정수로 변환한다.

 

StrToIntDef

문자열을 정수로 변환하되, 실패할 경우에는 미리 정해준 값을 준다.

 

Trim

문자열 내에서 시작 및 끝의 공백과 제어문자를 제거한다.

 

TrimLeft

문자열 내에서 시작 공백과 제어문자를 제거한다.

 

TrimRight

문자열 내에서 끝나는 공백과 제어문자를 제거한다

 

UpperCase

문자열을 모두 대문자로 바꾼다.

 

Val

문자열을 정수값으로 바꾼다. 실패일 때, 문자열내에서 실패한 위치를 돌려준다.

 

영어권 이외의 문자열처리시에는 Ansi형 프로시저/함수를 사용한다.

 

ValidateEdit

procedure ValidateEdit;

 

에디트 박스에 필요한 공백 문자의 수를 알아내기 위하여 EditText 프로퍼티를 검사한다

 

 


inRange 는
if inRange(value, min, max) then
여기서 보면 밸류값이 min 과 max 사이의 값이면 참, 아니면 거짓을 리턴합니다. 인덱스의 무결성을 검사하기에 좋죠

ensureRange 는
value := ensureRange(value, min, max);
이 함수는 value 가 min 보다 크거나 max 보다 작으면 그 자체값을 리턴하지만, min 보다 작으면 min 값을, max 보다 크면 max 값을 돌려줍니다.
이 또한 인덱스의 범위를 검사할때 사용하면 좋습니다.

 

참조 :  kimks81님 블로그 펌~!


'델파이' 카테고리의 다른 글

델파이 자료형~!  (0) 2008.12.24
문자열 관련 함수  (0) 2008.12.24
델파이에서 브라우저 띄우기  (0) 2008.12.24
델파이에서 dll 등록하기  (0) 2008.12.24
델파이 폼 최소화 시키는 법  (0) 2008.12.24
posted by 유돌이
prev 1 next