320x100

[Delphi] Delphi 2010 Character Set은 유니코드.

Posted on 2016. 7. 28. 11:05
Filed Under Delphi

델파이 프로젝트 옵션에서 캐릭터셋 설정하는 부분을 찾을 수 없었다.

못찾는건지 없는건지는 미지수지만..


검색해보니 델파이2010은 기본 Character Set이 UNICODE란다.


정보출처: String to Hex로 변환 | 2010.03.01 



반응형

[Delphi] 3항 연산자, IfThen

Posted on 2016. 4. 28. 14:33
Filed Under Delphi

If문으로 여러줄 작성해야할 코드를 1줄로 작성할 수 있는 매력적인 연산자~!
기본형태: IfThen(비교문, True리턴값, False리컨값)
총 4가지 오버로드 형태가 있음.
// 1-3) Math
function IfThen(AValue: Boolean; const ATrue: Integer; 
                     const AFalse: Integer = $0): Integer; overload;
function IfThen(AValue: Boolean; const ATrue: Int64; 
                     const AFalse: Int64 = $0): Int64; overload;
function IfThen(AValue: Boolean; const ATrue: Double; 
                     const AFalse: Double = 0): Double; overload;

// 4) StrUtils
    function IfThen(AValue: Boolean; const ATrue: string; 
                   AFalse: string = ''): string; overload;
}




반응형

[Delphi] 델파이 실행 시 EditorLineEnds.ttr 파일을 만들 수 없다는 오류 [해결]

Posted on 2014. 9. 18. 17:47
Filed Under Delphi

참고: http://blog.hjf.pe.kr/227

언젠가부터 두 번째 띄울때 오류메시지가 뜨면서 실행이 안된다.
재부팅해야 실행가능..T_T

원인:) 
2014년 8월 12일 발생 윈도우 보안업데이트(MS14-045)에 다음 내용이 포함
윈도우 기본 폰트경로 이외에 설치된 폰트파일 수정 제한 

해결:)
1) 윈도우즈 업데이트 제거
2) IDE Fix Pack 설치 [다운로드]

결론:)
① 2)는 설치 실패 ▶ Faild patches
② (2014/10/07) 해결안되어서 버그 우회 실행 배치파일(bat)을 만들어서 Delphi2010 실행시 사용 ☞ 미해결
(2014/10/14) 찾아보니 KB2993651 이 또 다시 문제를 재발시킨다고 하는듯하여 제거 ☞ OK

wusa /uninstall /kb:2993651   // MS14-045
wusa /uninstall /kb:2982791

결론: 업데이트를 2개다 제거하니 문제없이 잘된다. 주위분들처럼 이 참에 윈도우 자동 업데이트도 DISABLE했다.

(15/06/15)  윈도우 재설치로 문제 재발,
이번에는 윈도우즈 보안패치 제거만으로 해결이 안되었다.
아래 내용의 우회 실행 배치파일을 만들어서 델파이를 실행하니 되었다.
▶ 배치파일의 경로(path)때문에 안되는 경우 파일명 앞에 %Temp%를 붙여서 전체 경로로 지정하니 해결. 

@echo off
tskill bds

cd \
del %Temp%\EditorLineEnds_.ttr

cd \
REM set datum=%date%_%time:~3,2%-%time:~6,2%
set datum=%date:~2,4%-%date:~7,2%-%date:~10,2%_%time:0,2%;%time:~3,2%;%time:~6,2%
ren %Temp%\EditorLineEnds.ttr EditorLineEnds%datum%.ttr
start "" "c:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin\bds.exe" -pDelphi
pause

REM // ▲ 커맨드 설명
REM // 1(taskill): Delphi 프로세스 종료
REM // 2(del): 사용자TEMP디렉토리(%Temp%)내의 *.ttr 파일 삭제
REM // 3(set): rename할 파일명 꼬릿말 설정(시간값을 이용해 중복방지) 
REM // 4(start): Dephi 실행
REM // 5(pause): 일시정지(위 커맨드의 실행결과를 보기 위해 추가/삭제해도 무방)

※ 위에서 델파이 경로는 자신에 맞게 변경할 것! 
※ 참고: [DOS 배치] 날짜(date), 시간(time)(단, 데스크탑의 날짜/시간 포맷을 변경한 경우 맞게 수정 필요)


반응형

[Delphi2010] Oracle BLOB형 컬럼 다루기 (TBlobField)

Posted on 2014. 2. 24. 19:33
Filed Under Delphi


♣ 다운로드 from DB
var
	DataSet: TClientDataSet;
begin
	...
	sImagePath := 'C:\blob_img.jpg';
	// 확장자는 미리 알아야 함 (DB에 저장할때 파일명/확장자를 같이 저장)
	TBlobField(DataSet.FieldByName('PARAM_NM')).SaveToFile(sImagePath);
	TBlobField(DataSet.FieldByName('PARAM_NM')).BlobSize /// 파일 사이즈 (바이트 단위)
http://docwiki.embarcadero.com/Libraries/XE2/en/Data.DB.TBlobField.BlobSize

♣ 업로드 to DB
var
	fStream: TFileStream;
	SQLQuery: TSQLQuery;
begin
	...
	try
		fStream := TFileStream.Create(AFullPath, fmOpenRead);
	except
	on e : Exception do
		begin
		// '이미지 파일을 읽을 수 없습니다.' + #13#10 + e.Message
		end;
	end; // End of try

	// 방법1. 파일스트림을 업로드
	SQLQuery.ParamByName('FLD_IMG').LoadFromStream(fStream, ftBlob);
	// 방법2. 파일을 업로드
	SQLQuery.ParamByName('DRW_RST_IMG').LoadFromFile(sPath, ftBlob);

반응형

[Delphi] Code Formatter 비활성 (Ctrl+D)

Posted on 2014. 2. 13. 13:13
Filed Under Delphi

저장이 Ctrl+S인데 모르고 Ctrl+D를 눌러버리면
모든 코드가 자동 포맷팅 기능으로 인해 자동 줄바꿈 되버린다.
기본IDE에는 비활성하는 방법도 없다.

[방법1]
Formatter.dll 을 삭제하거나 rename -> 수행후 Ctrl+D 누르면 델파이가 뻗는다.
방지방법: http://www.yunpil.net/Delphi/2105

[방법2]
IDE도구 - DDevExtensions 설치 > 옵션에서 비활성 체크
출처: http://www.delmadang.com/community/bbs_view.asp?bbsNo=17&bbsCat=0&indx=438143&page=13

반응형

[Delphi] 예외처리 구분 경우 (try/except/finally)

Posted on 2014. 2. 12. 17:50
Filed Under Delphi


Application.MessageBox(PChar('시작'), '정보', MB_ICONINFORMATION);


// try문 외부에서 예외발생 경우
raise Exception.Create('예외경우 발생!'); // 아래 finally 구문 미실행 + Exit()

// try문 외부에서 Exit()할 경우
if 조건 then Exit(); // 아래 try..finally와 관계 없이 종료

try
  try
      ...
      raise Exception.Create('예외발생!'); // except + finally + next 을 모두 수행
      Exit(); // except + finally + next 을 모두 수행(=Exception.Create 와 함께 사용할 필요없는 구문)
      ...
  except
      on e: Exception do
      begin
         // 예외 발생시에만 수행 - finally + next 수행
         Application.MessageBox(PChar(e.Message), PChar('에러'), MB_ICONERROR + MB_OK);
          Exit(); // finally 까지 수행하고 종료 (next 미수행)
      end;
   end;
finally
   // 예외 발생 여부 및 try구문 내의 Exit() 유무에 상관없이 무조건 수행되는 구문
   FreeAndNill(obj);
end;

Application.MessageBox(PChar('next'), PChar('next'), MB_ICONERROR + MB_OK);




반응형

[Delphi] 변수, 상수, 배열, 포인터 Syntax

Posted on 2014. 2. 4. 18:14
Filed Under Delphi


// 문자형 초기화
var
	ch: Char;
begin
	ch := #0;

// 상수값 정의
const
	_FORM01_DEFAULT_CAPTION = '창 제목';
	_MAX_FILESIZE  = 1000000;

// 배열의 인덱스용으로써 타입 정의
type
	TDbActionType = (datSelect, datInsert, datUpdate datDelete, datNone);
const
	_DBACTTYPE_FIRST = 0; // datSelect
	_DBACTTYPE_LAST = datDelete;

// 레코드 타입 정의 및 초기화
type
	TDbActionInfo =  record
		rsQuery: String;
		rsErrorMsg: String;
	end;

const
	DbActionInfoArray: array [_DBACTTYPE_FIRST.._DBACTTYPE_LAST] of TDbActionInfo =
	(
		rsQuery: 'SELECT A FROM tbl_nm WHERE '; rsErrorMsg: 'No Message'),
		rsQuery: 'INSERT INTO tbl_nm VALUES('; rsErrorMsg: 'No Message'),
		rsQuery: 'UPDATE tbl_nm SET'; rsErrorMsg: 'No Message'),
		rsQuery: 'DELETE FROM tbl_nm WHERE'; rsErrorMsg: 'No Message')
	);

// 포인터 정의 (val^ : 값 / @val: 포인터)
var
	val1, val2: TDbActionInfo;
	FPcxImageList: array[0..1] of ^TDbActionInfo;
begin
	FPcxImageList[0] := @val1;
	FPcxImageList[1] := @val2;

	...

	if FPcxImageList[0]^.rsErrorMsg <> 'No Message' then
	begin
		Application.MessageBox(FPcxImageList[0]^.rsErrorMsg, MB_OK + MB_ICONERROR);
	end

반응형

[Delphi] 레코드형 배열 초기화

Posted on 2014. 1. 29. 15:39
Filed Under Delphi

출처: http://www.delmadang.com/community/bbs_view.asp?bbsNo=3&indx=195652(델마당/강좌, 팁, 정보)

type
TFreq = packed record
mFreq: integer;
mDeviation: integer;
end;

TState = packed record
mTime: integer;
mDeviation: integer;
end;

TTone = packed record
mBuf : pChar;
mTid: integer;
mFreq1: TFreq;
mOff: TState;
end;

var
szTone : array [0..2] of TTone
= ((mBuf: nil; mTid: -1; mFreq1:(mFreq: 300; mDeviation: 10); mOff:(mTime: 0; mDeviation: 30)),
(mBuf: nil; mTid: -1; mFreq1:(mFreq: 300; mDeviation: 10); mOff:(mTime: 0; mDeviation: 30)),
(mBuf: nil; mTid: -1; mFreq1:(mFreq: 300; mDeviation: 10); mOff:(mTime: 0; mDeviation: 30)));

Tone : TTone
= (mBuf: nil; mTid: -1; mFreq1:(mFreq: 300; mDeviation: 10); mOff:(mTime: 0; mDeviation: 30));
반응형

[Delphi] 관련 사이트 / 단축키

Posted on 2014. 1. 16. 10:57
Filed Under Delphi

▼ 단축키
Ctrl+F12: Searh for units
Shift+Alt+F11: View > Struture
F11: View > Object Inspector
Ctrl+K, N / O: Changes a block to uppercase/lowercase
Ctrl+Shift+ U/I  (선택영역 좌우 이동)
Alt+Shift   (영역선택)
Ctrl+Shift+Enter (커서 메소드 참조중인 곳 찾기)


▼ 팁 메모
Memory (New→Delete): New → Dispose (heap)   /  Create → FreeAndNil
문자열 배열 상수 선언&초기화_C_TYPE: array [0..1] of String = ('A','B');
Form.Caption에서 다음줄 넣기▶ Enter = #$D#$A
ex:) '관로(근장)'#$D#$A'(Km)(SKB)'

유니코드(wide char) / 안시(multi byte)


▼ 튜토리얼
http://docwiki.embarcadero.com/RADStudio/XE5/en/Delphi_Reference (English)
http://www.delphibasics.co.uk/index.html (English)
MSDN Office 관련 (English)
  ExcelApp, ExcelSheet, ExcelBook: Variant;
  ...
 // 이미지 크기 조정안될때 사용
  ExcelSheet.Shapes.AddPicture('이미지파일', False, True, Left, Top, Width, Height);

▼ 델파이 커뮤니티
http://delphi.borlandforum.com/
https://www.delmadang.com/
볼랜드 포럼
데브기어

▼ 블로그
함수정리: http://blog.naver.com/mykh77?Redirect=Log&logNo=30080868509
왕초보를 위한 아주 기본적인 Tips  11.25
델파이  문법관련  Delphi Operator(연산자)
Canvas
Delphi tips Graphics and Drawing
파일 경로 조작하기 [기타VCL함수 설명]
Assert호출시 OutputDebugMesssage 찍기 in델마당





 


반응형

[Delphi2010] VCL 기본 클래스 계층도(VCL Hierarchy)

Posted on 2013. 11. 27. 10:17
Filed Under Delphi

VCL(Visual Component Library)는 윈도우프로그래밍을 편리하게 할 수 있도록 델파이에서 제공하는 클래스.

▼ VCL의 기본 클래스(모든 VCL 클래스가 상속받는 클래스)



반응형

About

by 쑤기c

반응형