본문 바로가기

삽질인생/delphi40

[Delphi] 문자열의 너비 구하기 uses Graphics; Canvas.TextWidth(str); ex) if Canvas.TextWidth(Cells[5, J]) > 220 then RowHeights[J] := 16 * ((Canvas.TextWidth(Cells[5, J]) div 220) + 1); 2012. 1. 11.
[Delphi] Socket Error 10004 The operation is canceled. 10013 The requested address is a broadcast address, but flag is not set. 10014 Invalid argument. 10022 Socket not bound, invalid address or listen is not invoked prior to accept. 10024 No more file descriptors are available, accept queue is empty. 10035 Socket is non-blocking and the specified operation will block. 10036 A blocking Winsock operation is in progres.. 2011. 8. 31.
[Delphi] 델파이 예외 처리 클래스 EAbort 메시지 상자를 출력하지 않고 현재의 코드 블록을 취소할때 발생 EOutOfMemory 애플리케이션을 실행하기 위한 메모리 부족시 발생 EAccessViolation 메모리가 할당되지 않은 상황에서 연산을 하거나 메모리 할당 후 해제하지 않고 다시 할당할때 발생 EstackOverflow 현재의 스레드 수행이 더이상 메모리에 할당될 수 없을 경우 ElnOutError 파일 입출력시에 에러가 나는 경우 ElntError 정수 연산시 발생하는 에러 EDeivByZero 정수를 0으로 나누었을 때 발생 ERangeError 정수형의 범위를 벗어나는 값이 할당 됐을 경우 ElnvalidPointer 부적절한 포인터 연산이 수행됐을 경우 ElnvalidCast as연산자를 이용하여 부적절한 형변환이 발.. 2011. 8. 3.
[Delphi] 파일 확장자 알아내기 function GetExt(FileName: string): string; var TempArray: TStringList; begin Result := ''; TempArray := TStringList.Create; ExtractStrings(['.'], [' '], PChar(FileName), TempArray); if Pos('.', FileName) 0 then Result := TempArray.Strings[TempArray.Count - 1]; TempArray.Clear; TempArray.Free; end; 2011. 7. 22.
[Delphi] ListBox 내용을 클립보드에 복사하기 uses절에 Clipbrd; 추가하고 ClipBoard.SetTextBuf( PChar(복사 할 내용) ); ex) ClipBoard.SetTextBuf( PChar( Listbox.Items.Strings[Listbox.ItemIndex] ) ); ClipBoard.SetTextBuf( PChar( Listbox.Items.Text ) ); 2011. 7. 15.
[Delphi] 델파이에서 파일쓰기 var F: TextFile; FileName: string;begin FileName := '파일명'; try try AssignFile(F, FileName); // 파일이 없으면 파일을 생성 if FileExists(FileName) then Append(F) // 기존 내용에 추가하기 else Rewrite(F); // 기존 내용을 덮어쓰기 Writeln(F, '작성 할 내용'); except on E: Exception do ; end; finally CloseFile(F); end; end; 2011. 6. 15.
[Delphi] 최상위 윈도우가 전체화면인지 확인하기 function IsMaxWindow: boolean; var Hnd: HWND; Rect: TRect; begin Result := False; Hnd := GetForegroundWindow(); // 현재 작업중인 윈도우를 알아내는 함수 GetWindowRect(Hnd, Rect); if (Rect.Left Rect.Top) then exit; if (Rect.Right = Screen.Width) and (Rect.Bottom = Screen.Height) then Result := True; // 전체화면 end; 2011. 5. 16.
[Delphi] 폼 드래그해서 이동하기 MouseDown 이벤트에서 ReleaseCapture; SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); 2011. 5. 16.
[Delphi] 하위 폴더까지 한번에 생성하기 uses SysUtils; function ForceDirectories(Dir: string): Boolean; 이런 좋은 함수를 이제야 알다니.. 2011. 5. 16.
[Delphi] 웹페이지 로딩 완료 체크하기 브라우저 컴포넌트의 DocumentComplete 이벤트에서 확인 가능함 !! procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); var CurWebrowser: IWebBrowser; TopWebBrowser: IWebBrowser; Document: OleVariant; WindowName: string; begin CurWebrowser := pDisp as IWebBrowser; TopWebBrowser := (Sender as TWebBrowser).DefaultInterface; if CurWebrowser = TopWebBrowser then ShowM.. 2011. 4. 7.
[Delphi] 전화번호 형식으로 바꾸기 function TelNoAutoMata(vTelNo: string): string; var tTelNo: string; FLocal, FSeoul: Boolean; begin tTelNo := StringReplace(vTelNo, '-', '', [rfReplaceAll, rfIgnoreCase]); if (Length(tTelNo) 12) then begin // Edit MaxLength : 13 result := copy(vTelNo, 1, 13); exit; end; FLocal := False; FSeoul := False; if tTelNo[1] = '0' then FLocal := True; if (FLocal) and (tTelNo[2] = '2') then FSeoul := True;.. 2011. 4. 5.
[Delphi] 문자 사이에서 숫자 추출 / 숫자 사이에서 문자 추출 { 문자 사이에서 숫자 추출하기 } function ExtractInt(AString: string): string; var I: Integer; TempString: string; begin TempString := ''; AString := Trim(AString); if AString '' then for I := 1 to Length(AString) do if (AString[I] in ['0'..'9']) then TempString := TempString + AString[I]; Result := Trim(TempString); end; { 숫자 사이에서 문자 추출하기 } function ExtractString(AString: string): string; var I: Integer; Te.. 2011. 4. 5.
[Delphi] 바탕화면 강제 새로고침 procedure UpdateDesktop; var hDesktop: HWND; begin hDesktop := FindWindowEx(FindWindowEx (FindWindow('Progman', 'Program Manager'), 0, 'SHELLDLL_DefView', nil), 0, 'SysListView32', nil); PostMessage(hDesktop, WM_KEYDOWN, VK_F5, 0); PostMessage(hDesktop, WM_KEYUP, VK_F5, 1 shl 31); end; 단점)) 새로고침 되면서 깜빡임!! 2011. 4. 5.
[Delphi] 문자수, 바이트수 문자수 ByteToCharLen(str, Length(str)) 바이트수 Length(str) 2011. 4. 5.
[Delphi] URL에서 파일이름 추출하기 ExtractFileName(StringReplace(url, '/', '\', [rfReplaceAll])); 2011. 4. 5.
[Delphi] uJSON 라이브러리 ex) JSONObject.getJSONObject('test').getJSONArray('list').getJSONObject(0).keys.Strings[0] JSONObject.getJSONObject('test').getJSONArray('list').getJSONObject(I).get('name').toString =========================================================================================== procedure TForm1.Test; var JSONObject: TJSONObject; begin JSONObject := TJSONObject.create('json데이타내용'); for i := 0 to JSON.. 2011. 4. 5.
[Delphi] 파일 다운로드 - TFileStream var dStream: TFileStream; begin dStream := TFileStream.Create('파일위치및이름', fmCreate or fmShareExclusive); try try IdHTTP.Get(URL_DOWN, dStream); // 설치파일 다운 except on E: EIdException do ; on E: Exception do ; end; finally dStream.Free; end; end; 2011. 4. 5.
[Delphi] TStringStream을 TStringList에 담기 var StringStream: TStringStream; StringList: TStringList; begin StringList:= TStringList.Create; StringStream := TStringStream.Create(''); StringStream.Position := 0; // Reset to the beginning of the stream IdHTTP.Get('주소', StringStream); StringList.Text := StringStream.DataString; end; 2011. 4. 5.
[Delphi] 폼에 에니메이션 효과주기 AnimateWindow(handle, 1000, AW_HOR_POSITIVE); // 왼쪽->오른쪽 AnimateWindow(handle, 1000, AW_HOR_NEGATIVE); // 오른쪽->왼쪽 AnimateWindow(handle, 1000, AW_VER_POSITIVE); // 위->아래 AnimateWindow(handle, 1000, AW_VER_NEGATIVE); // 아래->위 AnimateWindow(handle, 1000, AW_CENTER); // 내부적으로 축소 혹은 외부적으로 확장 AnimateWindow(handle, 1000, AW_HIDE); // 윈도우를 숨기는 효과 AnimateWindow(handle, 1000, AW_ACTIVATE); // 윈도우 활성화시키는 효.. 2011. 4. 1.
[Delphi] 작업표시줄을 제외한 작업영역 구하기 오른쪽 하단에 팝업처럼 띄우기 var Rect: TRect; begin // 작업표시줄을 제외 한 영역 구하기 SystemParametersInfo(SPI_GETWORKAREA, 0, Pointer(@Rect), 0); Fm_Banner := TFm_Banner.Create(Self); Fm_Banner.Left := Rect.Right - Fm_Banner.Width; Fm_Banner.Top := Rect.Bottom - Fm_Banner.Height; end; 2011. 4. 1.