function ParseDomain(url:String):String; var domain,host: String; len,pos1 : integer; IdURI : TIdURI; begin pos1 := Pos('http://',url); if pos1 = 0 then url := 'http://' + url;
1. 설명 ㄱ. com으로 등록해서 CreateObject를 함수 이용해서 vb dll의 특정 함수를 호출한다. ㄷ. Import Type Library를 이용해서 컴포넌트로 등록하고 사용할 수 있다.
2. 소스 -Decrypt라는 함수를 호출하는 예- Variant userObj; userObj = Variant::CreateObject("Crypto.Crypto2"); Variant name = userObj.OleFunction("Decrypt","O/bNd{Me?");
메일 서버를 설정하다 보면은 에러 코드를 확인해야할 필요가 있다. 에러 코드를 구글에서 매번 찾기 귀찮아서 주요 에러 코드 정리 한 것이 있기에 남겨둔다.
Q. 메일 발송시 리턴메일 메시지에 대해서 설명해주세요. A. ▶ SERVER REPLY: 501 Denied domain name ; 도메인주소를 잘못 입력 or 수신측에서 도메인을 수신거부한 경우
▶ 421 Server too busy. ; 수신측 서버의 응답지연. 수신서버의 트래픽등으로 메일을 수신 받지 못하는 상황에서 발송자에게 리턴 메일을 보냄.
▶ 421-Microsoft ESMTP MAIL Service, Version: 5.0.2195.5600 ready at Service not available, closing transmission channel ; MS사의 smtp 서버의 장애로 인해 메일을 수신받지 못하는 상황에서 리턴된 메시지.
▶ 421 4.3.2 Your IP(218.236.206.104) is filtered and this connection will be closed. You must register your IP to spammaster@hanafos.com By SpaceLee, the Lord of mail server. ; 우리쪽 (mail.hanafos.com) 서버로 메일을 발송시 필터링 조건에 위배되어 스패머로 인식되고 필터링 되어 발신자에게 리턴되는 메시지.
▶ 441 4.4.1 No answer from host ; 수신측 서버의 응답이 없어서 리턴된 메시지.
▶ 553 5.0.0 We do not accept mail from spammers - If you have questions,please email admin@www.narun.net. ; 발신자의 메일 계정이 스패머로 수신서버에서 등록이 되어 리턴된 메시지.
▶ 553 5.0.0 Your message may contain the Win32.Klez worm!!- If you have questions,please email postmaster@ecweb-1.blueweb.co.kr. ; 발신자의 메일에서 Win32.Klez 라는 웜바이러스가 발견되어 리턴된 메시지.
▶ 553 sorry, your envelope sender is enlisted as spammer. ; 발신자의 메일 주소가 수신서버상의 스패머 리스트에 등록 되어 리턴된 메시지.
▶ 553-This target address is not our MX service ; 수신자의 주소가 수신서버에서 서비스 안하는 도메인일 경우 리턴된 메시지.
▶ 554 5.3.2 Rejected by mailbox host. REPLY:(250 <ahnmin@thinknet.or.kr>... Sender ok) ; 수신자가 발송자의 메일 계정에 대해 수신 거부를 하여 리턴된 메시지 .
▶ 554 5.3.0 Mail have traversed Too many hops. Reject it. ; 발신자가 메일을 보낼 때 동보메일로 수신자의 메일 계정을 수신서버의 제한량 이상 넣어 보내어 리턴된 메시지.
▶ 554 5.3.2 Rejected by mailbox host. REPLY:(550 5.1.1 unknown or illegal alias: kgng_h_w@samsung.com) ; 수신자가 발송자의 메일 계정에 대해 수신거부를 설정하여 리턴된 메시지.
▶ 554 delivery error: dd Sorry, your message to bk6218@yahoo.co.kr cannot be delivered. This account is over quota. - mta111.mail.yahoo.co.kr ; 수신자의 메일함 용량 초과로 인해 리턴된 메시지.
var data : String; someunicode : array of widechar; len : integer; begin data := '안녕하세요.'; len := StrLen(PChar(data)); MultiByteToWideChar(CP_ACP, 0, PChar(data), -1, @someunicode[0], len); end;
2. String <-> WIdeString 개념 : 델파이에서는 자동 형변환 되므로 신경 쓸 필요 없음
About 다이얼로그 만드는 방법 1. GetFileVersionInfoSize 이용해서 버젼 정보 크기 얻는다.
2. 버젼 정보를 저장할 메모리를 할당한 후에 버젼 정보를 얻는다. MemHandle = GlobalAlloc(GMEM_MOVEABLE, VerSize); MemPtr = GlobalLock(MemHandle); GetFileVersionInfo(Path.c_str(), VerInfo, VerSize, MemPtr);
3. VerQueryValue(MemPtr, "\VarFileInfo\Translation", &BufferPtr,&BufferLength); 함수를 이용해서 각 정보를 얻는다.
-실제 소스- 코드: struct TransArray { WORD LanguageID, CharacterSet; };
// Get the product name and version from the // applications version information. String Path(Application->ExeName); //프로그램 패스 얻어오기 VerSize = GetFileVersionInfoSize(Path.c_str(), &VerInfo);//버젼 정보 크기 얻어오기 if (VerSize > 0) { MemHandle = GlobalAlloc(GMEM_MOVEABLE, VerSize); MemPtr = GlobalLock(MemHandle); GetFileVersionInfo(Path.c_str(), VerInfo, VerSize, MemPtr); VerQueryValue(MemPtr, "\VarFileInfo\Translation", &BufferPtr, &BufferLength); Array = (TransArray *)BufferPtr;
// Get the product name. wsprintf(QueryBlock, "\StringFileInfo\%04x%04x\ProductName", Array[0].LanguageID, Array[0].CharacterSet); VerQueryValue(MemPtr, QueryBlock, &BufferPtr, &BufferLength); // Set the product name caption. ProductName->Caption = (char *)BufferPtr;
// Get the product version. wsprintf(QueryBlock, "\StringFileInfo\%04x%04x\ProductVersion", Array[0].LanguageID, Array[0].CharacterSet); VerQueryValue(MemPtr, QueryBlock, &BufferPtr, &BufferLength); // Set the version caption. Version->Caption = (char *)BufferPtr;